Diff of the two buildlogs: -- --- b1/build.log 2024-01-06 14:02:41.557308914 +0000 +++ b2/build.log 2024-01-06 14:26:10.025082178 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sat Jan 6 01:18:18 -12 2024 -I: pbuilder-time-stamp: 1704547098 +I: Current time: Sun Jan 7 04:02:58 +14 2024 +I: pbuilder-time-stamp: 1704549778 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bookworm-reproducible-base.tgz] I: copying local configuration @@ -28,49 +28,81 @@ dpkg-source: info: applying py3.11_fix_unit_tests.patch I: using fakeroot in build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/15078/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2581/tmp/hooks/D01_modify_environment starting +debug: Running on virt32c. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Jan 6 14:03 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/2581/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2581/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='armhf' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 ' - DISTRIBUTION='bookworm' - HOME='/root' - HOST_ARCH='armhf' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="15" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf") + BASH_VERSION='5.2.15(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=armhf + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=4 ' + DIRSTACK=() + DISTRIBUTION=bookworm + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='f0a242019440488784fb6598ede60947' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='15078' - PS1='# ' - PS2='> ' + INVOCATION_ID=5d05638f5e82495eb131c3411263f162 + LANG=C + LANGUAGE=it_CH:it + LC_ALL=C + MACHTYPE=arm-unknown-linux-gnueabihf + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnueabihf + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=2581 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.aem6cFeL/pbuilderrc_ff2z --distribution bookworm --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.aem6cFeL/b1 --logfile b1/build.log ironic_21.1.0-3.dsc' - SUDO_GID='113' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://10.0.0.15:3142/' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.aem6cFeL/pbuilderrc_WuSE --distribution bookworm --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.aem6cFeL/b2 --logfile b2/build.log ironic_21.1.0-3.dsc' + SUDO_GID=113 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://10.0.0.15:3142/ I: uname -a - Linux virt64c 6.1.0-17-arm64 #1 SMP Debian 6.1.69-1 (2023-12-30) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-17-armmp-lpae #1 SMP Debian 6.1.69-1 (2023-12-30) armv7l GNU/Linux I: ls -l /bin total 4964 -rwxr-xr-x 1 root root 838488 Apr 23 2023 bash @@ -130,7 +162,7 @@ -rwxr-xr-x 1 root root 67600 Sep 20 2022 rmdir -rwxr-xr-x 1 root root 14152 Jul 28 23:46 run-parts -rwxr-xr-x 1 root root 133372 Jan 5 2023 sed - lrwxrwxrwx 1 root root 4 Jan 5 2023 sh -> dash + lrwxrwxrwx 1 root root 9 Jan 6 14:03 sh -> /bin/bash -rwxr-xr-x 1 root root 67584 Sep 20 2022 sleep -rwxr-xr-x 1 root root 67644 Sep 20 2022 stty -rwsr-xr-x 1 root root 50800 Mar 23 2023 su @@ -156,7 +188,7 @@ -rwxr-xr-x 1 root root 2206 Apr 10 2022 zless -rwxr-xr-x 1 root root 1842 Apr 10 2022 zmore -rwxr-xr-x 1 root root 4577 Apr 10 2022 znew -I: user script /srv/workspace/pbuilder/15078/tmp/hooks/D02_print_environment finished +I: user script /srv/workspace/pbuilder/2581/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -834,7 +866,7 @@ Get: 481 http://deb.debian.org/debian bookworm/main armhf python3-swiftclient all 1:4.1.0-2 [76.7 kB] Get: 482 http://deb.debian.org/debian bookworm/main armhf python3-zake all 0.2.2-4 [15.4 kB] Get: 483 http://deb.debian.org/debian bookworm/main armhf python3-tooz all 3.1.0-3 [52.3 kB] -Fetched 139 MB in 5s (26.4 MB/s) +Fetched 139 MB in 5s (29.7 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libargon2-1:armhf. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 17881 files and directories currently installed.) @@ -2371,8 +2403,8 @@ Setting up tzdata (2023c-5+deb12u1) ... Current default time zone: 'Etc/UTC' -Local time is now: Sat Jan 6 13:22:58 UTC 2024. -Universal Time is now: Sat Jan 6 13:22:58 UTC 2024. +Local time is now: Sat Jan 6 14:05:35 UTC 2024. +Universal Time is now: Sat Jan 6 14:05:35 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libdconf1:armhf (0.40.0-4) ... @@ -2833,7 +2865,11 @@ fakeroot is already the newest version (1.31-1.2). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package -I: Running cd /build/reproducible-path/ironic-21.1.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../ironic_21.1.0-3_source.changes +I: user script /srv/workspace/pbuilder/2581/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for bookworm +I: user script /srv/workspace/pbuilder/2581/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ironic-21.1.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../ironic_21.1.0-3_source.changes dpkg-buildpackage: info: source package ironic dpkg-buildpackage: info: source version 1:21.1.0-3 dpkg-buildpackage: info: source distribution unstable @@ -2951,553 +2987,553 @@ creating build creating build/lib creating build/lib/ironic +creating build/lib/ironic/cmd +copying ironic/cmd/singleprocess.py -> build/lib/ironic/cmd +copying ironic/cmd/api.py -> build/lib/ironic/cmd +copying ironic/cmd/status.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/__init__.py -> build/lib/ironic/cmd +creating build/lib/ironic/drivers +creating build/lib/ironic/drivers/modules +creating build/lib/ironic/drivers/modules/irmc +copying ironic/drivers/modules/irmc/inspect.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/raid.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/management.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/__init__.py -> build/lib/ironic/drivers/modules/irmc +copying ironic/drivers/modules/irmc/power.py -> build/lib/ironic/drivers/modules/irmc creating build/lib/ironic/tests creating build/lib/ironic/tests/unit -creating 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_irmc.py -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/test_xclarity.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/third_party_driver_mock_specs.py -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/test_ibmc.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_snmp.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_ilo.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/third_party_driver_mocks.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/__init__.py -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/test_base.py -> build/lib/ironic/tests/unit/drivers -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/base.py -> build/lib/ironic/dhcp -copying ironic/dhcp/dnsmasq.py -> build/lib/ironic/dhcp -copying ironic/dhcp/__init__.py -> build/lib/ironic/dhcp +copying ironic/tests/unit/policy_fixture.py -> build/lib/ironic/tests/unit +copying ironic/tests/unit/raid_constants.py -> build/lib/ironic/tests/unit +copying ironic/tests/unit/test_base.py -> build/lib/ironic/tests/unit +copying ironic/tests/unit/stubs.py -> build/lib/ironic/tests/unit +copying ironic/tests/unit/__init__.py -> build/lib/ironic/tests/unit +copying ironic/__init__.py -> build/lib/ironic +copying ironic/version.py -> build/lib/ironic +creating build/lib/ironic/db +creating 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 +copying ironic/db/sqlalchemy/models.py -> build/lib/ironic/db/sqlalchemy +copying ironic/db/sqlalchemy/migration.py -> build/lib/ironic/db/sqlalchemy creating 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_chassis.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_conductor.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_ports.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_bios_settings.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_nodes.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/test_chassis.py -> build/lib/ironic/tests/unit/db +copying ironic/tests/unit/db/utils.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_deploy_templates.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/__init__.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/test_ports.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_node_history.py -> build/lib/ironic/tests/unit/db -copying ironic/tests/unit/db/__init__.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_node_tags.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_portgroups.py -> build/lib/ironic/tests/unit/db -copying ironic/tests/unit/db/utils.py -> build/lib/ironic/tests/unit/db +creating build/lib/ironic/tests/unit/drivers creating build/lib/ironic/tests/unit/drivers/modules +creating 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/test_management.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 +creating build/lib/ironic/api +copying ironic/api/app.py -> build/lib/ironic/api +copying ironic/api/method.py -> build/lib/ironic/api +copying ironic/api/config.py -> build/lib/ironic/api +copying ironic/api/wsgi.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/__init__.py -> build/lib/ironic/api +creating build/lib/ironic/api/middleware +copying ironic/api/middleware/auth_public_routes.py -> build/lib/ironic/api/middleware +copying ironic/api/middleware/json_ext.py -> build/lib/ironic/api/middleware +copying ironic/api/middleware/parsable_error.py -> build/lib/ironic/api/middleware +copying ironic/api/middleware/__init__.py -> build/lib/ironic/api/middleware +creating build/lib/ironic/objects +copying ironic/objects/volume_connector.py -> build/lib/ironic/objects +copying ironic/objects/indirection.py -> build/lib/ironic/objects +copying ironic/objects/base.py -> build/lib/ironic/objects +copying ironic/objects/deployment.py -> build/lib/ironic/objects +copying ironic/objects/bios.py -> build/lib/ironic/objects +copying ironic/objects/chassis.py -> build/lib/ironic/objects +copying ironic/objects/conductor.py -> build/lib/ironic/objects +copying ironic/objects/notification.py -> build/lib/ironic/objects +copying ironic/objects/trait.py -> build/lib/ironic/objects +copying ironic/objects/port.py -> build/lib/ironic/objects +copying ironic/objects/__init__.py -> build/lib/ironic/objects +copying ironic/objects/fields.py -> build/lib/ironic/objects +copying ironic/objects/deploy_template.py -> build/lib/ironic/objects +copying ironic/objects/node.py -> build/lib/ironic/objects +copying ironic/objects/volume_target.py -> build/lib/ironic/objects +copying ironic/objects/node_history.py -> build/lib/ironic/objects +copying ironic/objects/allocation.py -> build/lib/ironic/objects +copying ironic/objects/portgroup.py -> build/lib/ironic/objects +creating build/lib/ironic/conductor +copying ironic/conductor/verify.py -> build/lib/ironic/conductor +copying ironic/conductor/deployments.py -> build/lib/ironic/conductor +copying ironic/conductor/manager.py -> build/lib/ironic/conductor +copying ironic/conductor/utils.py -> build/lib/ironic/conductor +copying ironic/conductor/rpcapi.py -> build/lib/ironic/conductor +copying ironic/conductor/steps.py -> build/lib/ironic/conductor +copying ironic/conductor/cleaning.py -> build/lib/ironic/conductor +copying ironic/conductor/notification_utils.py -> build/lib/ironic/conductor +copying ironic/conductor/base_manager.py -> build/lib/ironic/conductor +copying ironic/conductor/task_manager.py -> build/lib/ironic/conductor +copying ironic/conductor/__init__.py -> build/lib/ironic/conductor +copying ironic/conductor/allocations.py -> build/lib/ironic/conductor +copying ironic/conductor/periodics.py -> build/lib/ironic/conductor +creating 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_node_history.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_objects.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/test_chassis.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/utils.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_port.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_fields.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/__init__.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_volume_target.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_notification.py -> build/lib/ironic/tests/unit/objects +copying ironic/drivers/intel_ipmi.py -> build/lib/ironic/drivers +copying ironic/drivers/irmc.py -> build/lib/ironic/drivers +copying ironic/drivers/base.py -> build/lib/ironic/drivers +copying ironic/drivers/xclarity.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/ipmi.py -> build/lib/ironic/drivers +copying ironic/drivers/utils.py -> build/lib/ironic/drivers +copying ironic/drivers/drac.py -> build/lib/ironic/drivers +copying ironic/drivers/fake_hardware.py -> build/lib/ironic/drivers +copying ironic/drivers/redfish.py -> build/lib/ironic/drivers +copying ironic/drivers/snmp.py -> build/lib/ironic/drivers +copying ironic/drivers/__init__.py -> build/lib/ironic/drivers +copying ironic/drivers/ibmc.py -> build/lib/ironic/drivers +copying ironic/drivers/ilo.py -> build/lib/ironic/drivers +creating 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_types.py -> build/lib/ironic/tests/unit/db/sqlalchemy +copying ironic/tests/unit/db/sqlalchemy/__init__.py -> build/lib/ironic/tests/unit/db/sqlalchemy +copying ironic/tests/unit/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/drivers/modules/test_snmp.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_inspector.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_inspect_utils.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_noop.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/test_image_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_image_cache.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_console_utils.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/__init__.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_ipmitool.py -> build/lib/ironic/tests/unit/drivers/modules +copying ironic/tests/unit/drivers/modules/test_ipxe.py -> build/lib/ironic/tests/unit/drivers/modules +creating build/lib/ironic/drivers/modules/ilo +copying ironic/drivers/modules/ilo/inspect.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/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/bios.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/management.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/__init__.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/firmware_processor.py -> build/lib/ironic/drivers/modules/ilo 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_boot.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_common.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_bios.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_bios.py -> 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_management.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 -creating build/lib/ironic/drivers/modules -creating build/lib/ironic/drivers/modules/drac -copying ironic/drivers/modules/drac/job.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/raid.py -> build/lib/ironic/drivers/modules/drac -copying ironic/drivers/modules/drac/common.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/bios.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/__init__.py -> 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/inspect.py -> build/lib/ironic/drivers/modules/drac -copying ironic/drivers/modules/drac/utils.py -> build/lib/ironic/drivers/modules/drac +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_power.py -> build/lib/ironic/tests/unit/drivers/modules/irmc creating 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_boot.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_management.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_inspect.py -> 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_bios.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_raid.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_utils.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/conductor -copying ironic/conductor/periodics.py -> build/lib/ironic/conductor -copying ironic/conductor/cleaning.py -> build/lib/ironic/conductor -copying ironic/conductor/rpcapi.py -> build/lib/ironic/conductor -copying ironic/conductor/manager.py -> build/lib/ironic/conductor -copying ironic/conductor/deployments.py -> build/lib/ironic/conductor -copying ironic/conductor/notification_utils.py -> build/lib/ironic/conductor -copying ironic/conductor/steps.py -> build/lib/ironic/conductor -copying ironic/conductor/allocations.py -> build/lib/ironic/conductor -copying ironic/conductor/task_manager.py -> build/lib/ironic/conductor -copying ironic/conductor/verify.py -> build/lib/ironic/conductor -copying ironic/conductor/base_manager.py -> build/lib/ironic/conductor -copying ironic/conductor/__init__.py -> build/lib/ironic/conductor -copying ironic/conductor/utils.py -> build/lib/ironic/conductor -creating 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/test_external.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 -copying ironic/drivers/modules/pxe.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/fake.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/console_utils.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/pxe_base.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/noop_mgmt.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/deploy_utils.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/agent_client.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/ramdisk.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/ipxe.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/agent_base.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/boot_mode_utils.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/image_cache.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/agent.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/inspector.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/agent_power.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/__init__.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/noop.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/snmp.py -> build/lib/ironic/drivers/modules -copying ironic/drivers/modules/image_utils.py -> build/lib/ironic/drivers/modules +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_power.py -> build/lib/ironic/tests/unit/drivers/modules/redfish +creating 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 +copying ironic/api/controllers/root.py -> build/lib/ironic/api/controllers +copying ironic/api/controllers/version.py -> build/lib/ironic/api/controllers +copying ironic/api/controllers/link.py -> build/lib/ironic/api/controllers +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/drivers/modules/redfish +copying ironic/drivers/modules/redfish/inspect.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/raid.py -> build/lib/ironic/drivers/modules/redfish copying ironic/drivers/modules/redfish/vendor.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/power.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/bios.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/management.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/__init__.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/utils.py -> build/lib/ironic/drivers/modules/redfish +copying ironic/drivers/modules/redfish/power.py -> build/lib/ironic/drivers/modules/redfish +creating build/lib/ironic/api/controllers/v1 +copying ironic/api/controllers/v1/driver.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/event.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/bios.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/ramdisk.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/notification_utils.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/versions.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/__init__.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/deploy_template.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/volume_target.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/portgroup.py -> build/lib/ironic/api/controllers/v1 +creating 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/neutron.py -> build/lib/ironic/dhcp +copying ironic/dhcp/__init__.py -> build/lib/ironic/dhcp +copying ironic/dhcp/none.py -> build/lib/ironic/dhcp +copying ironic/db/api.py -> build/lib/ironic/db +copying ironic/db/__init__.py -> build/lib/ironic/db +copying ironic/db/migration.py -> build/lib/ironic/db +copying ironic/tests/base.py -> build/lib/ironic/tests +copying ironic/tests/__init__.py -> build/lib/ironic/tests +creating 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_root.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/test_hooks.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/utils.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_functions.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/__init__.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_acl.py -> build/lib/ironic/tests/unit/api +copying ironic/tests/unit/api/test_healthcheck.py -> build/lib/ironic/tests/unit/api +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/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/raid.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/utils.py -> build/lib/ironic/drivers/modules/drac +copying ironic/drivers/modules/drac/job.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/common.py -> build/lib/ironic/drivers/modules/drac +copying ironic/drivers/modules/drac/__init__.py -> build/lib/ironic/drivers/modules/drac +copying ironic/drivers/modules/drac/power.py -> build/lib/ironic/drivers/modules/drac +creating build/lib/ironic/drivers/modules/ansible +copying ironic/drivers/modules/ansible/__init__.py -> build/lib/ironic/drivers/modules/ansible +copying ironic/drivers/modules/ansible/deploy.py -> build/lib/ironic/drivers/modules/ansible +creating 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_status.py -> build/lib/ironic/tests/unit/cmd +copying ironic/tests/unit/cmd/__init__.py -> build/lib/ironic/tests/unit/cmd +copying ironic/tests/unit/cmd/test_conductor.py -> build/lib/ironic/tests/unit/cmd +creating build/lib/ironic/tests/unit/conf +copying ironic/tests/unit/conf/test_auth.py -> build/lib/ironic/tests/unit/conf +copying ironic/tests/unit/conf/__init__.py -> build/lib/ironic/tests/unit/conf +creating build/lib/ironic/tests/functional +copying ironic/tests/functional/__init__.py -> build/lib/ironic/tests/functional +creating build/lib/ironic/drivers/modules/network +copying ironic/drivers/modules/network/flat.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/noop.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/hacking +copying ironic/hacking/checks.py -> build/lib/ironic/hacking +copying ironic/hacking/__init__.py -> build/lib/ironic/hacking +creating build/lib/ironic/tests/unit/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_inspect.py -> 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_bios.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_management.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 +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_boot.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_console.py -> build/lib/ironic/tests/unit/drivers/modules/ilo +creating build/lib/ironic/conf +copying ironic/conf/dnsmasq.py -> build/lib/ironic/conf +copying ironic/conf/opts.py -> build/lib/ironic/conf +copying ironic/conf/metrics.py -> build/lib/ironic/conf +copying ironic/conf/metrics_statsd.py -> build/lib/ironic/conf +copying ironic/conf/audit.py -> build/lib/ironic/conf +copying ironic/conf/ansible.py -> build/lib/ironic/conf +copying ironic/conf/molds.py -> build/lib/ironic/conf +copying ironic/conf/glance.py -> build/lib/ironic/conf +copying ironic/conf/api.py -> build/lib/ironic/conf +copying ironic/conf/irmc.py -> build/lib/ironic/conf +copying ironic/conf/xclarity.py -> build/lib/ironic/conf +copying ironic/conf/dhcp.py -> build/lib/ironic/conf +copying ironic/conf/console.py -> build/lib/ironic/conf +copying ironic/conf/ipmi.py -> build/lib/ironic/conf +copying ironic/conf/neutron.py -> build/lib/ironic/conf +copying ironic/conf/drac.py -> build/lib/ironic/conf +copying ironic/conf/anaconda.py -> build/lib/ironic/conf +copying ironic/conf/redfish.py -> build/lib/ironic/conf +copying ironic/conf/inspector.py -> build/lib/ironic/conf +copying ironic/conf/conductor.py -> build/lib/ironic/conf +copying ironic/conf/healthcheck.py -> build/lib/ironic/conf +copying ironic/conf/database.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/pxe.py -> build/lib/ironic/conf +copying ironic/conf/nova.py -> build/lib/ironic/conf +copying ironic/conf/__init__.py -> build/lib/ironic/conf +copying ironic/conf/ibmc.py -> build/lib/ironic/conf +copying ironic/conf/default.py -> build/lib/ironic/conf +copying ironic/conf/auth.py -> build/lib/ironic/conf +copying ironic/conf/deploy.py -> build/lib/ironic/conf +copying ironic/conf/swift.py -> build/lib/ironic/conf +copying ironic/conf/cinder.py -> build/lib/ironic/conf +copying ironic/conf/agent.py -> build/lib/ironic/conf +copying ironic/conf/ilo.py -> build/lib/ironic/conf creating build/lib/ironic/common 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/__init__.py -> build/lib/ironic/common/glance_service copying ironic/common/glance_service/image_service.py -> build/lib/ironic/common/glance_service creating build/lib/ironic/drivers/modules/storage -copying ironic/drivers/modules/storage/cinder.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/__init__.py -> build/lib/ironic/drivers/modules/storage copying ironic/drivers/modules/storage/noop.py -> build/lib/ironic/drivers/modules/storage -creating build/lib/ironic/tests/unit/api +copying ironic/drivers/modules/storage/__init__.py -> build/lib/ironic/drivers/modules/storage +copying ironic/drivers/modules/storage/cinder.py -> build/lib/ironic/drivers/modules/storage +creating 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/test_kickstart_utils.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_fsm.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_rpc_service.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_neutron.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_wsgi_service.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_image_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/__init__.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_glance_service.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_nova.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_pxe_utils.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_keystone.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_driver_factory.py -> build/lib/ironic/tests/unit/common +copying ironic/tests/unit/common/test_policy.py -> build/lib/ironic/tests/unit/common +creating 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_base_manager.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_cleaning.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_rpcapi.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/__init__.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/test_allocations.py -> 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_steps.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 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_utils.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_portgroup.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_volume_connector.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_event.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_collection.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/test_event.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_node.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_collection.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_portgroup.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_root.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_port.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_ramdisk.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_utils.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 +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_conductor.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_volume_target.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 -creating 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/test_task_manager.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_manager.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_steps.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/test_periodics.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_notification_utils.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_rpcapi.py -> build/lib/ironic/tests/unit/conductor -copying ironic/tests/unit/conductor/__init__.py -> build/lib/ironic/tests/unit/conductor -copying ironic/tests/unit/conductor/test_verify.py -> build/lib/ironic/tests/unit/conductor +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/__init__.py -> build/lib/ironic/tests/unit/dhcp +copying ironic/tests/unit/dhcp/test_dnsmasq.py -> build/lib/ironic/tests/unit/dhcp +creating build/lib/ironic/tests/unit/drivers/modules/ibmc +copying ironic/tests/unit/drivers/modules/ibmc/base.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc +copying ironic/tests/unit/drivers/modules/ibmc/test_vendor.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc +copying ironic/tests/unit/drivers/modules/ibmc/test_raid.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc +copying ironic/tests/unit/drivers/modules/ibmc/test_management.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc +copying ironic/tests/unit/drivers/modules/ibmc/test_utils.py -> 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/ibmc/test_power.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc +copying ironic/drivers/modules/inspect_utils.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/fake.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/agent_client.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/pxe_base.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/ipmitool.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/ipxe.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/boot_mode_utils.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/image_utils.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/noop_mgmt.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/ramdisk.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/inspector.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/console_utils.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/agent_base.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/snmp.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/noop.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/pxe.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/agent_power.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/deploy_utils.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/__init__.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/image_cache.py -> build/lib/ironic/drivers/modules +copying ironic/drivers/modules/agent.py -> build/lib/ironic/drivers/modules +copying ironic/tests/unit/drivers/test_fake_hardware.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_snmp.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_ibmc.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_xclarity.py -> build/lib/ironic/tests/unit/drivers +copying ironic/tests/unit/drivers/third_party_driver_mocks.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_base.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/__init__.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_drac.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/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 +copying ironic/common/images.py -> build/lib/ironic/common +copying ironic/common/pxe_utils.py -> build/lib/ironic/common +copying ironic/common/service.py -> build/lib/ironic/common +copying ironic/common/boot_devices.py -> build/lib/ironic/common +copying ironic/common/wsgi_service.py -> build/lib/ironic/common +copying ironic/common/states.py -> build/lib/ironic/common copying ironic/common/context.py -> build/lib/ironic/common -copying ironic/common/policy.py -> build/lib/ironic/common -copying ironic/common/network.py -> build/lib/ironic/common -copying ironic/common/raid.py -> build/lib/ironic/common -copying ironic/common/swift.py -> build/lib/ironic/common -copying ironic/common/driver_factory.py -> build/lib/ironic/common -copying ironic/common/fsm.py -> build/lib/ironic/common +copying ironic/common/i18n.py -> build/lib/ironic/common copying ironic/common/molds.py -> build/lib/ironic/common -copying ironic/common/indicator_states.py -> build/lib/ironic/common -copying ironic/common/boot_devices.py -> build/lib/ironic/common -copying ironic/common/components.py -> build/lib/ironic/common +copying ironic/common/fsm.py -> build/lib/ironic/common +copying ironic/common/raid.py -> build/lib/ironic/common +copying ironic/common/dhcp_factory.py -> build/lib/ironic/common copying ironic/common/config.py -> build/lib/ironic/common -copying ironic/common/keystone.py -> build/lib/ironic/common -copying ironic/common/service.py -> build/lib/ironic/common +copying ironic/common/args.py -> build/lib/ironic/common +copying ironic/common/network.py -> build/lib/ironic/common copying ironic/common/neutron.py -> build/lib/ironic/common -copying ironic/common/images.py -> 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/kickstart_utils.py -> build/lib/ironic/common -copying ironic/common/hash_ring.py -> build/lib/ironic/common -copying ironic/common/pxe_utils.py -> build/lib/ironic/common -copying ironic/common/release_mappings.py -> build/lib/ironic/common -copying ironic/common/cinder.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/nova.py -> build/lib/ironic/common -copying ironic/common/boot_modes.py -> build/lib/ironic/common -copying ironic/common/rpc.py -> build/lib/ironic/common -copying ironic/common/i18n.py -> build/lib/ironic/common -copying ironic/common/args.py -> build/lib/ironic/common -copying ironic/common/rpc_service.py -> build/lib/ironic/common +copying ironic/common/policy.py -> build/lib/ironic/common copying ironic/common/__init__.py -> build/lib/ironic/common +copying ironic/common/boot_modes.py -> build/lib/ironic/common copying ironic/common/profiler.py -> build/lib/ironic/common -copying ironic/common/states.py -> build/lib/ironic/common -copying ironic/common/dhcp_factory.py -> build/lib/ironic/common -copying ironic/common/exception.py -> build/lib/ironic/common +copying ironic/common/release_mappings.py -> build/lib/ironic/common +copying ironic/common/rpc_service.py -> build/lib/ironic/common +copying ironic/common/indicator_states.py -> build/lib/ironic/common copying ironic/common/image_service.py -> build/lib/ironic/common -copying ironic/common/utils.py -> build/lib/ironic/common -copying ironic/common/faults.py -> build/lib/ironic/common -copying ironic/__init__.py -> build/lib/ironic -copying ironic/version.py -> build/lib/ironic -creating build/lib/ironic/cmd -copying ironic/cmd/conductor.py -> build/lib/ironic/cmd -copying ironic/cmd/singleprocess.py -> build/lib/ironic/cmd -copying ironic/cmd/dbsync.py -> build/lib/ironic/cmd -copying ironic/cmd/api.py -> build/lib/ironic/cmd -copying ironic/cmd/status.py -> build/lib/ironic/cmd -copying ironic/cmd/__init__.py -> build/lib/ironic/cmd -creating build/lib/ironic/api -creating build/lib/ironic/api/controllers -copying ironic/api/controllers/base.py -> build/lib/ironic/api/controllers -copying ironic/api/controllers/link.py -> build/lib/ironic/api/controllers -copying ironic/api/controllers/root.py -> build/lib/ironic/api/controllers -copying ironic/api/controllers/__init__.py -> build/lib/ironic/api/controllers -copying ironic/api/controllers/version.py -> build/lib/ironic/api/controllers -creating build/lib/ironic/api/controllers/v1 -copying ironic/api/controllers/v1/node.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/volume_connector.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/notification_utils.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/port.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/driver.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/bios.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/volume_target.py -> build/lib/ironic/api/controllers/v1 -copying ironic/api/controllers/v1/__init__.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/deploy_template.py -> build/lib/ironic/api/controllers/v1 -copying ironic/api/controllers/v1/utils.py -> build/lib/ironic/api/controllers/v1 -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/tests/unit/drivers/modules/intel_ipmi -copying ironic/tests/unit/drivers/modules/intel_ipmi/test_management.py -> build/lib/ironic/tests/unit/drivers/modules/intel_ipmi -copying ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py -> build/lib/ironic/tests/unit/drivers/modules/intel_ipmi -copying ironic/tests/unit/drivers/modules/intel_ipmi/base.py -> build/lib/ironic/tests/unit/drivers/modules/intel_ipmi -copying ironic/tests/unit/drivers/modules/intel_ipmi/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/intel_ipmi +copying ironic/common/hash_ring.py -> build/lib/ironic/common +copying ironic/common/keystone.py -> build/lib/ironic/common +copying ironic/common/rpc.py -> build/lib/ironic/common +copying ironic/common/swift.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/driver_factory.py -> build/lib/ironic/common +creating 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/test_flat.py -> 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/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/network +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/tests/unit/drivers/modules/xclarity +copying ironic/tests/unit/drivers/modules/xclarity/test_common.py -> build/lib/ironic/tests/unit/drivers/modules/xclarity +copying ironic/tests/unit/drivers/modules/xclarity/test_management.py -> 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 +copying ironic/tests/unit/drivers/modules/xclarity/test_power.py -> build/lib/ironic/tests/unit/drivers/modules/xclarity creating build/lib/ironic/drivers/modules/ibmc -copying ironic/drivers/modules/ibmc/raid.py -> build/lib/ironic/drivers/modules/ibmc copying ironic/drivers/modules/ibmc/vendor.py -> build/lib/ironic/drivers/modules/ibmc +copying ironic/drivers/modules/ibmc/raid.py -> build/lib/ironic/drivers/modules/ibmc copying ironic/drivers/modules/ibmc/mappings.py -> build/lib/ironic/drivers/modules/ibmc -copying ironic/drivers/modules/ibmc/power.py -> build/lib/ironic/drivers/modules/ibmc +copying ironic/drivers/modules/ibmc/utils.py -> build/lib/ironic/drivers/modules/ibmc copying ironic/drivers/modules/ibmc/management.py -> build/lib/ironic/drivers/modules/ibmc copying ironic/drivers/modules/ibmc/__init__.py -> build/lib/ironic/drivers/modules/ibmc -copying ironic/drivers/modules/ibmc/utils.py -> build/lib/ironic/drivers/modules/ibmc -creating 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_hash_ring.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_raid.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_utils.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_swift.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_network.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_kickstart_utils.py -> 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_images.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_molds.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_glance_service.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_driver_factory.py -> build/lib/ironic/tests/unit/common -copying ironic/tests/unit/common/test_rpc_service.py -> build/lib/ironic/tests/unit/common -copying ironic/tests/unit/common/__init__.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_rpc.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/test_context.py -> build/lib/ironic/tests/unit/common -copying ironic/api/functions.py -> 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/config.py -> build/lib/ironic/api -copying ironic/api/__init__.py -> build/lib/ironic/api -copying ironic/api/app.py -> build/lib/ironic/api -copying ironic/api/hooks.py -> build/lib/ironic/api -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/functional -copying ironic/tests/functional/__init__.py -> build/lib/ironic/tests/functional -creating 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/parsable_error.py -> build/lib/ironic/api/middleware -copying ironic/api/middleware/__init__.py -> build/lib/ironic/api/middleware -creating build/lib/ironic/tests/unit/drivers/modules/ibmc -copying ironic/tests/unit/drivers/modules/ibmc/test_raid.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc -copying ironic/tests/unit/drivers/modules/ibmc/test_power.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc -copying ironic/tests/unit/drivers/modules/ibmc/test_utils.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc -copying ironic/tests/unit/drivers/modules/ibmc/test_management.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc -copying ironic/tests/unit/drivers/modules/ibmc/base.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc -copying ironic/tests/unit/drivers/modules/ibmc/test_vendor.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc -copying ironic/tests/unit/drivers/modules/ibmc/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc -copying ironic/drivers/generic.py -> build/lib/ironic/drivers -copying ironic/drivers/xclarity.py -> build/lib/ironic/drivers -copying ironic/drivers/ilo.py -> build/lib/ironic/drivers -copying ironic/drivers/fake_hardware.py -> build/lib/ironic/drivers -copying ironic/drivers/ibmc.py -> build/lib/ironic/drivers -copying ironic/drivers/drac.py -> build/lib/ironic/drivers -copying ironic/drivers/hardware_type.py -> build/lib/ironic/drivers -copying ironic/drivers/ipmi.py -> build/lib/ironic/drivers -copying ironic/drivers/base.py -> build/lib/ironic/drivers -copying ironic/drivers/redfish.py -> build/lib/ironic/drivers -copying ironic/drivers/__init__.py -> build/lib/ironic/drivers -copying ironic/drivers/intel_ipmi.py -> build/lib/ironic/drivers -copying ironic/drivers/snmp.py -> build/lib/ironic/drivers -copying ironic/drivers/irmc.py -> build/lib/ironic/drivers -copying ironic/drivers/utils.py -> build/lib/ironic/drivers +copying ironic/drivers/modules/ibmc/power.py -> build/lib/ironic/drivers/modules/ibmc +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/__init__.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 +creating build/lib/ironic/drivers/modules/xclarity +copying ironic/drivers/modules/xclarity/management.py -> build/lib/ironic/drivers/modules/xclarity +copying ironic/drivers/modules/xclarity/common.py -> build/lib/ironic/drivers/modules/xclarity +copying ironic/drivers/modules/xclarity/__init__.py -> build/lib/ironic/drivers/modules/xclarity +copying ironic/drivers/modules/xclarity/power.py -> build/lib/ironic/drivers/modules/xclarity creating 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_power.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/test_utils.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_common.py -> build/lib/ironic/tests/unit/drivers/modules/drac -copying ironic/tests/unit/drivers/modules/drac/test_periodic_task.py -> build/lib/ironic/tests/unit/drivers/modules/drac -copying ironic/tests/unit/drivers/modules/drac/test_bios.py -> build/lib/ironic/tests/unit/drivers/modules/drac copying ironic/tests/unit/drivers/modules/drac/test_job.py -> build/lib/ironic/tests/unit/drivers/modules/drac +copying ironic/tests/unit/drivers/modules/drac/test_periodic_task.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/__init__.py -> 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 -creating build/lib/ironic/drivers/modules/xclarity -copying ironic/drivers/modules/xclarity/common.py -> build/lib/ironic/drivers/modules/xclarity -copying ironic/drivers/modules/xclarity/power.py -> build/lib/ironic/drivers/modules/xclarity -copying ironic/drivers/modules/xclarity/management.py -> build/lib/ironic/drivers/modules/xclarity -copying ironic/drivers/modules/xclarity/__init__.py -> build/lib/ironic/drivers/modules/xclarity -creating build/lib/ironic/objects -copying ironic/objects/node.py -> build/lib/ironic/objects -copying ironic/objects/conductor.py -> build/lib/ironic/objects -copying ironic/objects/notification.py -> build/lib/ironic/objects -copying ironic/objects/chassis.py -> build/lib/ironic/objects -copying ironic/objects/volume_connector.py -> build/lib/ironic/objects -copying ironic/objects/indirection.py -> build/lib/ironic/objects -copying ironic/objects/trait.py -> build/lib/ironic/objects -copying ironic/objects/fields.py -> build/lib/ironic/objects -copying ironic/objects/port.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/bios.py -> build/lib/ironic/objects -copying ironic/objects/volume_target.py -> build/lib/ironic/objects -copying ironic/objects/__init__.py -> build/lib/ironic/objects -copying ironic/objects/portgroup.py -> build/lib/ironic/objects -copying ironic/objects/deployment.py -> build/lib/ironic/objects -copying ironic/objects/node_history.py -> build/lib/ironic/objects -copying ironic/objects/deploy_template.py -> build/lib/ironic/objects -copying ironic/tests/base.py -> build/lib/ironic/tests -copying ironic/tests/__init__.py -> build/lib/ironic/tests -creating 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_boot.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_common.py -> 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_bios.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_inspect.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 -copying ironic/tests/unit/drivers/modules/ilo/test_console.py -> build/lib/ironic/tests/unit/drivers/modules/ilo -creating 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/test_noop.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/__init__.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 -creating build/lib/ironic/drivers/modules/ilo -copying ironic/drivers/modules/ilo/boot.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/common.py -> build/lib/ironic/drivers/modules/ilo -copying ironic/drivers/modules/ilo/vendor.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/power.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/management.py -> build/lib/ironic/drivers/modules/ilo -copying ironic/drivers/modules/ilo/__init__.py -> build/lib/ironic/drivers/modules/ilo -copying ironic/drivers/modules/ilo/inspect.py -> build/lib/ironic/drivers/modules/ilo -copying ironic/tests/unit/stubs.py -> build/lib/ironic/tests/unit -copying ironic/tests/unit/policy_fixture.py -> build/lib/ironic/tests/unit -copying ironic/tests/unit/raid_constants.py -> build/lib/ironic/tests/unit -copying ironic/tests/unit/__init__.py -> build/lib/ironic/tests/unit -copying ironic/tests/unit/test_base.py -> build/lib/ironic/tests/unit -creating build/lib/ironic/db -creating build/lib/ironic/db/sqlalchemy -copying ironic/db/sqlalchemy/migration.py -> build/lib/ironic/db/sqlalchemy -copying ironic/db/sqlalchemy/models.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/tests/unit/cmd -copying ironic/tests/unit/cmd/test_conductor.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_status.py -> build/lib/ironic/tests/unit/cmd -copying ironic/tests/unit/cmd/__init__.py -> build/lib/ironic/tests/unit/cmd -copying ironic/tests/unit/api/controllers/__init__.py -> build/lib/ironic/tests/unit/api/controllers -copying ironic/tests/unit/api/controllers/test_base.py -> build/lib/ironic/tests/unit/api/controllers -creating 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_types.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 -creating build/lib/ironic/drivers/modules/network -copying ironic/drivers/modules/network/common.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/__init__.py -> build/lib/ironic/drivers/modules/network -copying ironic/drivers/modules/network/noop.py -> build/lib/ironic/drivers/modules/network -creating 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/test_factory.py -> build/lib/ironic/tests/unit/dhcp -copying ironic/tests/unit/dhcp/__init__.py -> build/lib/ironic/tests/unit/dhcp -copying ironic/tests/unit/dhcp/test_neutron.py -> build/lib/ironic/tests/unit/dhcp -creating build/lib/ironic/tests/unit/drivers/modules/ansible -copying ironic/tests/unit/drivers/modules/ansible/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/ansible -copying ironic/tests/unit/drivers/modules/ansible/test_deploy.py -> build/lib/ironic/tests/unit/drivers/modules/ansible -copying ironic/tests/unit/drivers/modules/test_noop_mgmt.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_agent_client.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_agent_power.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_pxe.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_deploy_utils.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_snmp.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_agent_base.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_boot_mode_utils.py -> build/lib/ironic/tests/unit/drivers/modules -copying ironic/tests/unit/drivers/modules/test_inspector.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/tests/unit/drivers/modules/test_agent.py -> build/lib/ironic/tests/unit/drivers/modules -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/hacking -copying ironic/hacking/checks.py -> build/lib/ironic/hacking -copying ironic/hacking/__init__.py -> build/lib/ironic/hacking -copying ironic/tests/unit/api/test_acl.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/base.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_root.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_hooks.py -> build/lib/ironic/tests/unit/api -copying ironic/tests/unit/api/__init__.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_method.py -> build/lib/ironic/tests/unit/api -copying ironic/tests/unit/api/utils.py -> build/lib/ironic/tests/unit/api -creating 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_chassis.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_conductor.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/test_node.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_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_portgroup.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_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_node_history.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/__init__.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/utils.py -> build/lib/ironic/tests/unit/objects -creating build/lib/ironic/tests/unit/conf -copying ironic/tests/unit/conf/__init__.py -> build/lib/ironic/tests/unit/conf -copying ironic/tests/unit/conf/test_auth.py -> build/lib/ironic/tests/unit/conf -creating build/lib/ironic/drivers/modules/irmc -copying ironic/drivers/modules/irmc/boot.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/common.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/bios.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/__init__.py -> build/lib/ironic/drivers/modules/irmc -copying ironic/drivers/modules/irmc/inspect.py -> build/lib/ironic/drivers/modules/irmc -creating build/lib/ironic/tests/unit/drivers/modules/xclarity -copying ironic/tests/unit/drivers/modules/xclarity/test_power.py -> build/lib/ironic/tests/unit/drivers/modules/xclarity -copying ironic/tests/unit/drivers/modules/xclarity/test_management.py -> build/lib/ironic/tests/unit/drivers/modules/xclarity -copying ironic/tests/unit/drivers/modules/xclarity/test_common.py -> 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/conf -copying ironic/conf/pxe.py -> build/lib/ironic/conf -copying ironic/conf/dhcp.py -> build/lib/ironic/conf -copying ironic/conf/conductor.py -> build/lib/ironic/conf -copying ironic/conf/metrics_statsd.py -> build/lib/ironic/conf -copying ironic/conf/xclarity.py -> build/lib/ironic/conf -copying ironic/conf/ilo.py -> build/lib/ironic/conf -copying ironic/conf/metrics.py -> build/lib/ironic/conf -copying ironic/conf/swift.py -> build/lib/ironic/conf -copying ironic/conf/molds.py -> build/lib/ironic/conf -copying ironic/conf/ibmc.py -> build/lib/ironic/conf -copying ironic/conf/neutron.py -> build/lib/ironic/conf -copying ironic/conf/auth.py -> build/lib/ironic/conf -copying ironic/conf/drac.py -> build/lib/ironic/conf -copying ironic/conf/opts.py -> build/lib/ironic/conf -copying ironic/conf/glance.py -> build/lib/ironic/conf -copying ironic/conf/audit.py -> build/lib/ironic/conf -copying ironic/conf/ipmi.py -> build/lib/ironic/conf -copying ironic/conf/deploy.py -> build/lib/ironic/conf -copying ironic/conf/redfish.py -> build/lib/ironic/conf -copying ironic/conf/agent.py -> build/lib/ironic/conf -copying ironic/conf/inspector.py -> build/lib/ironic/conf -copying ironic/conf/anaconda.py -> build/lib/ironic/conf -copying ironic/conf/default.py -> build/lib/ironic/conf -copying ironic/conf/service_catalog.py -> build/lib/ironic/conf -copying ironic/conf/console.py -> build/lib/ironic/conf -copying ironic/conf/cinder.py -> build/lib/ironic/conf -copying ironic/conf/nova.py -> build/lib/ironic/conf -copying ironic/conf/dnsmasq.py -> build/lib/ironic/conf -copying ironic/conf/api.py -> build/lib/ironic/conf -copying ironic/conf/__init__.py -> build/lib/ironic/conf -copying ironic/conf/snmp.py -> build/lib/ironic/conf -copying ironic/conf/healthcheck.py -> build/lib/ironic/conf -copying ironic/conf/ansible.py -> build/lib/ironic/conf -copying ironic/conf/irmc.py -> build/lib/ironic/conf -copying ironic/conf/database.py -> build/lib/ironic/conf +copying ironic/tests/unit/drivers/modules/drac/test_bios.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_utils.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 +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/test_power.py -> build/lib/ironic/tests/unit/drivers/modules/drac running egg_info creating ironic.egg-info writing ironic.egg-info/PKG-INFO @@ -3957,93 +3993,6 @@ !! check.warn(importable) -copying ironic/tests/unit/drivers/boot-fallback.ipxe -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/boot.ipxe -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/ipxe_config.template -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/ipxe_config_boot_from_anaconda.template -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/ipxe_config_boot_from_iso.template -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/ipxe_config_boot_from_ramdisk.template -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/ipxe_config_boot_from_volume_extra_volume.template -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/ipxe_config_boot_from_volume_multipath.template -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/ipxe_config_boot_from_volume_no_extra_volumes.template -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/ipxe_config_timeout.template -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/ks_extra_vars.tmpl -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/ks_missing_var.tmpl -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/pxe_config.template -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/pxe_grub_config.template -> build/lib/ironic/tests/unit/drivers -copying ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ng.xml -> build/lib/ironic/tests/unit/drivers/modules/irmc -copying ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ok.xml -> build/lib/ironic/tests/unit/drivers/modules/irmc -copying ironic/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/common/grub_conf.template -> build/lib/ironic/common -copying ironic/common/isolinux_config.template -> build/lib/ironic/common -copying ironic/api/controllers/v1/network-data-schema.json -> build/lib/ironic/api/controllers/v1 -creating build/lib/ironic/tests/unit/common/json_samples -copying ironic/tests/unit/common/json_samples/neutron_network_show.json -> build/lib/ironic/tests/unit/common/json_samples -copying ironic/tests/unit/common/json_samples/neutron_network_show_ipv6.json -> build/lib/ironic/tests/unit/common/json_samples -copying ironic/tests/unit/common/json_samples/neutron_port_show.json -> build/lib/ironic/tests/unit/common/json_samples -copying ironic/tests/unit/common/json_samples/neutron_port_show_ipv6.json -> build/lib/ironic/tests/unit/common/json_samples -copying ironic/tests/unit/common/json_samples/neutron_subnet_show.json -> build/lib/ironic/tests/unit/common/json_samples -copying ironic/tests/unit/common/json_samples/neutron_subnet_show_ipv6.json -> build/lib/ironic/tests/unit/common/json_samples -creating build/lib/ironic/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 -creating build/lib/ironic/tests/json_samples -copying ironic/tests/json_samples/network_data.json -> build/lib/ironic/tests/json_samples -creating build/lib/ironic/tests/unit/drivers/modules/network/json_samples -copying ironic/tests/unit/drivers/modules/network/json_samples/network_data.json -> build/lib/ironic/tests/unit/drivers/modules/network/json_samples copying ironic/db/sqlalchemy/alembic.ini -> build/lib/ironic/db/sqlalchemy creating build/lib/ironic/db/sqlalchemy/alembic copying ironic/db/sqlalchemy/alembic/README -> build/lib/ironic/db/sqlalchemy/alembic @@ -4107,10 +4056,97 @@ 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/drivers/raid_config_schema.json -> build/lib/ironic/drivers +copying ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ng.xml -> build/lib/ironic/tests/unit/drivers/modules/irmc +copying ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ok.xml -> build/lib/ironic/tests/unit/drivers/modules/irmc +copying ironic/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/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/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 +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/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/common/grub_conf.template -> build/lib/ironic/common +copying ironic/common/isolinux_config.template -> build/lib/ironic/common +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 running install_lib creating /build/reproducible-path/ironic-21.1.0/debian/tmp creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr @@ -4118,1264 +4154,1264 @@ creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3 creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd +copying build/lib/ironic/cmd/singleprocess.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd +copying build/lib/ironic/cmd/api.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd +copying build/lib/ironic/cmd/status.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd +copying build/lib/ironic/cmd/dbsync.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd +copying build/lib/ironic/cmd/conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd +copying build/lib/ironic/cmd/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/verify.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/deployments.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/manager.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/rpcapi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/steps.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/cleaning.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/notification_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/base_manager.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/task_manager.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/allocations.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +copying build/lib/ironic/conductor/periodics.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy +copying build/lib/ironic/db/sqlalchemy/api.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic +copying build/lib/ironic/db/sqlalchemy/alembic/script.py.mako -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic +copying build/lib/ironic/db/sqlalchemy/alembic/env.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/4f399b21ae71_add_node_clean_step.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/48d6c242bb9b_add_node_tags.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/3bea56f25597_add_unique_constraint_to_instance_uuid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/2bbd96b6ccb9_add_bios_fields_from_registry.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/b9117ac17882_add_node_deploy_step.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/60cf717201bc_add_standalone_ports_supported.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/fb3f10dd262e_add_fault_to_node_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/dd34e1f1303b_add_resource_class_to_node.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/664f85c2f622_add_conductor_group_to_nodes_conductors.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/2fb93ffd2af1_increase_node_name_length.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/1e1d5ace7dc6_add_inspection_started_at_and_.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/e918ff30eb42_resize_column_nodes_instance_info.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/493d8f27f235_add_portgroup_configuration_fields.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/789acc877671_add_raid_config.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/dbefd6bdaa2c_add_default_column_to_.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/31baaf680d2b_add_node_instance_info.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/3cb628139ea4_nodes_add_console_enabled.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/bb59b63f55a_add_node_driver_internal_info.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/242cc6a923b3_add_node_maintenance_reason.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/405cfe08f18d_add_rescue_interface_to_node.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/cd2c80feb331_add_node_retired_field.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/1d6951876d68_add_storage_interface_db_field_and_.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/516faf1bb9b1_resizing_column_nodes_driver.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/5674c57409b9_replace_nostate_with_available.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/1e15e7122cc9_add_extra_column_to_deploy_templates.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/3ae36a5f5131_add_logical_name.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/daa1ba02d98_add_volume_connectors_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/2d13bc3d6bba_add_bios_config_and_interface.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/ce6c4b3cf5a2_add_allocation_owner.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/2aac7e0872f6_add_deploy_templates.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/5ea1b0d310e_added_port_group_table_and_altered_ports.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/9cbeefa3763f_add_port_is_smartnic.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/c14cef6dfedf_populate_node_network_interface.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/f6fdb920c182_set_pxe_enabled_true.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/9ef41f07cb58_add_node_history_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/10b163d4481e_add_port_portgroup_internal_info.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/868cb606a74a_add_version_field_in_base_class.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/82c315d60161_add_bios_settings.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/93706939026c_add_node_protected_field.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/3d86a077a3f2_add_port_physical_network.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/28c44432c9c3_add_node_description.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/d2b036ae9378_add_automated_clean_field.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/e294876e8028_add_node_network_interface.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/2353895ecfae_add_conductor_hardware_interfaces_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/21b331f883ef_add_provision_updated_at.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/bcdd431ba0bf_add_fields_for_all_interfaces.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/1a59178ebdf6_add_volume_targets_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/c1846a214450_add_boot_mode_and_secure_boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/ac00b586ab95_node_indexes.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/b4130a7fc904_create_nodetraits_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/b2ad35726bb0_add_node_lessee.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/f190f9d00a11_add_node_owner.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/c0455649680c_port_name.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/dd67b91a1981_add_allocations_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/versions/cf1a80fdb352_add_node_network_data_field.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions +copying build/lib/ironic/db/sqlalchemy/alembic/README -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic +copying build/lib/ironic/db/sqlalchemy/alembic.ini -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy +copying build/lib/ironic/db/sqlalchemy/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy +copying build/lib/ironic/db/sqlalchemy/models.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy +copying build/lib/ironic/db/sqlalchemy/migration.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy +copying build/lib/ironic/db/api.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db +copying build/lib/ironic/db/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db +copying build/lib/ironic/db/migration.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/pxe.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/dhcp.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/metrics_statsd.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/xclarity.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/ilo.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/dnsmasq.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/opts.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf copying build/lib/ironic/conf/metrics.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/swift.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/metrics_statsd.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/audit.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/ansible.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf copying build/lib/ironic/conf/molds.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/ibmc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/auth.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/drac.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/opts.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf copying build/lib/ironic/conf/glance.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/audit.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/api.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/irmc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/xclarity.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/dhcp.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/console.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf copying build/lib/ironic/conf/ipmi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/deploy.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/drac.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/anaconda.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf copying build/lib/ironic/conf/redfish.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/agent.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf copying build/lib/ironic/conf/inspector.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/anaconda.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/default.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/healthcheck.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/database.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/snmp.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf copying build/lib/ironic/conf/service_catalog.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/console.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/cinder.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/pxe.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf copying build/lib/ironic/conf/nova.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/dnsmasq.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/api.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf copying build/lib/ironic/conf/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/snmp.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/healthcheck.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/ansible.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/irmc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf -copying build/lib/ironic/conf/database.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/ibmc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/default.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/auth.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/deploy.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/swift.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/cinder.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/agent.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +copying build/lib/ironic/conf/ilo.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api +copying build/lib/ironic/api/app.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api +copying build/lib/ironic/api/method.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers +copying build/lib/ironic/api/controllers/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/driver.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/volume_connector.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/event.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/volume.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/ramdisk.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/chassis.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/notification_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/network-data-schema.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/versions.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/port.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/collection.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/deploy_template.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/node.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/volume_target.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/allocation.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/v1/portgroup.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 +copying build/lib/ironic/api/controllers/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers +copying build/lib/ironic/api/controllers/root.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers +copying build/lib/ironic/api/controllers/version.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers +copying build/lib/ironic/api/controllers/link.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers +copying build/lib/ironic/api/config.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api +copying build/lib/ironic/api/wsgi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api +copying build/lib/ironic/api/hooks.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api +copying build/lib/ironic/api/functions.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api +copying build/lib/ironic/api/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware +copying build/lib/ironic/api/middleware/auth_public_routes.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware +copying build/lib/ironic/api/middleware/json_ext.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware +copying build/lib/ironic/api/middleware/parsable_error.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware +copying build/lib/ironic/api/middleware/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/hacking +copying build/lib/ironic/hacking/checks.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/hacking +copying build/lib/ironic/hacking/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/hacking creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers -copying build/lib/ironic/drivers/generic.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers +copying build/lib/ironic/drivers/intel_ipmi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers +copying build/lib/ironic/drivers/irmc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers +copying build/lib/ironic/drivers/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers copying build/lib/ironic/drivers/xclarity.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers -copying build/lib/ironic/drivers/ilo.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers -copying build/lib/ironic/drivers/fake_hardware.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers -copying build/lib/ironic/drivers/ibmc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers -copying build/lib/ironic/drivers/drac.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers copying build/lib/ironic/drivers/hardware_type.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers +copying build/lib/ironic/drivers/generic.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers copying build/lib/ironic/drivers/ipmi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers -copying build/lib/ironic/drivers/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers +copying build/lib/ironic/drivers/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers +copying build/lib/ironic/drivers/drac.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers +copying build/lib/ironic/drivers/fake_hardware.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers copying build/lib/ironic/drivers/redfish.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers +copying build/lib/ironic/drivers/snmp.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers copying build/lib/ironic/drivers/raid_config_schema.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers +copying build/lib/ironic/drivers/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers +copying build/lib/ironic/drivers/ibmc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/pxe.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/fake.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo -copying build/lib/ironic/drivers/modules/ilo/boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo -copying build/lib/ironic/drivers/modules/ilo/raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo -copying build/lib/ironic/drivers/modules/ilo/common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo -copying build/lib/ironic/drivers/modules/ilo/vendor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo -copying build/lib/ironic/drivers/modules/ilo/firmware_processor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo -copying build/lib/ironic/drivers/modules/ilo/console.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo -copying build/lib/ironic/drivers/modules/ilo/power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo -copying build/lib/ironic/drivers/modules/ilo/bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo -copying build/lib/ironic/drivers/modules/ilo/management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo -copying build/lib/ironic/drivers/modules/ilo/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo -copying build/lib/ironic/drivers/modules/ilo/inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo -copying build/lib/ironic/drivers/modules/boot.ipxe -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/console_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/pxe_base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/noop_mgmt.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/deploy_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/pxe_grub_config.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network +copying build/lib/ironic/drivers/modules/network/flat.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network +copying build/lib/ironic/drivers/modules/network/neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network +copying build/lib/ironic/drivers/modules/network/noop.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network +copying build/lib/ironic/drivers/modules/network/common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network +copying build/lib/ironic/drivers/modules/network/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish +copying build/lib/ironic/drivers/modules/redfish/inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish -copying build/lib/ironic/drivers/modules/redfish/raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/vendor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish -copying build/lib/ironic/drivers/modules/redfish/firmware_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish -copying build/lib/ironic/drivers/modules/redfish/power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish +copying build/lib/ironic/drivers/modules/redfish/raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish +copying build/lib/ironic/drivers/modules/redfish/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish +copying build/lib/ironic/drivers/modules/redfish/firmware_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish -copying build/lib/ironic/drivers/modules/redfish/inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish -copying build/lib/ironic/drivers/modules/redfish/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish +copying build/lib/ironic/drivers/modules/redfish/power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish +copying build/lib/ironic/drivers/modules/inspect_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/fake.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/agent_client.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/pxe_grub_config.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac -copying build/lib/ironic/drivers/modules/drac/job.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac +copying build/lib/ironic/drivers/modules/drac/vendor_passthru.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac +copying build/lib/ironic/drivers/modules/drac/inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac -copying build/lib/ironic/drivers/modules/drac/common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac -copying build/lib/ironic/drivers/modules/drac/power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac +copying build/lib/ironic/drivers/modules/drac/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac +copying build/lib/ironic/drivers/modules/drac/job.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac +copying build/lib/ironic/drivers/modules/drac/common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac -copying build/lib/ironic/drivers/modules/drac/vendor_passthru.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac -copying build/lib/ironic/drivers/modules/drac/inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac -copying build/lib/ironic/drivers/modules/drac/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac -copying build/lib/ironic/drivers/modules/agent_client.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/ramdisk.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/drac/power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac +copying build/lib/ironic/drivers/modules/pxe_base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/ipmitool.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules copying build/lib/ironic/drivers/modules/ipxe.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/pxe_config.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/agent_base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage -copying build/lib/ironic/drivers/modules/storage/cinder.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage -copying build/lib/ironic/drivers/modules/storage/external.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage -copying build/lib/ironic/drivers/modules/storage/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage -copying build/lib/ironic/drivers/modules/storage/noop.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage copying build/lib/ironic/drivers/modules/boot_mode_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/image_cache.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/agent.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/inspector.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/ipmitool.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/image_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo +copying build/lib/ironic/drivers/modules/ilo/inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo +copying build/lib/ironic/drivers/modules/ilo/boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo +copying build/lib/ironic/drivers/modules/ilo/vendor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo +copying build/lib/ironic/drivers/modules/ilo/raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo +copying build/lib/ironic/drivers/modules/ilo/bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo +copying build/lib/ironic/drivers/modules/ilo/console.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo +copying build/lib/ironic/drivers/modules/ilo/management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo +copying build/lib/ironic/drivers/modules/ilo/common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo +copying build/lib/ironic/drivers/modules/ilo/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo +copying build/lib/ironic/drivers/modules/ilo/power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo +copying build/lib/ironic/drivers/modules/ilo/firmware_processor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo +copying build/lib/ironic/drivers/modules/noop_mgmt.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/boot.ipxe -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc -copying build/lib/ironic/drivers/modules/ibmc/raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc copying build/lib/ironic/drivers/modules/ibmc/vendor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc +copying build/lib/ironic/drivers/modules/ibmc/raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc copying build/lib/ironic/drivers/modules/ibmc/mappings.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc -copying build/lib/ironic/drivers/modules/ibmc/power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc +copying build/lib/ironic/drivers/modules/ibmc/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc copying build/lib/ironic/drivers/modules/ibmc/management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc copying build/lib/ironic/drivers/modules/ibmc/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc -copying build/lib/ironic/drivers/modules/ibmc/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc -copying build/lib/ironic/drivers/modules/inspect_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/intel_ipmi -copying build/lib/ironic/drivers/modules/intel_ipmi/management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/intel_ipmi -copying build/lib/ironic/drivers/modules/intel_ipmi/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/intel_ipmi +copying build/lib/ironic/drivers/modules/ibmc/power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc +copying build/lib/ironic/drivers/modules/pxe_config.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/ramdisk.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/inspector.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/console_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/ks.cfg.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc +copying build/lib/ironic/drivers/modules/irmc/inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc -copying build/lib/ironic/drivers/modules/irmc/common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc -copying build/lib/ironic/drivers/modules/irmc/power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc +copying build/lib/ironic/drivers/modules/irmc/common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc -copying build/lib/ironic/drivers/modules/irmc/inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc +copying build/lib/ironic/drivers/modules/irmc/power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/initial_grub_cfg.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/agent_base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/snmp.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/noop.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/pxe.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules copying build/lib/ironic/drivers/modules/agent_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/deploy_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/image_cache.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage +copying build/lib/ironic/drivers/modules/storage/external.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage +copying build/lib/ironic/drivers/modules/storage/noop.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage +copying build/lib/ironic/drivers/modules/storage/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage +copying build/lib/ironic/drivers/modules/storage/cinder.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks -copying build/lib/ironic/drivers/modules/ansible/playbooks/clean_steps.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks -copying build/lib/ironic/drivers/modules/ansible/playbooks/add-ironic-nodes.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library +copying build/lib/ironic/drivers/modules/ansible/playbooks/library/root_hints.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library +copying build/lib/ironic/drivers/modules/ansible/playbooks/library/stream_url.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library +copying build/lib/ironic/drivers/modules/ansible/playbooks/library/facts_wwn.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library +copying build/lib/ironic/drivers/modules/ansible/playbooks/shutdown.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks +copying build/lib/ironic/drivers/modules/ansible/playbooks/ansible.cfg -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks copying build/lib/ironic/drivers/modules/ansible/playbooks/inventory -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks +copying build/lib/ironic/drivers/modules/ansible/playbooks/add-ironic-nodes.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/callback_plugins +copying build/lib/ironic/drivers/modules/ansible/playbooks/callback_plugins/ironic_log.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/callback_plugins +copying build/lib/ironic/drivers/modules/ansible/playbooks/callback_plugins/ironic_log.ini -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/callback_plugins +copying build/lib/ironic/drivers/modules/ansible/playbooks/clean_steps.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/deploy creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks -copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/write.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks -copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/download.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/configdrive.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks +copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/write.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/main.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks +copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/download.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/deploy/files copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/files/partition_configdrive.sh -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/deploy/files +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/shutdown +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks +copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks/main.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/prepare creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks/parted.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks/main.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/defaults -copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/defaults/main.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/defaults -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks -copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/shred.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks -copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/zap.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks -copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/wipe.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks -copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/main.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/configure creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/configure/defaults copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/defaults/main.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/configure/defaults creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks +copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/main.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/mounts.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/grub.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks -copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/main.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/discover creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks/roothints.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks/main.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/shutdown -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks -copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks/main.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks -copying build/lib/ironic/drivers/modules/ansible/playbooks/ansible.cfg -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library -copying build/lib/ironic/drivers/modules/ansible/playbooks/library/facts_wwn.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library -copying build/lib/ironic/drivers/modules/ansible/playbooks/library/stream_url.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library -copying build/lib/ironic/drivers/modules/ansible/playbooks/library/root_hints.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library -copying build/lib/ironic/drivers/modules/ansible/playbooks/shutdown.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/callback_plugins -copying build/lib/ironic/drivers/modules/ansible/playbooks/callback_plugins/ironic_log.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/callback_plugins -copying build/lib/ironic/drivers/modules/ansible/playbooks/callback_plugins/ironic_log.ini -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/callback_plugins +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/defaults +copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/defaults/main.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/defaults +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks +copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/wipe.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks +copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/zap.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks +copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/main.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks +copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/shred.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/deploy.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks copying build/lib/ironic/drivers/modules/ansible/playbooks/clean.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks -copying build/lib/ironic/drivers/modules/ansible/deploy.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible copying build/lib/ironic/drivers/modules/ansible/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible -copying build/lib/ironic/drivers/modules/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network -copying build/lib/ironic/drivers/modules/network/common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network -copying build/lib/ironic/drivers/modules/network/neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network -copying build/lib/ironic/drivers/modules/network/flat.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network -copying build/lib/ironic/drivers/modules/network/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network -copying build/lib/ironic/drivers/modules/network/noop.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network -copying build/lib/ironic/drivers/modules/noop.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/snmp.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/modules/image_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules +copying build/lib/ironic/drivers/modules/ansible/deploy.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/intel_ipmi +copying build/lib/ironic/drivers/modules/intel_ipmi/management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/intel_ipmi +copying build/lib/ironic/drivers/modules/intel_ipmi/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/intel_ipmi +copying build/lib/ironic/drivers/modules/agent.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules copying build/lib/ironic/drivers/modules/ipxe_config.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity -copying build/lib/ironic/drivers/modules/xclarity/common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity -copying build/lib/ironic/drivers/modules/xclarity/power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity copying build/lib/ironic/drivers/modules/xclarity/management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity +copying build/lib/ironic/drivers/modules/xclarity/common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity copying build/lib/ironic/drivers/modules/xclarity/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity -copying build/lib/ironic/drivers/modules/ks.cfg.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules -copying build/lib/ironic/drivers/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers -copying build/lib/ironic/drivers/intel_ipmi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers -copying build/lib/ironic/drivers/snmp.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers -copying build/lib/ironic/drivers/irmc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers -copying build/lib/ironic/drivers/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/node.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/notification.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/chassis.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/volume_connector.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/indirection.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/trait.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/fields.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/port.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/allocation.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/volume_target.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/portgroup.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/deployment.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/node_history.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -copying build/lib/ironic/objects/deploy_template.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/periodics.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/cleaning.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/rpcapi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/manager.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/deployments.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/notification_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/steps.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/allocations.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/task_manager.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/verify.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/base_manager.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -copying build/lib/ironic/conductor/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp -copying build/lib/ironic/dhcp/none.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp -copying build/lib/ironic/dhcp/neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp -copying build/lib/ironic/dhcp/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp -copying build/lib/ironic/dhcp/dnsmasq.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp -copying build/lib/ironic/dhcp/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db -copying build/lib/ironic/db/migration.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db -copying build/lib/ironic/db/api.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db -copying build/lib/ironic/db/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic -copying build/lib/ironic/db/sqlalchemy/alembic/README -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic -copying build/lib/ironic/db/sqlalchemy/alembic/script.py.mako -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic -copying build/lib/ironic/db/sqlalchemy/alembic/env.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/3cb628139ea4_nodes_add_console_enabled.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/31baaf680d2b_add_node_instance_info.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/2aac7e0872f6_add_deploy_templates.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/dbefd6bdaa2c_add_default_column_to_.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/28c44432c9c3_add_node_description.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/21b331f883ef_add_provision_updated_at.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/1e1d5ace7dc6_add_inspection_started_at_and_.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/c1846a214450_add_boot_mode_and_secure_boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/48d6c242bb9b_add_node_tags.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/516faf1bb9b1_resizing_column_nodes_driver.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/cf1a80fdb352_add_node_network_data_field.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/5674c57409b9_replace_nostate_with_available.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/789acc877671_add_raid_config.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/f190f9d00a11_add_node_owner.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/405cfe08f18d_add_rescue_interface_to_node.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/c0455649680c_port_name.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/ac00b586ab95_node_indexes.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/82c315d60161_add_bios_settings.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/b2ad35726bb0_add_node_lessee.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/bcdd431ba0bf_add_fields_for_all_interfaces.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/daa1ba02d98_add_volume_connectors_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/242cc6a923b3_add_node_maintenance_reason.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/4f399b21ae71_add_node_clean_step.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/3bea56f25597_add_unique_constraint_to_instance_uuid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/60cf717201bc_add_standalone_ports_supported.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/5ea1b0d310e_added_port_group_table_and_altered_ports.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/e294876e8028_add_node_network_interface.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/dd67b91a1981_add_allocations_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/3ae36a5f5131_add_logical_name.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/2bbd96b6ccb9_add_bios_fields_from_registry.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/cd2c80feb331_add_node_retired_field.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/b4130a7fc904_create_nodetraits_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/93706939026c_add_node_protected_field.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/e918ff30eb42_resize_column_nodes_instance_info.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/fb3f10dd262e_add_fault_to_node_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/1a59178ebdf6_add_volume_targets_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/2fb93ffd2af1_increase_node_name_length.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/f6fdb920c182_set_pxe_enabled_true.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/b9117ac17882_add_node_deploy_step.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/bb59b63f55a_add_node_driver_internal_info.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/9cbeefa3763f_add_port_is_smartnic.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/493d8f27f235_add_portgroup_configuration_fields.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/1e15e7122cc9_add_extra_column_to_deploy_templates.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/2d13bc3d6bba_add_bios_config_and_interface.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/3d86a077a3f2_add_port_physical_network.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/9ef41f07cb58_add_node_history_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/10b163d4481e_add_port_portgroup_internal_info.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/868cb606a74a_add_version_field_in_base_class.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/664f85c2f622_add_conductor_group_to_nodes_conductors.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/1d6951876d68_add_storage_interface_db_field_and_.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/2353895ecfae_add_conductor_hardware_interfaces_table.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/d2b036ae9378_add_automated_clean_field.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/dd34e1f1303b_add_resource_class_to_node.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/c14cef6dfedf_populate_node_network_interface.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/alembic/versions/ce6c4b3cf5a2_add_allocation_owner.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions -copying build/lib/ironic/db/sqlalchemy/migration.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy -copying build/lib/ironic/db/sqlalchemy/alembic.ini -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy -copying build/lib/ironic/db/sqlalchemy/models.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy -copying build/lib/ironic/db/sqlalchemy/api.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy -copying build/lib/ironic/db/sqlalchemy/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy +copying build/lib/ironic/drivers/modules/xclarity/power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity +copying build/lib/ironic/drivers/ilo.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers +copying build/lib/ironic/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd +copying build/lib/ironic/tests/unit/cmd/test_dbsync.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd +copying build/lib/ironic/tests/unit/cmd/test_status.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd +copying build/lib/ironic/tests/unit/cmd/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd +copying build/lib/ironic/tests/unit/cmd/test_conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd +copying build/lib/ironic/tests/unit/policy_fixture.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit +copying build/lib/ironic/tests/unit/raid_constants.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/test_task_manager.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/test_base_manager.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/test_periodics.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/test_cleaning.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/test_deployments.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/test_rpcapi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/mgr_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/test_allocations.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/test_verify.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/test_steps.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/test_notification_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/conductor/test_manager.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy +copying build/lib/ironic/tests/unit/db/sqlalchemy/test_models.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy +copying build/lib/ironic/tests/unit/db/sqlalchemy/test_types.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy +copying build/lib/ironic/tests/unit/db/sqlalchemy/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy +copying build/lib/ironic/tests/unit/db/sqlalchemy/test_migrations.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy +copying build/lib/ironic/tests/unit/db/sqlalchemy/test_api.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy +copying build/lib/ironic/tests/unit/db/test_volume_targets.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_node_history.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_ports.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_volume_connectors.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_bios_settings.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_chassis.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_nodes.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_deploy_templates.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_node_traits.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_api.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_allocations.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_node_tags.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db +copying build/lib/ironic/tests/unit/db/test_portgroups.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conf -copying build/lib/ironic/tests/unit/conf/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conf copying build/lib/ironic/tests/unit/conf/test_auth.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conf +copying build/lib/ironic/tests/unit/conf/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conf +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_audit.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_acl_basic.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_rbac_system_scoped.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_root.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_portgroup.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_root.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_volume_connector.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_collection.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_allocation.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_event.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_chassis.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_node.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_versions.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_port.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_driver.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_ramdisk.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_deploy_template.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_volume.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_notification_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/v1/test_volume_target.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 +copying build/lib/ironic/tests/unit/api/controllers/test_base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers +copying build/lib/ironic/tests/unit/api/controllers/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers +copying build/lib/ironic/tests/unit/api/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_hooks.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_proxy_middleware.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_rbac_project_scoped.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_ospmiddleware.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_functions.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_method.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_rbac_legacy.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_middleware.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_acl.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/api/test_healthcheck.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/boot-fallback.ipxe -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/boot.ipxe -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/ks_extra_vars.tmpl -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/test_irmc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_no_extra_volumes.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/test_xclarity.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_multipath.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/test_redfish.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/pxe_grub_config.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/third_party_driver_mock_specs.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ks_missing_var.tmpl -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/pxe_config.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/test_fake_hardware.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/test_ipmi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/test_snmp.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_iso.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/third_party_driver_mock_specs.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/pxe_grub_config.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/test_ibmc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/boot-fallback.ipxe -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/test_generic.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/test_snmp.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/test_drac.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/test_ilo.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_extra_volume.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/test_fake_hardware.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/test_xclarity.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/third_party_driver_mocks.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/test_redfish.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/boot.ipxe -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_anaconda.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/pxe_config.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_ramdisk.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/test_base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_multipath.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/modules/test_noop_mgmt.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo -copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo -copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo -copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo -copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo -copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo -copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_vendor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo -copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo -copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_firmware_processor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo -copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo -copying build/lib/ironic/tests/unit/drivers/modules/ilo/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo -copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_console.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo -copying build/lib/ironic/tests/unit/drivers/modules/test_image_cache.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/modules/test_agent_client.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/modules/test_ramdisk.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/modules/test_agent_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/modules/test_console_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network +copying build/lib/ironic/tests/unit/drivers/modules/network/test_common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network +copying build/lib/ironic/tests/unit/drivers/modules/network/test_flat.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network +copying build/lib/ironic/tests/unit/drivers/modules/network/test_noop.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network +copying build/lib/ironic/tests/unit/drivers/modules/network/test_neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network +copying build/lib/ironic/tests/unit/drivers/modules/network/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/json_samples +copying build/lib/ironic/tests/unit/drivers/modules/network/json_samples/network_data.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/json_samples +copying build/lib/ironic/tests/unit/drivers/modules/test_snmp.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish -copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish -copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish -copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish -copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish -copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_firmware_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish +copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_vendor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish -copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish +copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish +copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish +copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish +copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish +copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish +copying build/lib/ironic/tests/unit/drivers/modules/test_pxe.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +copying build/lib/ironic/tests/unit/drivers/modules/test_noop_mgmt.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac -copying build/lib/ironic/tests/unit/drivers/modules/drac/test_raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac -copying build/lib/ironic/tests/unit/drivers/modules/drac/test_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac -copying build/lib/ironic/tests/unit/drivers/modules/drac/test_boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac -copying build/lib/ironic/tests/unit/drivers/modules/drac/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac -copying build/lib/ironic/tests/unit/drivers/modules/drac/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac copying build/lib/ironic/tests/unit/drivers/modules/drac/test_common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac -copying build/lib/ironic/tests/unit/drivers/modules/drac/test_periodic_task.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac -copying build/lib/ironic/tests/unit/drivers/modules/drac/test_bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac copying build/lib/ironic/tests/unit/drivers/modules/drac/test_job.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac +copying build/lib/ironic/tests/unit/drivers/modules/drac/test_periodic_task.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac copying build/lib/ironic/tests/unit/drivers/modules/drac/test_inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac -copying build/lib/ironic/tests/unit/drivers/modules/drac/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac copying build/lib/ironic/tests/unit/drivers/modules/drac/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac -copying build/lib/ironic/tests/unit/drivers/modules/test_pxe.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/modules/test_noop.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/modules/test_ipxe.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage -copying build/lib/ironic/tests/unit/drivers/modules/storage/test_cinder.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage -copying build/lib/ironic/tests/unit/drivers/modules/storage/test_external.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage -copying build/lib/ironic/tests/unit/drivers/modules/storage/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage +copying build/lib/ironic/tests/unit/drivers/modules/drac/test_bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac +copying build/lib/ironic/tests/unit/drivers/modules/drac/test_raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac +copying build/lib/ironic/tests/unit/drivers/modules/drac/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac +copying build/lib/ironic/tests/unit/drivers/modules/drac/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac +copying build/lib/ironic/tests/unit/drivers/modules/drac/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac +copying build/lib/ironic/tests/unit/drivers/modules/drac/test_boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac +copying build/lib/ironic/tests/unit/drivers/modules/drac/test_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac +copying build/lib/ironic/tests/unit/drivers/modules/test_inspector.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_deploy_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/modules/test_ipmitool.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/modules/test_snmp.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +copying build/lib/ironic/tests/unit/drivers/modules/test_inspect_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +copying build/lib/ironic/tests/unit/drivers/modules/test_agent_client.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo +copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo +copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo +copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_vendor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo +copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo +copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo +copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo +copying build/lib/ironic/tests/unit/drivers/modules/ilo/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo +copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_firmware_processor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo +copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo +copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo +copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_console.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc -copying build/lib/ironic/tests/unit/drivers/modules/ibmc/test_raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc -copying build/lib/ironic/tests/unit/drivers/modules/ibmc/test_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc -copying build/lib/ironic/tests/unit/drivers/modules/ibmc/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc -copying build/lib/ironic/tests/unit/drivers/modules/ibmc/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc copying build/lib/ironic/tests/unit/drivers/modules/ibmc/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc copying build/lib/ironic/tests/unit/drivers/modules/ibmc/test_vendor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc +copying build/lib/ironic/tests/unit/drivers/modules/ibmc/test_raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc +copying build/lib/ironic/tests/unit/drivers/modules/ibmc/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc +copying build/lib/ironic/tests/unit/drivers/modules/ibmc/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc copying build/lib/ironic/tests/unit/drivers/modules/ibmc/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi -copying build/lib/ironic/tests/unit/drivers/modules/intel_ipmi/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi -copying build/lib/ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi -copying build/lib/ironic/tests/unit/drivers/modules/intel_ipmi/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi -copying build/lib/ironic/tests/unit/drivers/modules/intel_ipmi/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi +copying build/lib/ironic/tests/unit/drivers/modules/ibmc/test_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc +copying build/lib/ironic/tests/unit/drivers/modules/test_noop.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +copying build/lib/ironic/tests/unit/drivers/modules/test_agent.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +copying build/lib/ironic/tests/unit/drivers/modules/test_image_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +copying build/lib/ironic/tests/unit/drivers/modules/test_boot_mode_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +copying build/lib/ironic/tests/unit/drivers/modules/test_image_cache.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc -copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc -copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc -copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc -copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_periodic_task.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc -copying build/lib/ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ok.xml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc -copying build/lib/ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ng.xml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc -copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_inspect.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc +copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc +copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc +copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc +copying build/lib/ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ng.xml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc -copying build/lib/ironic/tests/unit/drivers/modules/test_inspect_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_boot.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc +copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc +copying build/lib/ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ok.xml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/test_agent_base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/modules/test_image_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/modules/test_boot_mode_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +copying build/lib/ironic/tests/unit/drivers/modules/test_console_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +copying build/lib/ironic/tests/unit/drivers/modules/test_ramdisk.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +copying build/lib/ironic/tests/unit/drivers/modules/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage +copying build/lib/ironic/tests/unit/drivers/modules/storage/test_external.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage +copying build/lib/ironic/tests/unit/drivers/modules/storage/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage +copying build/lib/ironic/tests/unit/drivers/modules/storage/test_cinder.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage +copying build/lib/ironic/tests/unit/drivers/modules/test_agent_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules +copying build/lib/ironic/tests/unit/drivers/modules/test_ipmitool.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ansible -copying build/lib/ironic/tests/unit/drivers/modules/ansible/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ansible copying build/lib/ironic/tests/unit/drivers/modules/ansible/test_deploy.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ansible -copying build/lib/ironic/tests/unit/drivers/modules/test_inspector.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/modules/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network -copying build/lib/ironic/tests/unit/drivers/modules/network/test_common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network -copying build/lib/ironic/tests/unit/drivers/modules/network/test_noop.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/json_samples -copying build/lib/ironic/tests/unit/drivers/modules/network/json_samples/network_data.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/json_samples -copying build/lib/ironic/tests/unit/drivers/modules/network/test_flat.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network -copying build/lib/ironic/tests/unit/drivers/modules/network/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network -copying build/lib/ironic/tests/unit/drivers/modules/network/test_neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network +copying build/lib/ironic/tests/unit/drivers/modules/ansible/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ansible +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi +copying build/lib/ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi +copying build/lib/ironic/tests/unit/drivers/modules/intel_ipmi/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi +copying build/lib/ironic/tests/unit/drivers/modules/intel_ipmi/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi +copying build/lib/ironic/tests/unit/drivers/modules/intel_ipmi/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi +copying build/lib/ironic/tests/unit/drivers/modules/test_ipxe.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity -copying build/lib/ironic/tests/unit/drivers/modules/xclarity/test_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity -copying build/lib/ironic/tests/unit/drivers/modules/xclarity/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity copying build/lib/ironic/tests/unit/drivers/modules/xclarity/test_common.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity +copying build/lib/ironic/tests/unit/drivers/modules/xclarity/test_management.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity copying build/lib/ironic/tests/unit/drivers/modules/xclarity/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity -copying build/lib/ironic/tests/unit/drivers/modules/test_agent.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules -copying build/lib/ironic/tests/unit/drivers/test_ipmi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/ipxe_config_timeout.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_iso.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/modules/xclarity/test_power.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity +copying build/lib/ironic/tests/unit/drivers/test_ilo.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_extra_volume.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/ks_extra_vars.tmpl -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/test_drac.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_no_extra_volumes.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/test_irmc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ipxe_config.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/test_base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers -copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_anaconda.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/drivers/ipxe_config_timeout.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers +copying build/lib/ironic/tests/unit/test_base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit +copying build/lib/ironic/tests/unit/stubs.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit +copying build/lib/ironic/tests/unit/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_args.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_kickstart_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_network.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_molds.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_fsm.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_rpc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_rpc_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_states.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_wsgi_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_context.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_image_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_cinder.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_glance_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples +copying build/lib/ironic/tests/unit/common/json_samples/neutron_subnet_show.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples +copying build/lib/ironic/tests/unit/common/json_samples/neutron_port_show_ipv6.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples +copying build/lib/ironic/tests/unit/common/json_samples/neutron_port_show.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples +copying build/lib/ironic/tests/unit/common/json_samples/neutron_network_show_ipv6.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples +copying build/lib/ironic/tests/unit/common/json_samples/neutron_network_show.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples +copying build/lib/ironic/tests/unit/common/json_samples/neutron_subnet_show_ipv6.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples +copying build/lib/ironic/tests/unit/common/test_hash_ring.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_nova.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_images.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_pxe_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_release_mappings.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_keystone.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_swift.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_driver_factory.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common +copying build/lib/ironic/tests/unit/common/test_policy.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects -copying build/lib/ironic/tests/unit/objects/test_notification.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects -copying build/lib/ironic/tests/unit/objects/test_chassis.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects +copying build/lib/ironic/tests/unit/objects/test_portgroup.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects +copying build/lib/ironic/tests/unit/objects/test_node_history.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_volume_connector.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects -copying build/lib/ironic/tests/unit/objects/test_conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects +copying build/lib/ironic/tests/unit/objects/test_objects.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_allocation.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects +copying build/lib/ironic/tests/unit/objects/test_chassis.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_node.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects -copying build/lib/ironic/tests/unit/objects/test_trait.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects -copying build/lib/ironic/tests/unit/objects/test_port.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects -copying build/lib/ironic/tests/unit/objects/test_objects.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects -copying build/lib/ironic/tests/unit/objects/test_portgroup.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects +copying build/lib/ironic/tests/unit/objects/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects -copying build/lib/ironic/tests/unit/objects/test_fields.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects +copying build/lib/ironic/tests/unit/objects/test_port.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_deployment.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects -copying build/lib/ironic/tests/unit/objects/test_node_history.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects +copying build/lib/ironic/tests/unit/objects/test_fields.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_deploy_template.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects +copying build/lib/ironic/tests/unit/objects/test_conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_volume_target.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects -copying build/lib/ironic/tests/unit/objects/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/mgr_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/test_task_manager.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/test_manager.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/test_deployments.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/test_steps.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/test_allocations.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/test_periodics.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/test_base_manager.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/test_notification_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/test_cleaning.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/test_rpcapi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor -copying build/lib/ironic/tests/unit/conductor/test_verify.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor +copying build/lib/ironic/tests/unit/objects/test_trait.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects +copying build/lib/ironic/tests/unit/objects/test_notification.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp -copying build/lib/ironic/tests/unit/dhcp/test_dnsmasq.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp +copying build/lib/ironic/tests/unit/dhcp/test_neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp copying build/lib/ironic/tests/unit/dhcp/test_factory.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp copying build/lib/ironic/tests/unit/dhcp/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp -copying build/lib/ironic/tests/unit/dhcp/test_neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp -copying build/lib/ironic/tests/unit/stubs.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit -copying build/lib/ironic/tests/unit/policy_fixture.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_volume_targets.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_chassis.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_node_traits.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_bios_settings.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_node_tags.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_nodes.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_api.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_allocations.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_ports.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_volume_connectors.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_node_history.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_deploy_templates.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/test_portgroups.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -copying build/lib/ironic/tests/unit/db/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy -copying build/lib/ironic/tests/unit/db/sqlalchemy/test_models.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy -copying build/lib/ironic/tests/unit/db/sqlalchemy/test_migrations.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy -copying build/lib/ironic/tests/unit/db/sqlalchemy/test_types.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy -copying build/lib/ironic/tests/unit/db/sqlalchemy/test_api.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy -copying build/lib/ironic/tests/unit/db/sqlalchemy/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd -copying build/lib/ironic/tests/unit/cmd/test_conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd -copying build/lib/ironic/tests/unit/cmd/test_dbsync.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd -copying build/lib/ironic/tests/unit/cmd/test_status.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd -copying build/lib/ironic/tests/unit/cmd/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_fsm.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_hash_ring.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_image_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_release_mappings.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_pxe_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_swift.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_keystone.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_network.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_cinder.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_kickstart_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_wsgi_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_images.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_nova.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_molds.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples -copying build/lib/ironic/tests/unit/common/json_samples/neutron_port_show.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples -copying build/lib/ironic/tests/unit/common/json_samples/neutron_network_show.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples -copying build/lib/ironic/tests/unit/common/json_samples/neutron_subnet_show.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples -copying build/lib/ironic/tests/unit/common/json_samples/neutron_subnet_show_ipv6.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples -copying build/lib/ironic/tests/unit/common/json_samples/neutron_port_show_ipv6.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples -copying build/lib/ironic/tests/unit/common/json_samples/neutron_network_show_ipv6.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/json_samples -copying build/lib/ironic/tests/unit/common/test_policy.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_glance_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_states.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_driver_factory.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_rpc_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_rpc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_args.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/common/test_context.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common -copying build/lib/ironic/tests/unit/raid_constants.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit -copying build/lib/ironic/tests/unit/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit -copying build/lib/ironic/tests/unit/test_base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_acl.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_healthcheck.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_functions.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_audit.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_rbac_legacy.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_rbac_project_scoped.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_proxy_middleware.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_chassis.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_volume_connector.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_event.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_ramdisk.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_allocation.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_node.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_volume.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_collection.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_port.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_portgroup.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_notification_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_root.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_versions.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_deploy_template.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_volume_target.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/v1/test_driver.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1 -copying build/lib/ironic/tests/unit/api/controllers/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers -copying build/lib/ironic/tests/unit/api/controllers/test_base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers -copying build/lib/ironic/tests/unit/api/test_rbac_system_scoped.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_root.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_middleware.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_hooks.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_acl_basic.yaml -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_ospmiddleware.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/test_method.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api -copying build/lib/ironic/tests/unit/api/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api +copying build/lib/ironic/tests/unit/dhcp/test_dnsmasq.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp copying build/lib/ironic/tests/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/functional copying build/lib/ironic/tests/functional/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/functional +copying build/lib/ironic/tests/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/json_samples copying build/lib/ironic/tests/json_samples/network_data.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/json_samples -copying build/lib/ironic/tests/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd -copying build/lib/ironic/cmd/conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd -copying build/lib/ironic/cmd/singleprocess.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd -copying build/lib/ironic/cmd/dbsync.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd -copying build/lib/ironic/cmd/api.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd -copying build/lib/ironic/cmd/status.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd -copying build/lib/ironic/cmd/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd +copying build/lib/ironic/version.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/images.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/pxe_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/boot_devices.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/wsgi_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/states.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common copying build/lib/ironic/common/context.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/policy.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/network.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/swift.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/driver_factory.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/fsm.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/i18n.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common copying build/lib/ironic/common/molds.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/indicator_states.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/boot_devices.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/components.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/fsm.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/raid.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/dhcp_factory.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common copying build/lib/ironic/common/config.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/keystone.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/args.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/network.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common copying build/lib/ironic/common/neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/images.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/wsgi_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common copying build/lib/ironic/common/kickstart_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/isolinux_config.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/glance_service copying build/lib/ironic/common/glance_service/service_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/glance_service copying build/lib/ironic/common/glance_service/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/glance_service copying build/lib/ironic/common/glance_service/image_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/glance_service -copying build/lib/ironic/common/hash_ring.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/pxe_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/release_mappings.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/cinder.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/faults.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/exception.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common copying build/lib/ironic/common/nova.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/boot_modes.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/rpc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/grub_conf.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/i18n.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/args.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/rpc_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/policy.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common copying build/lib/ironic/common/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/boot_modes.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common copying build/lib/ironic/common/profiler.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/states.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/dhcp_factory.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/exception.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/release_mappings.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/rpc_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/indicator_states.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common copying build/lib/ironic/common/image_service.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/common/faults.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common -copying build/lib/ironic/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/hacking -copying build/lib/ironic/hacking/checks.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/hacking -copying build/lib/ironic/hacking/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/hacking -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware -copying build/lib/ironic/api/middleware/json_ext.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware -copying build/lib/ironic/api/middleware/auth_public_routes.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware -copying build/lib/ironic/api/middleware/parsable_error.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware -copying build/lib/ironic/api/middleware/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware -copying build/lib/ironic/api/functions.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api -copying build/lib/ironic/api/wsgi.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api -copying build/lib/ironic/api/method.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api -copying build/lib/ironic/api/config.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers -copying build/lib/ironic/api/controllers/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers -creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/node.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/collection.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/chassis.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/volume_connector.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/event.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/notification_utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/ramdisk.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/port.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/volume.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/driver.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/allocation.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/versions.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/volume_target.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/network-data-schema.json -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/portgroup.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/deploy_template.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/v1/utils.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1 -copying build/lib/ironic/api/controllers/link.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers -copying build/lib/ironic/api/controllers/root.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers -copying build/lib/ironic/api/controllers/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers -copying build/lib/ironic/api/controllers/version.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers -copying build/lib/ironic/api/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api -copying build/lib/ironic/api/app.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api -copying build/lib/ironic/api/hooks.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api -copying build/lib/ironic/version.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/pxe.py to pxe.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/dhcp.py to dhcp.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/conductor.py to conductor.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/metrics_statsd.py to metrics_statsd.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/xclarity.py to xclarity.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/ilo.py to ilo.cpython-311.pyc +copying build/lib/ironic/common/hash_ring.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/keystone.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/rpc.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/grub_conf.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/swift.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/components.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/cinder.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/driver_factory.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +copying build/lib/ironic/common/isolinux_config.template -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/volume_connector.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/indirection.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/deployment.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/bios.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/chassis.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/conductor.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/notification.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/trait.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/port.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/fields.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/deploy_template.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/node.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/volume_target.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/node_history.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/allocation.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +copying build/lib/ironic/objects/portgroup.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects +creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp +copying build/lib/ironic/dhcp/dnsmasq.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp +copying build/lib/ironic/dhcp/base.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp +copying build/lib/ironic/dhcp/neutron.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp +copying build/lib/ironic/dhcp/__init__.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp +copying build/lib/ironic/dhcp/none.py -> /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd/singleprocess.py to singleprocess.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd/api.py to api.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd/status.py to status.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd/dbsync.py to dbsync.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd/conductor.py to conductor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/verify.py to verify.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/deployments.py to deployments.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/manager.py to manager.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/utils.py to utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/rpcapi.py to rpcapi.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/steps.py to steps.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/cleaning.py to cleaning.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/notification_utils.py to notification_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/base_manager.py to base_manager.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/task_manager.py to task_manager.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/allocations.py to allocations.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/periodics.py to periodics.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/api.py to api.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/env.py to env.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/4f399b21ae71_add_node_clean_step.py to 4f399b21ae71_add_node_clean_step.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/48d6c242bb9b_add_node_tags.py to 48d6c242bb9b_add_node_tags.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/3bea56f25597_add_unique_constraint_to_instance_uuid.py to 3bea56f25597_add_unique_constraint_to_instance_uuid.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/2bbd96b6ccb9_add_bios_fields_from_registry.py to 2bbd96b6ccb9_add_bios_fields_from_registry.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/b9117ac17882_add_node_deploy_step.py to b9117ac17882_add_node_deploy_step.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/60cf717201bc_add_standalone_ports_supported.py to 60cf717201bc_add_standalone_ports_supported.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/fb3f10dd262e_add_fault_to_node_table.py to fb3f10dd262e_add_fault_to_node_table.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/dd34e1f1303b_add_resource_class_to_node.py to dd34e1f1303b_add_resource_class_to_node.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/664f85c2f622_add_conductor_group_to_nodes_conductors.py to 664f85c2f622_add_conductor_group_to_nodes_conductors.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/2fb93ffd2af1_increase_node_name_length.py to 2fb93ffd2af1_increase_node_name_length.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/1e1d5ace7dc6_add_inspection_started_at_and_.py to 1e1d5ace7dc6_add_inspection_started_at_and_.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/e918ff30eb42_resize_column_nodes_instance_info.py to e918ff30eb42_resize_column_nodes_instance_info.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/493d8f27f235_add_portgroup_configuration_fields.py to 493d8f27f235_add_portgroup_configuration_fields.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/789acc877671_add_raid_config.py to 789acc877671_add_raid_config.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/dbefd6bdaa2c_add_default_column_to_.py to dbefd6bdaa2c_add_default_column_to_.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/31baaf680d2b_add_node_instance_info.py to 31baaf680d2b_add_node_instance_info.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/3cb628139ea4_nodes_add_console_enabled.py to 3cb628139ea4_nodes_add_console_enabled.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/bb59b63f55a_add_node_driver_internal_info.py to bb59b63f55a_add_node_driver_internal_info.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/242cc6a923b3_add_node_maintenance_reason.py to 242cc6a923b3_add_node_maintenance_reason.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/405cfe08f18d_add_rescue_interface_to_node.py to 405cfe08f18d_add_rescue_interface_to_node.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/cd2c80feb331_add_node_retired_field.py to cd2c80feb331_add_node_retired_field.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/1d6951876d68_add_storage_interface_db_field_and_.py to 1d6951876d68_add_storage_interface_db_field_and_.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/516faf1bb9b1_resizing_column_nodes_driver.py to 516faf1bb9b1_resizing_column_nodes_driver.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/5674c57409b9_replace_nostate_with_available.py to 5674c57409b9_replace_nostate_with_available.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/1e15e7122cc9_add_extra_column_to_deploy_templates.py to 1e15e7122cc9_add_extra_column_to_deploy_templates.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/3ae36a5f5131_add_logical_name.py to 3ae36a5f5131_add_logical_name.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/daa1ba02d98_add_volume_connectors_table.py to daa1ba02d98_add_volume_connectors_table.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/2d13bc3d6bba_add_bios_config_and_interface.py to 2d13bc3d6bba_add_bios_config_and_interface.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/ce6c4b3cf5a2_add_allocation_owner.py to ce6c4b3cf5a2_add_allocation_owner.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/2aac7e0872f6_add_deploy_templates.py to 2aac7e0872f6_add_deploy_templates.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/5ea1b0d310e_added_port_group_table_and_altered_ports.py to 5ea1b0d310e_added_port_group_table_and_altered_ports.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/9cbeefa3763f_add_port_is_smartnic.py to 9cbeefa3763f_add_port_is_smartnic.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/c14cef6dfedf_populate_node_network_interface.py to c14cef6dfedf_populate_node_network_interface.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/f6fdb920c182_set_pxe_enabled_true.py to f6fdb920c182_set_pxe_enabled_true.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/9ef41f07cb58_add_node_history_table.py to 9ef41f07cb58_add_node_history_table.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/10b163d4481e_add_port_portgroup_internal_info.py to 10b163d4481e_add_port_portgroup_internal_info.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/868cb606a74a_add_version_field_in_base_class.py to 868cb606a74a_add_version_field_in_base_class.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/82c315d60161_add_bios_settings.py to 82c315d60161_add_bios_settings.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/93706939026c_add_node_protected_field.py to 93706939026c_add_node_protected_field.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py to 2581ebaf0cb2_initial_migration.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py to 487deb87cc9d_add_conductor_affinity_and_online.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/3d86a077a3f2_add_port_physical_network.py to 3d86a077a3f2_add_port_physical_network.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/28c44432c9c3_add_node_description.py to 28c44432c9c3_add_node_description.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/d2b036ae9378_add_automated_clean_field.py to d2b036ae9378_add_automated_clean_field.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/e294876e8028_add_node_network_interface.py to e294876e8028_add_node_network_interface.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/2353895ecfae_add_conductor_hardware_interfaces_table.py to 2353895ecfae_add_conductor_hardware_interfaces_table.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/21b331f883ef_add_provision_updated_at.py to 21b331f883ef_add_provision_updated_at.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/bcdd431ba0bf_add_fields_for_all_interfaces.py to bcdd431ba0bf_add_fields_for_all_interfaces.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/1a59178ebdf6_add_volume_targets_table.py to 1a59178ebdf6_add_volume_targets_table.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/c1846a214450_add_boot_mode_and_secure_boot.py to c1846a214450_add_boot_mode_and_secure_boot.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/ac00b586ab95_node_indexes.py to ac00b586ab95_node_indexes.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/b4130a7fc904_create_nodetraits_table.py to b4130a7fc904_create_nodetraits_table.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/b2ad35726bb0_add_node_lessee.py to b2ad35726bb0_add_node_lessee.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/f190f9d00a11_add_node_owner.py to f190f9d00a11_add_node_owner.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/c0455649680c_port_name.py to c0455649680c_port_name.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/dd67b91a1981_add_allocations_table.py to dd67b91a1981_add_allocations_table.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/cf1a80fdb352_add_node_network_data_field.py to cf1a80fdb352_add_node_network_data_field.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/models.py to models.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/migration.py to migration.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/api.py to api.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/migration.py to migration.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/dnsmasq.py to dnsmasq.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/opts.py to opts.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/metrics.py to metrics.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/swift.py to swift.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/metrics_statsd.py to metrics_statsd.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/audit.py to audit.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/ansible.py to ansible.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/molds.py to molds.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/ibmc.py to ibmc.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/neutron.py to neutron.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/auth.py to auth.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/drac.py to drac.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/opts.py to opts.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/glance.py to glance.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/audit.py to audit.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/api.py to api.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/irmc.py to irmc.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/xclarity.py to xclarity.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/dhcp.py to dhcp.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/console.py to console.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/ipmi.py to ipmi.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/deploy.py to deploy.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/neutron.py to neutron.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/drac.py to drac.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/anaconda.py to anaconda.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/redfish.py to redfish.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/agent.py to agent.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/inspector.py to inspector.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/anaconda.py to anaconda.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/default.py to default.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/conductor.py to conductor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/healthcheck.py to healthcheck.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/database.py to database.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/snmp.py to snmp.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/service_catalog.py to service_catalog.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/console.py to console.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/cinder.py to cinder.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/pxe.py to pxe.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/nova.py to nova.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/dnsmasq.py to dnsmasq.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/api.py to api.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/snmp.py to snmp.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/healthcheck.py to healthcheck.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/ansible.py to ansible.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/irmc.py to irmc.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/database.py to database.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/generic.py to generic.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/ibmc.py to ibmc.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/default.py to default.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/auth.py to auth.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/deploy.py to deploy.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/swift.py to swift.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/cinder.py to cinder.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/agent.py to agent.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conf/ilo.py to ilo.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/app.py to app.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/method.py to method.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/base.py to base.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/driver.py to driver.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/volume_connector.py to volume_connector.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/event.py to event.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/volume.py to volume.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/bios.py to bios.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/utils.py to utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/ramdisk.py to ramdisk.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/chassis.py to chassis.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/notification_utils.py to notification_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/conductor.py to conductor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/versions.py to versions.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/port.py to port.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/collection.py to collection.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/deploy_template.py to deploy_template.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/node.py to node.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/volume_target.py to volume_target.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/allocation.py to allocation.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/portgroup.py to portgroup.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/root.py to root.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/version.py to version.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/link.py to link.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/config.py to config.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/wsgi.py to wsgi.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/hooks.py to hooks.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/functions.py to functions.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware/auth_public_routes.py to auth_public_routes.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware/json_ext.py to json_ext.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware/parsable_error.py to parsable_error.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/hacking/checks.py to checks.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/hacking/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/intel_ipmi.py to intel_ipmi.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/irmc.py to irmc.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/base.py to base.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/xclarity.py to xclarity.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/ilo.py to ilo.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/fake_hardware.py to fake_hardware.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/ibmc.py to ibmc.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/drac.py to drac.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/hardware_type.py to hardware_type.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/generic.py to generic.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/ipmi.py to ipmi.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/base.py to base.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/utils.py to utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/drac.py to drac.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/fake_hardware.py to fake_hardware.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/redfish.py to redfish.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/pxe.py to pxe.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/fake.py to fake.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/boot.py to boot.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/raid.py to raid.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/common.py to common.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/vendor.py to vendor.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/firmware_processor.py to firmware_processor.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/console.py to console.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/power.py to power.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/bios.py to bios.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/management.py to management.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/inspect.py to inspect.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/console_utils.py to console_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/pxe_base.py to pxe_base.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/noop_mgmt.py to noop_mgmt.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/deploy_utils.py to deploy_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/snmp.py to snmp.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/ibmc.py to ibmc.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network/flat.py to flat.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network/neutron.py to neutron.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network/noop.py to noop.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network/common.py to common.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/inspect.py to inspect.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/boot.py to boot.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/raid.py to raid.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/vendor.py to vendor.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/firmware_utils.py to firmware_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/power.py to power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/raid.py to raid.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/bios.py to bios.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/utils.py to utils.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/management.py to management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/firmware_utils.py to firmware_utils.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/inspect.py to inspect.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/utils.py to utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/job.py to job.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/redfish/power.py to power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/inspect_utils.py to inspect_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/fake.py to fake.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/agent_client.py to agent_client.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/vendor_passthru.py to vendor_passthru.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/inspect.py to inspect.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/boot.py to boot.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/raid.py to raid.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/common.py to common.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/power.py to power.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/bios.py to bios.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/utils.py to utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/job.py to job.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/management.py to management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/common.py to common.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/vendor_passthru.py to vendor_passthru.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/inspect.py to inspect.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/utils.py to utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/agent_client.py to agent_client.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ramdisk.py to ramdisk.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/drac/power.py to power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/pxe_base.py to pxe_base.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ipmitool.py to ipmitool.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ipxe.py to ipxe.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/agent_base.py to agent_base.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage/cinder.py to cinder.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage/external.py to external.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage/noop.py to noop.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/boot_mode_utils.py to boot_mode_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/image_cache.py to image_cache.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/agent.py to agent.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/inspector.py to inspector.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ipmitool.py to ipmitool.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc/raid.py to raid.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/image_utils.py to image_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/inspect.py to inspect.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/boot.py to boot.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/vendor.py to vendor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/raid.py to raid.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/bios.py to bios.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/console.py to console.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/management.py to management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/common.py to common.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/power.py to power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ilo/firmware_processor.py to firmware_processor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/noop_mgmt.py to noop_mgmt.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc/vendor.py to vendor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc/raid.py to raid.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc/mappings.py to mappings.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc/power.py to power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc/utils.py to utils.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc/management.py to management.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc/utils.py to utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/inspect_utils.py to inspect_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/intel_ipmi/management.py to management.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/intel_ipmi/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ibmc/power.py to power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ramdisk.py to ramdisk.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/inspector.py to inspector.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/console_utils.py to console_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc/inspect.py to inspect.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc/boot.py to boot.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc/raid.py to raid.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc/common.py to common.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc/power.py to power.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc/bios.py to bios.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc/management.py to management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc/common.py to common.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc/inspect.py to inspect.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/irmc/power.py to power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/agent_base.py to agent_base.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/snmp.py to snmp.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/noop.py to noop.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/pxe.py to pxe.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/agent_power.py to agent_power.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library/facts_wwn.py to facts_wwn.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library/stream_url.py to stream_url.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/deploy_utils.py to deploy_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/image_cache.py to image_cache.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage/external.py to external.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage/noop.py to noop.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/storage/cinder.py to cinder.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library/root_hints.py to root_hints.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library/stream_url.py to stream_url.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/library/facts_wwn.py to facts_wwn.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/playbooks/callback_plugins/ironic_log.py to ironic_log.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/deploy.py to deploy.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network/common.py to common.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network/neutron.py to neutron.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network/flat.py to flat.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/network/noop.py to noop.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/noop.py to noop.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/snmp.py to snmp.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/image_utils.py to image_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity/common.py to common.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity/power.py to power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/ansible/deploy.py to deploy.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/intel_ipmi/management.py to management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/intel_ipmi/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/agent.py to agent.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity/management.py to management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity/common.py to common.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/intel_ipmi.py to intel_ipmi.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/snmp.py to snmp.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/irmc.py to irmc.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/utils.py to utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/node.py to node.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/conductor.py to conductor.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/notification.py to notification.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/chassis.py to chassis.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/volume_connector.py to volume_connector.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/indirection.py to indirection.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/trait.py to trait.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/fields.py to fields.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/port.py to port.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/base.py to base.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/allocation.py to allocation.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/bios.py to bios.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/volume_target.py to volume_target.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/portgroup.py to portgroup.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/deployment.py to deployment.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/node_history.py to node_history.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/deploy_template.py to deploy_template.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/periodics.py to periodics.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/cleaning.py to cleaning.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/rpcapi.py to rpcapi.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/manager.py to manager.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/deployments.py to deployments.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/notification_utils.py to notification_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/steps.py to steps.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/allocations.py to allocations.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/task_manager.py to task_manager.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/verify.py to verify.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/base_manager.py to base_manager.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/conductor/utils.py to utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp/none.py to none.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp/neutron.py to neutron.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp/base.py to base.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp/dnsmasq.py to dnsmasq.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/migration.py to migration.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/api.py to api.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/env.py to env.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/3cb628139ea4_nodes_add_console_enabled.py to 3cb628139ea4_nodes_add_console_enabled.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/31baaf680d2b_add_node_instance_info.py to 31baaf680d2b_add_node_instance_info.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/2aac7e0872f6_add_deploy_templates.py to 2aac7e0872f6_add_deploy_templates.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/dbefd6bdaa2c_add_default_column_to_.py to dbefd6bdaa2c_add_default_column_to_.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/28c44432c9c3_add_node_description.py to 28c44432c9c3_add_node_description.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/21b331f883ef_add_provision_updated_at.py to 21b331f883ef_add_provision_updated_at.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/1e1d5ace7dc6_add_inspection_started_at_and_.py to 1e1d5ace7dc6_add_inspection_started_at_and_.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/c1846a214450_add_boot_mode_and_secure_boot.py to c1846a214450_add_boot_mode_and_secure_boot.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/48d6c242bb9b_add_node_tags.py to 48d6c242bb9b_add_node_tags.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/516faf1bb9b1_resizing_column_nodes_driver.py to 516faf1bb9b1_resizing_column_nodes_driver.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/cf1a80fdb352_add_node_network_data_field.py to cf1a80fdb352_add_node_network_data_field.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py to 487deb87cc9d_add_conductor_affinity_and_online.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/5674c57409b9_replace_nostate_with_available.py to 5674c57409b9_replace_nostate_with_available.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/789acc877671_add_raid_config.py to 789acc877671_add_raid_config.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/f190f9d00a11_add_node_owner.py to f190f9d00a11_add_node_owner.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/405cfe08f18d_add_rescue_interface_to_node.py to 405cfe08f18d_add_rescue_interface_to_node.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/c0455649680c_port_name.py to c0455649680c_port_name.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/ac00b586ab95_node_indexes.py to ac00b586ab95_node_indexes.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/82c315d60161_add_bios_settings.py to 82c315d60161_add_bios_settings.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/b2ad35726bb0_add_node_lessee.py to b2ad35726bb0_add_node_lessee.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/bcdd431ba0bf_add_fields_for_all_interfaces.py to bcdd431ba0bf_add_fields_for_all_interfaces.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/daa1ba02d98_add_volume_connectors_table.py to daa1ba02d98_add_volume_connectors_table.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/242cc6a923b3_add_node_maintenance_reason.py to 242cc6a923b3_add_node_maintenance_reason.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/4f399b21ae71_add_node_clean_step.py to 4f399b21ae71_add_node_clean_step.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/3bea56f25597_add_unique_constraint_to_instance_uuid.py to 3bea56f25597_add_unique_constraint_to_instance_uuid.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/60cf717201bc_add_standalone_ports_supported.py to 60cf717201bc_add_standalone_ports_supported.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/5ea1b0d310e_added_port_group_table_and_altered_ports.py to 5ea1b0d310e_added_port_group_table_and_altered_ports.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/e294876e8028_add_node_network_interface.py to e294876e8028_add_node_network_interface.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/dd67b91a1981_add_allocations_table.py to dd67b91a1981_add_allocations_table.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/3ae36a5f5131_add_logical_name.py to 3ae36a5f5131_add_logical_name.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/2bbd96b6ccb9_add_bios_fields_from_registry.py to 2bbd96b6ccb9_add_bios_fields_from_registry.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/cd2c80feb331_add_node_retired_field.py to cd2c80feb331_add_node_retired_field.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/b4130a7fc904_create_nodetraits_table.py to b4130a7fc904_create_nodetraits_table.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/93706939026c_add_node_protected_field.py to 93706939026c_add_node_protected_field.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/e918ff30eb42_resize_column_nodes_instance_info.py to e918ff30eb42_resize_column_nodes_instance_info.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py to 2581ebaf0cb2_initial_migration.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/fb3f10dd262e_add_fault_to_node_table.py to fb3f10dd262e_add_fault_to_node_table.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/1a59178ebdf6_add_volume_targets_table.py to 1a59178ebdf6_add_volume_targets_table.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/2fb93ffd2af1_increase_node_name_length.py to 2fb93ffd2af1_increase_node_name_length.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/f6fdb920c182_set_pxe_enabled_true.py to f6fdb920c182_set_pxe_enabled_true.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/b9117ac17882_add_node_deploy_step.py to b9117ac17882_add_node_deploy_step.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/bb59b63f55a_add_node_driver_internal_info.py to bb59b63f55a_add_node_driver_internal_info.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/9cbeefa3763f_add_port_is_smartnic.py to 9cbeefa3763f_add_port_is_smartnic.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/493d8f27f235_add_portgroup_configuration_fields.py to 493d8f27f235_add_portgroup_configuration_fields.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/1e15e7122cc9_add_extra_column_to_deploy_templates.py to 1e15e7122cc9_add_extra_column_to_deploy_templates.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/2d13bc3d6bba_add_bios_config_and_interface.py to 2d13bc3d6bba_add_bios_config_and_interface.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/3d86a077a3f2_add_port_physical_network.py to 3d86a077a3f2_add_port_physical_network.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/9ef41f07cb58_add_node_history_table.py to 9ef41f07cb58_add_node_history_table.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/10b163d4481e_add_port_portgroup_internal_info.py to 10b163d4481e_add_port_portgroup_internal_info.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/868cb606a74a_add_version_field_in_base_class.py to 868cb606a74a_add_version_field_in_base_class.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/664f85c2f622_add_conductor_group_to_nodes_conductors.py to 664f85c2f622_add_conductor_group_to_nodes_conductors.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/1d6951876d68_add_storage_interface_db_field_and_.py to 1d6951876d68_add_storage_interface_db_field_and_.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/2353895ecfae_add_conductor_hardware_interfaces_table.py to 2353895ecfae_add_conductor_hardware_interfaces_table.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/d2b036ae9378_add_automated_clean_field.py to d2b036ae9378_add_automated_clean_field.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/dd34e1f1303b_add_resource_class_to_node.py to dd34e1f1303b_add_resource_class_to_node.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/c14cef6dfedf_populate_node_network_interface.py to c14cef6dfedf_populate_node_network_interface.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/alembic/versions/ce6c4b3cf5a2_add_allocation_owner.py to ce6c4b3cf5a2_add_allocation_owner.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/migration.py to migration.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/models.py to models.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/api.py to api.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/db/sqlalchemy/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conf/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/modules/xclarity/power.py to power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/drivers/ilo.py to ilo.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd/test_dbsync.py to test_dbsync.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd/test_status.py to test_status.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd/test_conductor.py to test_conductor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/policy_fixture.py to policy_fixture.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/raid_constants.py to raid_constants.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_task_manager.py to test_task_manager.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_base_manager.py to test_base_manager.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_periodics.py to test_periodics.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_cleaning.py to test_cleaning.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_deployments.py to test_deployments.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_rpcapi.py to test_rpcapi.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_utils.py to test_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/mgr_utils.py to mgr_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_allocations.py to test_allocations.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_verify.py to test_verify.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_steps.py to test_steps.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_notification_utils.py to test_notification_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_manager.py to test_manager.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy/test_models.py to test_models.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy/test_types.py to test_types.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy/test_migrations.py to test_migrations.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy/test_api.py to test_api.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_volume_targets.py to test_volume_targets.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_node_history.py to test_node_history.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_ports.py to test_ports.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_volume_connectors.py to test_volume_connectors.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_bios_settings.py to test_bios_settings.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/base.py to base.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_chassis.py to test_chassis.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/utils.py to utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_nodes.py to test_nodes.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_deploy_templates.py to test_deploy_templates.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_node_traits.py to test_node_traits.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_api.py to test_api.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_allocations.py to test_allocations.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_node_tags.py to test_node_tags.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_conductor.py to test_conductor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_portgroups.py to test_portgroups.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conf/test_auth.py to test_auth.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_utils.py to test_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_irmc.py to test_irmc.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_xclarity.py to test_xclarity.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_redfish.py to test_redfish.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conf/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_audit.py to test_audit.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_root.py to test_root.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_portgroup.py to test_portgroup.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_root.py to test_root.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_volume_connector.py to test_volume_connector.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_collection.py to test_collection.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_allocation.py to test_allocation.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_event.py to test_event.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_chassis.py to test_chassis.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_node.py to test_node.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_versions.py to test_versions.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_port.py to test_port.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_driver.py to test_driver.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_ramdisk.py to test_ramdisk.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_deploy_template.py to test_deploy_template.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_utils.py to test_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_volume.py to test_volume.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_conductor.py to test_conductor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_notification_utils.py to test_notification_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_volume_target.py to test_volume_target.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/test_base.py to test_base.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/base.py to base.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_hooks.py to test_hooks.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_proxy_middleware.py to test_proxy_middleware.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/utils.py to utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_ospmiddleware.py to test_ospmiddleware.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_functions.py to test_functions.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_method.py to test_method.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_middleware.py to test_middleware.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_acl.py to test_acl.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_healthcheck.py to test_healthcheck.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_fake_hardware.py to test_fake_hardware.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_ipmi.py to test_ipmi.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_snmp.py to test_snmp.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/third_party_driver_mock_specs.py to third_party_driver_mock_specs.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_ibmc.py to test_ibmc.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_generic.py to test_generic.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_snmp.py to test_snmp.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_drac.py to test_drac.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_ilo.py to test_ilo.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_fake_hardware.py to test_fake_hardware.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_xclarity.py to test_xclarity.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/third_party_driver_mocks.py to third_party_driver_mocks.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_noop_mgmt.py to test_noop_mgmt.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_raid.py to test_raid.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_power.py to test_power.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_boot.py to test_boot.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_management.py to test_management.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_common.py to test_common.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_vendor.py to test_vendor.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_bios.py to test_bios.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_firmware_processor.py to test_firmware_processor.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_inspect.py to test_inspect.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_console.py to test_console.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_image_cache.py to test_image_cache.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_agent_client.py to test_agent_client.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_ramdisk.py to test_ramdisk.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_agent_power.py to test_agent_power.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_console_utils.py to test_console_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_raid.py to test_raid.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_power.py to test_power.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_boot.py to test_boot.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_utils.py to test_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_management.py to test_management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_redfish.py to test_redfish.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_base.py to test_base.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_utils.py to test_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/test_common.py to test_common.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/test_flat.py to test_flat.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/test_noop.py to test_noop.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/test_neutron.py to test_neutron.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_snmp.py to test_snmp.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_firmware_utils.py to test_firmware_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_inspect.py to test_inspect.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_vendor.py to test_vendor.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_bios.py to test_bios.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_inspect.py to test_inspect.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_raid.py to test_raid.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_management.py to test_management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_utils.py to test_utils.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_raid.py to test_raid.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_power.py to test_power.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_boot.py to test_boot.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_utils.py to test_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_management.py to test_management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_boot.py to test_boot.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/redfish/test_power.py to test_power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_pxe.py to test_pxe.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_noop_mgmt.py to test_noop_mgmt.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_common.py to test_common.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_periodic_task.py to test_periodic_task.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_bios.py to test_bios.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_job.py to test_job.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_periodic_task.py to test_periodic_task.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_inspect.py to test_inspect.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/utils.py to utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_pxe.py to test_pxe.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_noop.py to test_noop.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_ipxe.py to test_ipxe.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage/test_cinder.py to test_cinder.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage/test_external.py to test_external.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_bios.py to test_bios.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_raid.py to test_raid.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_management.py to test_management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_utils.py to test_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_boot.py to test_boot.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/drac/test_power.py to test_power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_inspector.py to test_inspector.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_deploy_utils.py to test_deploy_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_ipmitool.py to test_ipmitool.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_snmp.py to test_snmp.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc/test_raid.py to test_raid.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc/test_power.py to test_power.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc/test_utils.py to test_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc/test_management.py to test_management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_inspect_utils.py to test_inspect_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_agent_client.py to test_agent_client.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_common.py to test_common.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_inspect.py to test_inspect.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_vendor.py to test_vendor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_bios.py to test_bios.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_raid.py to test_raid.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_management.py to test_management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_firmware_processor.py to test_firmware_processor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_boot.py to test_boot.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_power.py to test_power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ilo/test_console.py to test_console.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc/base.py to base.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc/test_vendor.py to test_vendor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc/test_raid.py to test_raid.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc/test_management.py to test_management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc/test_utils.py to test_utils.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi/test_management.py to test_management.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py to test_intel_ipmi.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi/base.py to base.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_raid.py to test_raid.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_power.py to test_power.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_boot.py to test_boot.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_management.py to test_management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ibmc/test_power.py to test_power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_noop.py to test_noop.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_agent.py to test_agent.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_image_utils.py to test_image_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_boot_mode_utils.py to test_boot_mode_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_image_cache.py to test_image_cache.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_common.py to test_common.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_periodic_task.py to test_periodic_task.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_bios.py to test_bios.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_inspect.py to test_inspect.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_bios.py to test_bios.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_raid.py to test_raid.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_management.py to test_management.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_inspect_utils.py to test_inspect_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_boot.py to test_boot.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/irmc/test_power.py to test_power.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_agent_base.py to test_agent_base.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_image_utils.py to test_image_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_boot_mode_utils.py to test_boot_mode_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ansible/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ansible/test_deploy.py to test_deploy.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_inspector.py to test_inspector.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_console_utils.py to test_console_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_ramdisk.py to test_ramdisk.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/test_common.py to test_common.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/test_noop.py to test_noop.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/test_flat.py to test_flat.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/network/test_neutron.py to test_neutron.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity/test_power.py to test_power.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity/test_management.py to test_management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage/test_external.py to test_external.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/storage/test_cinder.py to test_cinder.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_agent_power.py to test_agent_power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_ipmitool.py to test_ipmitool.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ansible/test_deploy.py to test_deploy.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/ansible/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py to test_intel_ipmi.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi/base.py to base.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi/test_management.py to test_management.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/intel_ipmi/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_ipxe.py to test_ipxe.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity/test_common.py to test_common.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity/test_management.py to test_management.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/test_agent.py to test_agent.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_ipmi.py to test_ipmi.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_base.py to test_base.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_notification.py to test_notification.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_chassis.py to test_chassis.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/modules/xclarity/test_power.py to test_power.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_ilo.py to test_ilo.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_drac.py to test_drac.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/drivers/test_irmc.py to test_irmc.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/test_base.py to test_base.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/stubs.py to stubs.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_args.py to test_args.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_kickstart_utils.py to test_kickstart_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_network.py to test_network.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_molds.py to test_molds.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_fsm.py to test_fsm.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_rpc.py to test_rpc.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_rpc_service.py to test_rpc_service.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_states.py to test_states.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_neutron.py to test_neutron.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_raid.py to test_raid.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_wsgi_service.py to test_wsgi_service.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_context.py to test_context.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_image_service.py to test_image_service.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_utils.py to test_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_cinder.py to test_cinder.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_glance_service.py to test_glance_service.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_hash_ring.py to test_hash_ring.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_nova.py to test_nova.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_images.py to test_images.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_pxe_utils.py to test_pxe_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_release_mappings.py to test_release_mappings.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_keystone.py to test_keystone.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_swift.py to test_swift.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_driver_factory.py to test_driver_factory.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_policy.py to test_policy.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_portgroup.py to test_portgroup.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_node_history.py to test_node_history.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_volume_connector.py to test_volume_connector.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_conductor.py to test_conductor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_objects.py to test_objects.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_allocation.py to test_allocation.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_chassis.py to test_chassis.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_node.py to test_node.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_trait.py to test_trait.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_port.py to test_port.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_objects.py to test_objects.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_portgroup.py to test_portgroup.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/utils.py to utils.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_bios.py to test_bios.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_fields.py to test_fields.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_port.py to test_port.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_deployment.py to test_deployment.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_node_history.py to test_node_history.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_fields.py to test_fields.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_deploy_template.py to test_deploy_template.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_conductor.py to test_conductor.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_volume_target.py to test_volume_target.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/utils.py to utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/mgr_utils.py to mgr_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_task_manager.py to test_task_manager.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_utils.py to test_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_manager.py to test_manager.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_deployments.py to test_deployments.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_steps.py to test_steps.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_allocations.py to test_allocations.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_periodics.py to test_periodics.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_base_manager.py to test_base_manager.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_notification_utils.py to test_notification_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_cleaning.py to test_cleaning.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_rpcapi.py to test_rpcapi.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/conductor/test_verify.py to test_verify.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp/test_dnsmasq.py to test_dnsmasq.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_trait.py to test_trait.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/objects/test_notification.py to test_notification.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp/test_neutron.py to test_neutron.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp/test_factory.py to test_factory.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp/test_neutron.py to test_neutron.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/stubs.py to stubs.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/policy_fixture.py to policy_fixture.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_volume_targets.py to test_volume_targets.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_chassis.py to test_chassis.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_node_traits.py to test_node_traits.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_conductor.py to test_conductor.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_bios_settings.py to test_bios_settings.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_node_tags.py to test_node_tags.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_nodes.py to test_nodes.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/base.py to base.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_api.py to test_api.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_allocations.py to test_allocations.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_ports.py to test_ports.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_volume_connectors.py to test_volume_connectors.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_node_history.py to test_node_history.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_deploy_templates.py to test_deploy_templates.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/test_portgroups.py to test_portgroups.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/utils.py to utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy/test_models.py to test_models.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy/test_migrations.py to test_migrations.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy/test_types.py to test_types.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy/test_api.py to test_api.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/db/sqlalchemy/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd/test_conductor.py to test_conductor.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd/test_dbsync.py to test_dbsync.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd/test_status.py to test_status.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/cmd/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_fsm.py to test_fsm.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_hash_ring.py to test_hash_ring.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_image_service.py to test_image_service.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_raid.py to test_raid.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_release_mappings.py to test_release_mappings.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_utils.py to test_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_pxe_utils.py to test_pxe_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_swift.py to test_swift.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_keystone.py to test_keystone.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_network.py to test_network.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_cinder.py to test_cinder.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_kickstart_utils.py to test_kickstart_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_wsgi_service.py to test_wsgi_service.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_images.py to test_images.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_nova.py to test_nova.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_molds.py to test_molds.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_policy.py to test_policy.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_glance_service.py to test_glance_service.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_states.py to test_states.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_driver_factory.py to test_driver_factory.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_rpc_service.py to test_rpc_service.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_neutron.py to test_neutron.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_rpc.py to test_rpc.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_args.py to test_args.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/common/test_context.py to test_context.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/raid_constants.py to raid_constants.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/test_base.py to test_base.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_acl.py to test_acl.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_healthcheck.py to test_healthcheck.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_functions.py to test_functions.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_audit.py to test_audit.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/base.py to base.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_proxy_middleware.py to test_proxy_middleware.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_utils.py to test_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_chassis.py to test_chassis.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_volume_connector.py to test_volume_connector.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_conductor.py to test_conductor.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_event.py to test_event.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_ramdisk.py to test_ramdisk.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_allocation.py to test_allocation.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_node.py to test_node.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_volume.py to test_volume.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_collection.py to test_collection.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_port.py to test_port.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_portgroup.py to test_portgroup.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_notification_utils.py to test_notification_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_root.py to test_root.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_versions.py to test_versions.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_deploy_template.py to test_deploy_template.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_volume_target.py to test_volume_target.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/v1/test_driver.py to test_driver.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/controllers/test_base.py to test_base.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_root.py to test_root.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_middleware.py to test_middleware.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_hooks.py to test_hooks.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_ospmiddleware.py to test_ospmiddleware.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/test_method.py to test_method.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/api/utils.py to utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/unit/dhcp/test_dnsmasq.py to test_dnsmasq.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/base.py to base.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/functional/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/tests/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd/conductor.py to conductor.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd/singleprocess.py to singleprocess.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd/dbsync.py to dbsync.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd/api.py to api.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd/status.py to status.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/cmd/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/version.py to version.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/images.py to images.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/pxe_utils.py to pxe_utils.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/service.py to service.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/boot_devices.py to boot_devices.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/wsgi_service.py to wsgi_service.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/states.py to states.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/context.py to context.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/policy.py to policy.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/network.py to network.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/raid.py to raid.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/swift.py to swift.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/driver_factory.py to driver_factory.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/fsm.py to fsm.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/i18n.py to i18n.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/molds.py to molds.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/indicator_states.py to indicator_states.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/boot_devices.py to boot_devices.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/components.py to components.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/fsm.py to fsm.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/raid.py to raid.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/dhcp_factory.py to dhcp_factory.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/config.py to config.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/keystone.py to keystone.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/service.py to service.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/args.py to args.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/network.py to network.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/neutron.py to neutron.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/images.py to images.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/wsgi_service.py to wsgi_service.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/utils.py to utils.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/kickstart_utils.py to kickstart_utils.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/glance_service/service_utils.py to service_utils.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/glance_service/__init__.py to __init__.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/glance_service/image_service.py to image_service.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/hash_ring.py to hash_ring.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/pxe_utils.py to pxe_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/release_mappings.py to release_mappings.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/cinder.py to cinder.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/faults.py to faults.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/exception.py to exception.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/nova.py to nova.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/boot_modes.py to boot_modes.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/rpc.py to rpc.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/i18n.py to i18n.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/args.py to args.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/rpc_service.py to rpc_service.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/policy.py to policy.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/boot_modes.py to boot_modes.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/profiler.py to profiler.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/states.py to states.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/dhcp_factory.py to dhcp_factory.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/exception.py to exception.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/release_mappings.py to release_mappings.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/rpc_service.py to rpc_service.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/indicator_states.py to indicator_states.cpython-311.pyc byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/image_service.py to image_service.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/utils.py to utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/faults.py to faults.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/hacking/checks.py to checks.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/hacking/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware/json_ext.py to json_ext.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware/auth_public_routes.py to auth_public_routes.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware/parsable_error.py to parsable_error.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/middleware/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/functions.py to functions.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/wsgi.py to wsgi.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/method.py to method.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/config.py to config.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/base.py to base.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/node.py to node.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/conductor.py to conductor.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/collection.py to collection.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/chassis.py to chassis.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/volume_connector.py to volume_connector.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/event.py to event.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/notification_utils.py to notification_utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/ramdisk.py to ramdisk.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/port.py to port.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/volume.py to volume.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/driver.py to driver.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/allocation.py to allocation.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/bios.py to bios.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/versions.py to versions.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/volume_target.py to volume_target.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/portgroup.py to portgroup.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/deploy_template.py to deploy_template.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/v1/utils.py to utils.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/link.py to link.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/root.py to root.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/controllers/version.py to version.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/__init__.py to __init__.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/app.py to app.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/api/hooks.py to hooks.cpython-311.pyc -byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/version.py to version.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/hash_ring.py to hash_ring.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/keystone.py to keystone.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/rpc.py to rpc.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/swift.py to swift.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/components.py to components.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/cinder.py to cinder.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/common/driver_factory.py to driver_factory.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/volume_connector.py to volume_connector.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/indirection.py to indirection.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/base.py to base.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/deployment.py to deployment.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/bios.py to bios.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/chassis.py to chassis.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/conductor.py to conductor.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/notification.py to notification.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/trait.py to trait.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/port.py to port.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/fields.py to fields.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/deploy_template.py to deploy_template.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/node.py to node.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/volume_target.py to volume_target.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/node_history.py to node_history.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/allocation.py to allocation.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/objects/portgroup.py to portgroup.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp/dnsmasq.py to dnsmasq.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp/base.py to base.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp/neutron.py to neutron.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp/__init__.py to __init__.cpython-311.pyc +byte-compiling /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages/ironic/dhcp/none.py to none.cpython-311.pyc running install_data creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/etc creating /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/etc/ironic @@ -5401,372 +5437,412 @@ + PYTHON3S=disabled + TEST_PARALLEL_OPT=--parallel + TEST_SERIAL_OPT= -+ echo WARNING: --no-py2 is deprecated, and always on. ++ for i in $@ ++ case "${1}" in ++ echo 'WARNING: --no-py2 is deprecated, and always on.' WARNING: --no-py2 is deprecated, and always on. + shift -+ py3versions -vr ++ for i in $@ ++ case "${1}" in +++ py3versions -vr + PYTHON3S=3.11 -+ [ yes = no ] -+ [ no = yes ] -+ [ 3.11 = disabled ] -+ echo 3.11 -+ cut -d. -f1 ++ '[' yes = no ']' ++ '[' no = yes ']' ++ for pyvers in ${PYTHON3S} ++ '[' 3.11 = disabled ']' +++ echo 3.11 +++ cut -d. -f1 + PYMAJOR=3 -+ echo ===> Testing with python (python3) ++ echo '===> Testing with python (python3)' ===> Testing with python (python3) -+ pwd -+ [ -d /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages ] -+ [ -z ] -+ pwd -+ echo Implicitly adding PYTHONPATH=/build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages +++ pwd ++ '[' -d /build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages ']' ++ '[' -z '' ']' +++ pwd ++ echo 'Implicitly adding PYTHONPATH=/build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages' Implicitly adding PYTHONPATH=/build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages -+ pwd +++ pwd + export PYTHONPATH=/build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages -+ [ -e .stestr.conf ] -+ [ -x /usr/bin/python3-stestr ] ++ PYTHONPATH=/build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages ++ '[' -e .stestr.conf ']' ++ '[' -x /usr/bin/python3-stestr ']' + STESTR=stestr + rm -rf .stestr -+ PYTHON=python3.11 stestr run --parallel --subunit ironic\.tests\.unit\.(?!(.*api\.controllers\.v1\.test_chassis\.TestPost\.test_create_chassis_unicode_description.*|.*common\.test_glance_service\.TestGlanceImageService\.test_show_makes_datetimes.*|.*drivers\.modules\.irmc\.test_raid\.IRMCRaidConfigurationInternalMethodsTestCase\.test__commit_raid_config_with_logical_drives.*|.*drivers\.modules\.test_pxe\.PXEAnacondaDeployTestCase\.test_reboot_to_instance.*)) ++ PYTHON=python3.11 ++ stestr run --parallel --subunit 'ironic\.tests\.unit\.(?!(.*api\.controllers\.v1\.test_chassis\.TestPost\.test_create_chassis_unicode_description.*|.*common\.test_glance_service\.TestGlanceImageService\.test_show_makes_datetimes.*|.*drivers\.modules\.irmc\.test_raid\.IRMCRaidConfigurationInternalMethodsTestCase\.test__commit_raid_config_with_logical_drives.*|.*drivers\.modules\.test_pxe\.PXEAnacondaDeployTestCase\.test_reboot_to_instance.*))' + subunit2pyunit -2024-01-06 01:30:20.265 28133 INFO oslo_utils.netutils [-] Could not determine default network interface, using 127.0.0.1 for IPv4 address -2024-01-06 01:30:20.325 28137 INFO oslo_utils.netutils [-] Could not determine default network interface, using 127.0.0.1 for IPv4 address -2024-01-06 01:30:20.321 28135 INFO oslo_utils.netutils [-] Could not determine default network interface, using 127.0.0.1 for IPv4 address -2024-01-06 01:30:20.340 28141 INFO oslo_utils.netutils [-] Could not determine default network interface, using 127.0.0.1 for IPv4 address -INFO [alembic.runtime.migration] Context impl SQLiteImpl. -INFO [alembic.runtime.migration] Will assume non-transactional DDL. +2024-01-07 04:09:58.969 15587 INFO oslo_utils.netutils [-] Could not determine default network interface, using 127.0.0.1 for IPv4 address +2024-01-07 04:09:59.054 15589 INFO oslo_utils.netutils [-] Could not determine default network interface, using 127.0.0.1 for IPv4 address +2024-01-07 04:09:59.083 15590 INFO oslo_utils.netutils [-] Could not determine default network interface, using 127.0.0.1 for IPv4 address +2024-01-07 04:09:59.180 15588 INFO oslo_utils.netutils [-] Could not determine default network interface, using 127.0.0.1 for IPv4 address INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running stamp_revision -> 9ef41f07cb58 -INFO [alembic.runtime.migration] Running stamp_revision -> 9ef41f07cb58 +2024-01-07 04:10:14.886 15590 INFO alembic.runtime.migration [None req-7639ac7c-80c2-446e-9110-436e409d50b2 - - - - - -] Context impl SQLiteImpl. +2024-01-07 04:10:14.888 15590 INFO alembic.runtime.migration [None req-7639ac7c-80c2-446e-9110-436e409d50b2 - - - - - -] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running stamp_revision -> 9ef41f07cb58 -2024-01-06 01:31:13.661 28135 INFO alembic.runtime.migration [None req-ca2eab51-4279-461b-aca1-502f64a397ed - - - - - -] Context impl SQLiteImpl. -2024-01-06 01:31:13.672 28135 INFO alembic.runtime.migration [None req-ca2eab51-4279-461b-aca1-502f64a397ed - - - - - -] Will assume non-transactional DDL. -INFO [alembic.runtime.migration] Context impl SQLiteImpl. -INFO [alembic.runtime.migration] Will assume non-transactional DDL. -2024-01-06 01:31:14.213 28137 INFO alembic.runtime.migration [None req-c879aef5-a3ce-4463-a76a-760311f82da5 - - - - - -] Context impl SQLiteImpl. -2024-01-06 01:31:14.217 28137 INFO alembic.runtime.migration [None req-c879aef5-a3ce-4463-a76a-760311f82da5 - - - - - -] Will assume non-transactional DDL. -2024-01-06 01:31:14.573 28141 INFO alembic.runtime.migration [None req-e06d0777-e6cb-419f-bd49-e690bf87b99e - - - - - -] Context impl SQLiteImpl. -2024-01-06 01:31:14.583 28141 INFO alembic.runtime.migration [None req-e06d0777-e6cb-419f-bd49-e690bf87b99e - - - - - -] Will assume non-transactional DDL. +2024-01-07 04:10:15.259 15589 INFO alembic.runtime.migration [None req-5a097e8d-d8f0-42fc-a22b-ae2204acf722 - - - - - -] Context impl SQLiteImpl. +2024-01-07 04:10:15.261 15589 INFO alembic.runtime.migration [None req-5a097e8d-d8f0-42fc-a22b-ae2204acf722 - - - - - -] Will assume non-transactional DDL. +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_id +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_id ... ok ironic.tests.unit.api.controllers.test_base.TestVersion.test_equals ironic.tests.unit.api.controllers.test_base.TestVersion.test_equals ... ok ironic.tests.unit.api.controllers.test_base.TestVersion.test_greaterthan ironic.tests.unit.api.controllers.test_base.TestVersion.test_greaterthan ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis -ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name ... ok ironic.tests.unit.api.controllers.test_base.TestVersion.test_init ironic.tests.unit.api.controllers.test_base.TestVersion.test_init ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name_not_existed +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name_not_existed ... ok ironic.tests.unit.api.controllers.test_base.TestVersion.test_lessthan ironic.tests.unit.api.controllers.test_base.TestVersion.test_lessthan ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis_not_found -ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill ... ok ironic.tests.unit.api.controllers.test_base.TestVersion.test_not_equals ironic.tests.unit.api.controllers.test_base.TestVersion.test_not_equals ... ok -2024-01-06 01:31:16.448 28133 INFO alembic.runtime.migration [None req-2809500c-858c-48c5-96ae-515e26db2ac3 - - - - - -] Context impl SQLiteImpl. -2024-01-06 01:31:16.458 28133 INFO alembic.runtime.migration [None req-2809500c-858c-48c5-96ae-515e26db2ac3 - - - - - -] Will assume non-transactional DDL. -ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis_with_node -ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis_with_node ... ok ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_headers_bad_length ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_headers_bad_length ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_nodes_subresource -ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_nodes_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name_with_json +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name_with_json ... ok ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_headers_latest ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_headers_latest ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_copy_instance_uuid -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_copy_instance_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name ... ok ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_headers_ok ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_headers_ok ... ok -INFO [alembic.runtime.migration] Running stamp_revision -> 9ef41f07cb58 -ironic.tests.unit.api.controllers.test_base.TestBase.test_api_setup -ironic.tests.unit.api.controllers.test_base.TestBase.test_api_setup ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_node_not_found -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_node_not_found ... ok ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_no_header ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_no_header ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name_non_existent -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name_non_existent ... ok -ironic.tests.unit.api.controllers.test_base.TestBase.test_bad_uri -ironic.tests.unit.api.controllers.test_base.TestBase.test_bad_uri ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node ... ok ironic.tests.unit.api.controllers.test_base.TestVersion.test_repr ironic.tests.unit.api.controllers.test_base.TestVersion.test_repr ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_not_allowed -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name_with_json -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name_with_json ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node_invalid_api_version ... ok +2024-01-07 04:10:16.384 15587 INFO alembic.runtime.migration [None req-6c771d87-503b-4943-bd79-28c8154eb250 - - - - - -] Context impl SQLiteImpl. +2024-01-07 04:10:16.386 15587 INFO alembic.runtime.migration [None req-6c771d87-503b-4943-bd79-28c8154eb250 - - - - - -] Will assume non-transactional DDL. ironic.tests.unit.api.controllers.test_base.TestVersion.test_repr_with_strings ironic.tests.unit.api.controllers.test_base.TestVersion.test_repr_with_strings ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_with_name -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_with_name ... ok +INFO [alembic.runtime.migration] Context impl SQLiteImpl. +INFO [alembic.runtime.migration] Will assume non-transactional DDL. +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node_not_existed +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node_not_existed ... ok +2024-01-07 04:10:16.503 15588 INFO alembic.runtime.migration [None req-7430b39d-d833-4dda-acee-20d32f56fd36 - - - - - -] Context impl SQLiteImpl. +2024-01-07 04:10:16.507 15588 INFO alembic.runtime.migration [None req-7430b39d-d833-4dda-acee-20d32f56fd36 - - - - - -] Will assume non-transactional DDL. +INFO [alembic.runtime.migration] Running stamp_revision -> 9ef41f07cb58 +INFO [alembic.runtime.migration] Context impl SQLiteImpl. +ironic.tests.unit.api.controllers.test_base.TestBase.test_api_setup +ironic.tests.unit.api.controllers.test_base.TestBase.test_api_setup ... ok +INFO [alembic.runtime.migration] Will assume non-transactional DDL. +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_api_version ... ok +INFO [alembic.runtime.migration] Running stamp_revision -> 9ef41f07cb58 +ironic.tests.unit.api.controllers.test_base.TestBase.test_bad_uri +ironic.tests.unit.api.controllers.test_base.TestBase.test_bad_uri ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_api_version_without_check +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_api_version_without_check ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_forbid_owner_proj_mismatch ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_forbid_owner_proj_mismatch ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid_with_json -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid_with_json ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_without_resource_class -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_without_resource_class ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_node +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_node ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_copy_instance_uuid +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_copy_instance_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_forbidden ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_id -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_id ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_node_locked +ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_node_locked ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_node_not_found +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_node_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add_multi +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add_multi ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_forbidden_no_project ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_forbidden_no_project ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_old_api_version -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name ... ok -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '277b0eec-4afa-4e9c-8b41-48896fd366a6', 'owner': None, 'node': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add_non_existent +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add_non_existent ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_not_allowed +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links_custom_fields +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_non_admin +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_non_admin ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_multi +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_multi ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_with_name +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_with_name ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links_default_limit +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links_default_limit ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_non_existent_property_fail +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_non_existent_property_fail ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_without_resource_class +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_without_resource_class ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_null_field +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_null_field ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_singular +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_singular ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_against_single +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_against_single ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_present +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_present ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_by_node_invalid_node +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_by_node_invalid_node ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_by_node_resource_not_existed +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_by_node_resource_not_existed ... ok +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'ae2695c9-d439-4dc5-b2ca-6e15bcf76b9f', 'owner': None, 'node': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/277b0eec-4afa-4e9c-8b41-48896fd366a6 -Openstack-Request-Id: req-1bd9a58c-9ac6-48ef-a58c-42cb0629aa3c +Location: http://localhost/v1/allocations/ae2695c9-d439-4dc5-b2ca-6e15bcf76b9f +Openstack-Request-Id: req-0b25b4bf-9494-4144-9c72-96158650cb75 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "277b0eec-4afa-4e9c-8b41-48896fd366a6", "created_at": "2024-01-06T13:31:16.125993+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/277b0eec-4afa-4e9c-8b41-48896fd366a6", "rel": "self"}, {"href": "http://localhost/allocations/277b0eec-4afa-4e9c-8b41-48896fd366a6", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -GET: /v1/allocations/277b0eec-4afa-4e9c-8b41-48896fd366a6 {} -GOT:{'uuid': '277b0eec-4afa-4e9c-8b41-48896fd366a6', 'created_at': '2024-01-06T13:31:16.125993+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/277b0eec-4afa-4e9c-8b41-48896fd366a6', 'rel': 'self'}, {'href': 'http://localhost/allocations/277b0eec-4afa-4e9c-8b41-48896fd366a6', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +{"uuid": "ae2695c9-d439-4dc5-b2ca-6e15bcf76b9f", "created_at": "2024-01-06T14:10:16.672809+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/ae2695c9-d439-4dc5-b2ca-6e15bcf76b9f", "rel": "self"}, {"href": "http://localhost/allocations/ae2695c9-d439-4dc5-b2ca-6e15bcf76b9f", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +GET: /v1/allocations/ae2695c9-d439-4dc5-b2ca-6e15bcf76b9f {} +GOT:{'uuid': 'ae2695c9-d439-4dc5-b2ca-6e15bcf76b9f', 'created_at': '2024-01-06T14:10:16.672809+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/ae2695c9-d439-4dc5-b2ca-6e15bcf76b9f', 'rel': 'self'}, {'href': 'http://localhost/allocations/ae2695c9-d439-4dc5-b2ca-6e15bcf76b9f', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} POST: /v1/allocations {'node': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/a019410e-058f-4dee-a228-b869a39463e8 -Openstack-Request-Id: req-155b6e79-c8e5-4d75-9698-d9b2e07ea6c2 +Location: http://localhost/v1/allocations/811f6d18-f141-4caf-9a3b-4359bc5d2cda +Openstack-Request-Id: req-d244748e-9825-47d6-b184-f69fc394c5c1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "a019410e-058f-4dee-a228-b869a39463e8", "created_at": "2024-01-06T13:31:16.912476+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/a019410e-058f-4dee-a228-b869a39463e8", "rel": "self"}, {"href": "http://localhost/allocations/a019410e-058f-4dee-a228-b869a39463e8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -GET: /v1/allocations/a019410e-058f-4dee-a228-b869a39463e8 {} -GOT:{'uuid': 'a019410e-058f-4dee-a228-b869a39463e8', 'created_at': '2024-01-06T13:31:16.912476+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'bm-super', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/a019410e-058f-4dee-a228-b869a39463e8', 'rel': 'self'}, {'href': 'http://localhost/allocations/a019410e-058f-4dee-a228-b869a39463e8', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '3e36b0f3-4985-4983-badc-3a75e7cca5ca', 'owner': None, 'node': '787da1d3-4eb9-4aa0-98cb-b561e1c91689'} +{"uuid": "811f6d18-f141-4caf-9a3b-4359bc5d2cda", "created_at": "2024-01-06T14:10:16.889827+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/811f6d18-f141-4caf-9a3b-4359bc5d2cda", "rel": "self"}, {"href": "http://localhost/allocations/811f6d18-f141-4caf-9a3b-4359bc5d2cda", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +GET: /v1/allocations/811f6d18-f141-4caf-9a3b-4359bc5d2cda {} +GOT:{'uuid': '811f6d18-f141-4caf-9a3b-4359bc5d2cda', 'created_at': '2024-01-06T14:10:16.889827+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'bm-super', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/811f6d18-f141-4caf-9a3b-4359bc5d2cda', 'rel': 'self'}, {'href': 'http://localhost/allocations/811f6d18-f141-4caf-9a3b-4359bc5d2cda', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '20a0c65c-d09c-41a1-8bcc-77f50958c997', 'owner': None, 'node': '25507c13-ede4-4ac6-85cf-2d671f8aa087'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-9ca12f48-e07b-447b-b355-f0733ca47418 +Openstack-Request-Id: req-81e0db35-dcb2-4955-98e6-d359b9ad6f81 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 787da1d3-4eb9-4aa0-98cb-b561e1c91689 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 25507c13-ede4-4ac6-85cf-2d671f8aa087 could not be found.\", \"debuginfo\": null}"} POST: /v1/allocations {'node': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-791d77fe-3ae7-4d25-b418-73813f2565ca +Openstack-Request-Id: req-f0ef9366-4335-4ac1-80c1-e42ac510cce4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '0d233bf3-553f-4264-95d1-dcc83b531e42', 'owner': None, 'node': 'backfill-me'} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '03505f04-a6c1-46f2-b4df-49f672d67c31', 'owner': None, 'node': 'backfill-me'} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/0d233bf3-553f-4264-95d1-dcc83b531e42 -Openstack-Request-Id: req-2905c81e-7ea3-4f8c-8c80-c01680d2e7bb +Location: http://localhost/v1/allocations/03505f04-a6c1-46f2-b4df-49f672d67c31 +Openstack-Request-Id: req-f5cea33e-f8e6-424d-a50a-e0a4a1c34564 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "0d233bf3-553f-4264-95d1-dcc83b531e42", "created_at": "2024-01-06T13:31:18.426904+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/0d233bf3-553f-4264-95d1-dcc83b531e42", "rel": "self"}, {"href": "http://localhost/allocations/0d233bf3-553f-4264-95d1-dcc83b531e42", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -GET: /v1/allocations/0d233bf3-553f-4264-95d1-dcc83b531e42 {} -GOT:{'uuid': '0d233bf3-553f-4264-95d1-dcc83b531e42', 'created_at': '2024-01-06T13:31:18.426904+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/0d233bf3-553f-4264-95d1-dcc83b531e42', 'rel': 'self'}, {'href': 'http://localhost/allocations/0d233bf3-553f-4264-95d1-dcc83b531e42', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +{"uuid": "03505f04-a6c1-46f2-b4df-49f672d67c31", "created_at": "2024-01-06T14:10:17.407608+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/03505f04-a6c1-46f2-b4df-49f672d67c31", "rel": "self"}, {"href": "http://localhost/allocations/03505f04-a6c1-46f2-b4df-49f672d67c31", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +GET: /v1/allocations/03505f04-a6c1-46f2-b4df-49f672d67c31 {} +GOT:{'uuid': '03505f04-a6c1-46f2-b4df-49f672d67c31', 'created_at': '2024-01-06T14:10:17.407608+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/03505f04-a6c1-46f2-b4df-49f672d67c31', 'rel': 'self'}, {'href': 'http://localhost/allocations/03505f04-a6c1-46f2-b4df-49f672d67c31', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} POST: /v1/allocations {'node': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/236f584f-7259-4244-9bcd-c3aab2f044ce -Openstack-Request-Id: req-532f511a-1c36-4109-af43-36d10e241615 +Location: http://localhost/v1/allocations/6fa88238-ab51-4a52-8109-c2376866bef0 +Openstack-Request-Id: req-eba1c6d1-bb21-408e-8dc3-c7afe2d9d047 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "236f584f-7259-4244-9bcd-c3aab2f044ce", "created_at": "2024-01-06T13:31:18.885442+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/236f584f-7259-4244-9bcd-c3aab2f044ce", "rel": "self"}, {"href": "http://localhost/allocations/236f584f-7259-4244-9bcd-c3aab2f044ce", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -GET: /v1/allocations/236f584f-7259-4244-9bcd-c3aab2f044ce {} -GOT:{'uuid': '236f584f-7259-4244-9bcd-c3aab2f044ce', 'created_at': '2024-01-06T13:31:18.885442+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'bm-super', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/236f584f-7259-4244-9bcd-c3aab2f044ce', 'rel': 'self'}, {'href': 'http://localhost/allocations/236f584f-7259-4244-9bcd-c3aab2f044ce', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '4a18b1c5-ba19-454d-ba90-ee755c5704bb', 'owner': None} +{"uuid": "6fa88238-ab51-4a52-8109-c2376866bef0", "created_at": "2024-01-06T14:10:17.600286+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/6fa88238-ab51-4a52-8109-c2376866bef0", "rel": "self"}, {"href": "http://localhost/allocations/6fa88238-ab51-4a52-8109-c2376866bef0", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +GET: /v1/allocations/6fa88238-ab51-4a52-8109-c2376866bef0 {} +GOT:{'uuid': '6fa88238-ab51-4a52-8109-c2376866bef0', 'created_at': '2024-01-06T14:10:17.600286+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'bm-super', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/6fa88238-ab51-4a52-8109-c2376866bef0', 'rel': 'self'}, {'href': 'http://localhost/allocations/6fa88238-ab51-4a52-8109-c2376866bef0', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'be900142-6732-4cbd-880c-63fe2cbe64c9', 'owner': None} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name_not_existed -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name_not_existed ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_candidate_node_invalid ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_candidate_node_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_multi -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_multi ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_non_admin -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_non_admin ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_root_non_existent -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_root_non_existent ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_candidate_node_not_found ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_candidate_node_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name_with_json -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name_with_json ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_too_high_index_step_fail -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_too_high_index_step_fail ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_doesnt_contain_id -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_doesnt_contain_id ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_foo -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_foo ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_null_field -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_null_field ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_error -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_error ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_present -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_present ... ok -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GOT:Response: 204 No Content -Openstack-Request-Id: req-e2f9f742-2418-4644-8b9f-7b8f7e526671 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 - -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +GET: /v1/bad/path {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-02fc145a-eb96-4cb8-b578-a1adf592aa4c +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +PATCH: /v1/allocations/e3209294-0f7a-419d-827b-81c3fb4db7b0 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-a426c4e6-3507-419a-a58c-4a1b276fa1d1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/chassis/d2742522-a01b-4769-9eb6-247d74c59ad2 -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "e3209294-0f7a-419d-827b-81c3fb4db7b0", "created_at": "2024-01-06T14:10:16.835712+00:00", "updated_at": "2024-01-06T14:10:16.906648+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/e3209294-0f7a-419d-827b-81c3fb4db7b0", "rel": "self"}, {"href": "http://localhost/allocations/e3209294-0f7a-419d-827b-81c3fb4db7b0", "rel": "bookmark"}], "node_uuid": null} +PATCH: /v1/allocations/a7270bb2-3bb1-4539-9f22-18523bd30dbf [{'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-17e7daaf-b810-4764-b063-03ef3c8bf5c8 +Openstack-Request-Id: req-3c4cc2a0-611d-4d50-8795-6ac9f0ba1ce3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis d2742522-a01b-4769-9eb6-247d74c59ad2 could not be found.\", \"debuginfo\": null}"} -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "a7270bb2-3bb1-4539-9f22-18523bd30dbf", "created_at": "2024-01-06T14:10:17.018054+00:00", "updated_at": "2024-01-06T14:10:17.071377+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/a7270bb2-3bb1-4539-9f22-18523bd30dbf", "rel": "self"}, {"href": "http://localhost/allocations/a7270bb2-3bb1-4539-9f22-18523bd30dbf", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/a7270bb2-3bb1-4539-9f22-18523bd30dbf {} +GOT:{'uuid': 'a7270bb2-3bb1-4539-9f22-18523bd30dbf', 'created_at': '2024-01-06T14:10:17.018054+00:00', 'updated_at': '2024-01-06T14:10:17.071377+00:00', 'candidate_nodes': [], 'extra': {'foo1': 'bar1', 'foo2': 'bar2'}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/a7270bb2-3bb1-4539-9f22-18523bd30dbf', 'rel': 'self'}, {'href': 'http://localhost/allocations/a7270bb2-3bb1-4539-9f22-18523bd30dbf', 'rel': 'bookmark'}], 'node_uuid': None} +PATCH: /v1/allocations/e7c76536-06a6-44ee-b908-d93f9b3fdc6a [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-971d9710-14e7-42f1-a974-4b669578bc57 +Openstack-Request-Id: req-169d8849-8fdd-49a0-9ed0-c78c7dce03a1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes -GOT:Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: name, extra\", \"debuginfo\": null}"} +PATCH: /v1/allocations/b3feb115-09f6-4010-8345-91533db4f2b2 [{'path': '/extra/foo2', 'op': 'remove'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1f234063-9424-4a03-90a4-bc320045d4db +Openstack-Request-Id: req-e3dd4793-ae98-45a2-8f56-68b9f7adfd48 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/deploy_templates/CUSTOM_DT1 -GOT:Response: 204 No Content -Openstack-Request-Id: req-ffae2970-166a-4fbb-b396-2d6e78e89b5b +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "b3feb115-09f6-4010-8345-91533db4f2b2", "created_at": "2024-01-06T14:10:17.287709+00:00", "updated_at": "2024-01-06T14:10:17.343518+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/b3feb115-09f6-4010-8345-91533db4f2b2", "rel": "self"}, {"href": "http://localhost/allocations/b3feb115-09f6-4010-8345-91533db4f2b2", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/b3feb115-09f6-4010-8345-91533db4f2b2 {} +GOT:{'uuid': 'b3feb115-09f6-4010-8345-91533db4f2b2', 'created_at': '2024-01-06T14:10:17.287709+00:00', 'updated_at': '2024-01-06T14:10:17.343518+00:00', 'candidate_nodes': [], 'extra': {'foo1': 'bar1', 'foo3': 'bar3'}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/b3feb115-09f6-4010-8345-91533db4f2b2', 'rel': 'self'}, {'href': 'http://localhost/allocations/b3feb115-09f6-4010-8345-91533db4f2b2', 'rel': 'bookmark'}], 'node_uuid': None} +PATCH: /v1/allocations/b3feb115-09f6-4010-8345-91533db4f2b2 [{'path': '/extra', 'op': 'remove'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-49efbfb6-efa4-465a-b7d6-8b5f18a07ed7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -DELETE: /v1/deploy_templates/blah -GOT:Response: 404 Not Found +{"uuid": "b3feb115-09f6-4010-8345-91533db4f2b2", "created_at": "2024-01-06T14:10:17.287709+00:00", "updated_at": "2024-01-06T14:10:17.409718+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/b3feb115-09f6-4010-8345-91533db4f2b2", "rel": "self"}, {"href": "http://localhost/allocations/b3feb115-09f6-4010-8345-91533db4f2b2", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/b3feb115-09f6-4010-8345-91533db4f2b2 {} +GOT:{'uuid': 'b3feb115-09f6-4010-8345-91533db4f2b2', 'created_at': '2024-01-06T14:10:17.287709+00:00', 'updated_at': '2024-01-06T14:10:17.409718+00:00', 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/b3feb115-09f6-4010-8345-91533db4f2b2', 'rel': 'self'}, {'href': 'http://localhost/allocations/b3feb115-09f6-4010-8345-91533db4f2b2', 'rel': 'bookmark'}], 'node_uuid': None} +PATCH: /v1/allocations/61b6af60-beb5-4b1f-a6b6-2416f8dce539 [{'path': '/extra/non-existent', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-95441f21-0a35-4700-9474-a44a949f9832 +Openstack-Request-Id: req-c801e481-bc50-4d34-a7d4-d81f704523fb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template blah could not be found.\", \"debuginfo\": null}"} -DELETE: /v1/deploy_templates/CUSTOM_DT1.json +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove a non-existent object 'non-existent'\", \"debuginfo\": null}"} +PATCH: /v1/allocations/50e963b0-59ff-4a89-af66-02a35699089a [{'path': '/extra/a', 'op': 'remove'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-e0d8b6c4-a74a-416f-828f-221a7e074eb6 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "50e963b0-59ff-4a89-af66-02a35699089a", "created_at": "2024-01-06T14:10:17.639067+00:00", "updated_at": "2024-01-06T14:10:17.693102+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/50e963b0-59ff-4a89-af66-02a35699089a", "rel": "self"}, {"href": "http://localhost/allocations/50e963b0-59ff-4a89-af66-02a35699089a", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/50e963b0-59ff-4a89-af66-02a35699089a {} +GOT:{'uuid': '50e963b0-59ff-4a89-af66-02a35699089a', 'created_at': '2024-01-06T14:10:17.639067+00:00', 'updated_at': '2024-01-06T14:10:17.693102+00:00', 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/50e963b0-59ff-4a89-af66-02a35699089a', 'rel': 'self'}, {'href': 'http://localhost/allocations/50e963b0-59ff-4a89-af66-02a35699089a', 'rel': 'bookmark'}], 'node_uuid': None} +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_uuid +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_doesnt_contain_id +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_doesnt_contain_id ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_invalid_name +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_invalid_name ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_multi +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_multi ... ok +DELETE: /v1/allocations/39b777a1-a930-4dd2-a8a4-379d8a684752 GOT:Response: 204 No Content -Openstack-Request-Id: req-21720aac-9163-45b4-80cb-8ad702e06c0f +Openstack-Request-Id: req-94681590-9923-4649-a094-dc02a761f055 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -DELETE: /v1/deploy_templates/27381f98-6520-4091-83b0-ee30157ccc2b +DELETE: /v1/allocations/alloc1 GOT:Response: 204 No Content -Openstack-Request-Id: req-4ee0fa60-06eb-4bcb-9f7a-a811f3304153 +Openstack-Request-Id: req-e1608ae9-4f63-4cc0-9001-c450fdd8cc74 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -DELETE: /v1/deploy_templates/b8cd8355-0eb4-40f7-8998-e6404bcebd06.json +DELETE: /v1/allocations/blah +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-698ca003-03ef-4f85-9a3f-a1ffb2c8592a +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation blah could not be found.\", \"debuginfo\": null}"} +DELETE: /v1/allocations/alloc1.json GOT:Response: 204 No Content -Openstack-Request-Id: req-caad3356-dbcc-417b-b9ef-ecc4c1c8e8b2 +Openstack-Request-Id: req-8719f781-6ea6-4515-a995-be3c388ad001 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -DELETE: /v1/deploy_templates/7c1ded14-dd7e-4176-a511-67b98e68b494 -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\"}"} -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\"}"} -PATCH: /v1/deploy_templates/aadc9fe2-5645-4e4b-a046-268303919136 [{'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-a6d91705-ff91-42e9-958c-6e125ffe9f09 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation +GOT:Response: 204 No Content +Openstack-Request-Id: req-8162da84-db26-457f-aec0-0b4506fbd6d8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "aadc9fe2-5645-4e4b-a046-268303919136", "created_at": "2024-01-06T13:31:19.777264+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/aadc9fe2-5645-4e4b-a046-268303919136", "rel": "self"}, {"href": "http://localhost/deploy_templates/aadc9fe2-5645-4e4b-a046-268303919136", "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}]} -PATCH: /v1/deploy_templates/d23486c6-600d-4120-9662-3296fd3f194b [{'path': '/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 400 Bad Request + +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\": \"\"}"} +DELETE: /v1/nodes/52298b11-d5c7-4554-8b09-3eccde7fa785/allocation +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d83ef40f-b2f7-49dd-ba5f-a3c02a69a7bd +Openstack-Request-Id: req-f319e470-aa17-4ce6-aff3-f9c91b99e32a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: extra, name, steps, description\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/2589e697-4240-49ff-a6e6-f098c494bbcf [{'path': '/steps/2', 'op': 'add', 'value': {'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'priority': 42}}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation for node 52298b11-d5c7-4554-8b09-3eccde7fa785 was not found\", \"debuginfo\": null}"} +DELETE: /v1/allocations/32d2cbad-8766-4ce2-8b17-9ce4e1f0aa6a +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\"}"} +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\"}"} +DELETE: /v1/nodes/370f8384-3a82-429a-a44f-87a57d67b169/allocation +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d5e4a034-0d91-4ce2-bfde-044bbc571b41 +Openstack-Request-Id: req-07d565d9-52c4-45f1-a9c4-f4c5e13157da X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/deploy_templates/e9cd0cfb-a1eb-45c8-b5da-6db700a26aa5 [{'path': '/foo', 'op': 'remove'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 370f8384-3a82-429a-a44f-87a57d67b169 could not be found.\", \"debuginfo\": null}"} +DELETE: /v1/allocations/20f204b1-10e9-45e1-a62c-145b7081b732 +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-e2528f81-a40d-4dc4-97b9-554bc3e8c145 +Openstack-Request-Id: req-b7a9d341-5743-4f65-8c3e-01e3a912bdab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: extra, name, steps, description\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/db0b32f9-5941-4a56-8dc6-7bb6af88f24e [{'path': '/steps/1', 'op': 'remove'}] -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_multi -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_multi ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_by_node_invalid_node -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_by_node_invalid_node ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node_not_existed -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node_not_existed ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_generate_uuid -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_generate_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_name -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_name ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_by_node_resource_not_existed -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_by_node_resource_not_existed ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_property_fail -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_property_fail ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_api_version_without_check -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_api_version_without_check ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_candidate_node_format -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_candidate_node_format ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_step_fail -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_step_fail ... ok -GET: /v1/bad/path {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} +GET: /v1/chassis/?limit=3 {} +GOT:{'chassis': [{'uuid': 'a5049902-d9c8-4fa9-8417-046b63fe08d9', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/a5049902-d9c8-4fa9-8417-046b63fe08d9', 'rel': 'self'}, {'href': 'http://localhost/chassis/a5049902-d9c8-4fa9-8417-046b63fe08d9', 'rel': 'bookmark'}]}, {'uuid': 'd6db9dce-5255-400a-a576-a9764b6f591e', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/d6db9dce-5255-400a-a576-a9764b6f591e', 'rel': 'self'}, {'href': 'http://localhost/chassis/d6db9dce-5255-400a-a576-a9764b6f591e', 'rel': 'bookmark'}]}, {'uuid': '0e204ec7-f160-4719-97be-642f1243b1cd', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/0e204ec7-f160-4719-97be-642f1243b1cd', 'rel': 'self'}, {'href': 'http://localhost/chassis/0e204ec7-f160-4719-97be-642f1243b1cd', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=uuid,description&limit=3&marker=0e204ec7-f160-4719-97be-642f1243b1cd'} +GET: /v1/chassis?fields=extra,uuid {} +GOT:{'chassis': [{'uuid': '33f95b15-f43e-4597-9425-8e2cc3586519', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/33f95b15-f43e-4597-9425-8e2cc3586519', 'rel': 'self'}, {'href': 'http://localhost/chassis/33f95b15-f43e-4597-9425-8e2cc3586519', 'rel': 'bookmark'}]}, {'uuid': '50749474-7111-4b50-86b3-306fb0c5c83d', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/50749474-7111-4b50-86b3-306fb0c5c83d', 'rel': 'self'}, {'href': 'http://localhost/chassis/50749474-7111-4b50-86b3-306fb0c5c83d', 'rel': 'bookmark'}]}, {'uuid': '2224136a-90eb-4879-b0fc-00b7fc5d86a8', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/2224136a-90eb-4879-b0fc-00b7fc5d86a8', 'rel': 'self'}, {'href': 'http://localhost/chassis/2224136a-90eb-4879-b0fc-00b7fc5d86a8', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=extra,uuid&limit=3&marker=2224136a-90eb-4879-b0fc-00b7fc5d86a8'} +GET: /v1/chassis {} +GOT:{'chassis': [{'uuid': '14697fa0-7f6d-4eba-b008-0f02090d19ad', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/14697fa0-7f6d-4eba-b008-0f02090d19ad', 'rel': 'self'}, {'href': 'http://localhost/chassis/14697fa0-7f6d-4eba-b008-0f02090d19ad', 'rel': 'bookmark'}]}, {'uuid': 'ccdca825-87a3-4b5f-abc4-7d6eae39f844', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/ccdca825-87a3-4b5f-abc4-7d6eae39f844', 'rel': 'self'}, {'href': 'http://localhost/chassis/ccdca825-87a3-4b5f-abc4-7d6eae39f844', 'rel': 'bookmark'}]}, {'uuid': 'dcbe4b7b-8fed-4465-8c91-621abff8ce72', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/dcbe4b7b-8fed-4465-8c91-621abff8ce72', 'rel': 'self'}, {'href': 'http://localhost/chassis/dcbe4b7b-8fed-4465-8c91-621abff8ce72', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=uuid,description&limit=3&marker=dcbe4b7b-8fed-4465-8c91-621abff8ce72'} +GET: /v1/chassis/detail {} +GOT:{'chassis': [{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T14:10:17.591103+00:00', 'updated_at': None, '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/detail {} GOT:Response: 404 Not Found Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +Openstack-Request-Id: req-5a7701e8-f389-4bcf-b267-583cc30d90d0 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/chassis?detail=True {} +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_query +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_query ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_query_false +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_query_false ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_and_fields +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_and_fields ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_false_and_fields +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_false_and_fields ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_name_with_none +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_name_with_none ... ok GET: /v1/allocations?owner=54321 {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8243bd6d-ac44-4820-9b34-4dcd0e99a4dc +Openstack-Request-Id: req-35743ee9-2d9f-4051-9576-471746472a76 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 @@ -5774,7 +5850,7 @@ GET: /v1/allocations {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c736f773-0c17-4d17-9038-6a59a61c1992 +Openstack-Request-Id: req-f7430301-0b79-4592-b6ec-d69022b34796 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 @@ -5782,7 +5858,7 @@ GET: /v1/allocations {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-20ff4986-a0b8-4e95-82c0-5352d0b1efca +Openstack-Request-Id: req-339df089-3384-4e2d-9246-01dee402fe4d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.59 @@ -5792,81 +5868,139 @@ Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow allocations\"}"} GET: /v1/allocations {} -GOT:{'allocations': [{'uuid': '8020a68a-be0b-4893-98c3-e232dd9218a8', 'created_at': '2024-01-06T13:31:20.011249+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/8020a68a-be0b-4893-98c3-e232dd9218a8', 'rel': 'self'}, {'href': 'http://localhost/allocations/8020a68a-be0b-4893-98c3-e232dd9218a8', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': 'c437c056-1e68-42a1-84ea-a7303959402a', 'created_at': '2024-01-06T13:31:20.025543+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/c437c056-1e68-42a1-84ea-a7303959402a', 'rel': 'self'}, {'href': 'http://localhost/allocations/c437c056-1e68-42a1-84ea-a7303959402a', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': 'd3f069cd-99ce-4d70-987b-8bdb93de60aa', 'created_at': '2024-01-06T13:31:20.038256+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/d3f069cd-99ce-4d70-987b-8bdb93de60aa', 'rel': 'self'}, {'href': 'http://localhost/allocations/d3f069cd-99ce-4d70-987b-8bdb93de60aa', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '22352131-b866-4a1e-85f4-65b104a56033', 'created_at': '2024-01-06T13:31:20.047343+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/22352131-b866-4a1e-85f4-65b104a56033', 'rel': 'self'}, {'href': 'http://localhost/allocations/22352131-b866-4a1e-85f4-65b104a56033', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': 'c69a1b95-d58a-4aa1-ad5a-c08da6c50f4b', 'created_at': '2024-01-06T13:31:20.052138+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/c69a1b95-d58a-4aa1-ad5a-c08da6c50f4b', 'rel': 'self'}, {'href': 'http://localhost/allocations/c69a1b95-d58a-4aa1-ad5a-c08da6c50f4b', 'rel': 'bookmark'}], 'node_uuid': None}]} -GET: /v1/allocations/5c66142a-9bbc-4bc2-939d-6549b2117537 {} -GOT:{'uuid': '5c66142a-9bbc-4bc2-939d-6549b2117537', 'created_at': '2024-01-06T13:31:20.448030+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/5c66142a-9bbc-4bc2-939d-6549b2117537', 'rel': 'self'}, {'href': 'http://localhost/allocations/5c66142a-9bbc-4bc2-939d-6549b2117537', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/allocations/5c66142a-9bbc-4bc2-939d-6549b2117537 {} -GOT:{'uuid': '5c66142a-9bbc-4bc2-939d-6549b2117537', 'created_at': '2024-01-06T13:31:20.448030+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/5c66142a-9bbc-4bc2-939d-6549b2117537', 'rel': 'self'}, {'href': 'http://localhost/allocations/5c66142a-9bbc-4bc2-939d-6549b2117537', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/allocations/70c19ec3-fa9a-4817-a5f2-3ac9ae5d9c9c {} -GOT:{'uuid': '70c19ec3-fa9a-4817-a5f2-3ac9ae5d9c9c', 'created_at': '2024-01-06T13:31:21.115932+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/70c19ec3-fa9a-4817-a5f2-3ac9ae5d9c9c', 'rel': 'self'}, {'href': 'http://localhost/allocations/70c19ec3-fa9a-4817-a5f2-3ac9ae5d9c9c', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/allocations/20f60b93-03f4-4cf4-8885-62d0f27238b2 {} -GOT:{'uuid': '20f60b93-03f4-4cf4-8885-62d0f27238b2', 'created_at': '2024-01-06T13:31:21.500489+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/20f60b93-03f4-4cf4-8885-62d0f27238b2', 'rel': 'self'}, {'href': 'http://localhost/allocations/20f60b93-03f4-4cf4-8885-62d0f27238b2', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/node/f7ff70ed-6103-4d23-87c0-c1a804b21794/allocation {} +GOT:{'allocations': [{'uuid': '38375b0c-673b-41d4-88e4-635c47078315', 'created_at': '2024-01-06T14:10:17.305181+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/38375b0c-673b-41d4-88e4-635c47078315', 'rel': 'self'}, {'href': 'http://localhost/allocations/38375b0c-673b-41d4-88e4-635c47078315', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '7df0d1b4-1296-45a0-b4e2-33545abf39fa', 'created_at': '2024-01-06T14:10:17.309368+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/7df0d1b4-1296-45a0-b4e2-33545abf39fa', 'rel': 'self'}, {'href': 'http://localhost/allocations/7df0d1b4-1296-45a0-b4e2-33545abf39fa', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '83864484-3026-4875-96b2-eec141b02403', 'created_at': '2024-01-06T14:10:17.313305+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/83864484-3026-4875-96b2-eec141b02403', 'rel': 'self'}, {'href': 'http://localhost/allocations/83864484-3026-4875-96b2-eec141b02403', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': 'ecb69afc-79b1-47f1-89b8-17eccf63f912', 'created_at': '2024-01-06T14:10:17.317263+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/ecb69afc-79b1-47f1-89b8-17eccf63f912', 'rel': 'self'}, {'href': 'http://localhost/allocations/ecb69afc-79b1-47f1-89b8-17eccf63f912', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '200561a0-f197-48a7-86be-88e47d773a03', 'created_at': '2024-01-06T14:10:17.321205+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/200561a0-f197-48a7-86be-88e47d773a03', 'rel': 'self'}, {'href': 'http://localhost/allocations/200561a0-f197-48a7-86be-88e47d773a03', 'rel': 'bookmark'}], 'node_uuid': None}]} +GET: /v1/allocations/b5ead055-b966-4b76-aec9-1047cd2aec09 {} +GOT:{'uuid': 'b5ead055-b966-4b76-aec9-1047cd2aec09', 'created_at': '2024-01-06T14:10:17.463067+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/b5ead055-b966-4b76-aec9-1047cd2aec09', 'rel': 'self'}, {'href': 'http://localhost/allocations/b5ead055-b966-4b76-aec9-1047cd2aec09', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/allocations/b5ead055-b966-4b76-aec9-1047cd2aec09 {} +GOT:{'uuid': 'b5ead055-b966-4b76-aec9-1047cd2aec09', 'created_at': '2024-01-06T14:10:17.463067+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/b5ead055-b966-4b76-aec9-1047cd2aec09', 'rel': 'self'}, {'href': 'http://localhost/allocations/b5ead055-b966-4b76-aec9-1047cd2aec09', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/allocations/574bc455-ab38-4347-bc35-c257000c05ff {} +GOT:{'uuid': '574bc455-ab38-4347-bc35-c257000c05ff', 'created_at': '2024-01-06T14:10:17.646874+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/574bc455-ab38-4347-bc35-c257000c05ff', 'rel': 'self'}, {'href': 'http://localhost/allocations/574bc455-ab38-4347-bc35-c257000c05ff', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/allocations/bb7350df-693d-4a17-b158-27a633c8ebf7 {} +GOT:{'uuid': 'bb7350df-693d-4a17-b158-27a633c8ebf7', 'created_at': '2024-01-06T14:10:17.767199+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/bb7350df-693d-4a17-b158-27a633c8ebf7', 'rel': 'self'}, {'href': 'http://localhost/allocations/bb7350df-693d-4a17-b158-27a633c8ebf7', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/node/d29d06fa-e8a7-45c6-9103-152cd9d8e5e3/allocation {} GOT:Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/node/3be3a2e9-51dc-41f2-b5a1-ff56edf015d6/allocation {} +GET: /v1/node/3fe33312-1841-4589-8164-43fc131e0a14/allocation {} GOT:Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} GET: /v1/allocations/?limit=3 {} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_collection_links ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_collection_links ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_node -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_node ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_trait -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_trait ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_collection_links_custom_fields ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_collection_links_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_step_property_fail -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_step_property_fail ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_node_locked -ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_node_locked ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_old_version +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_old_version ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_error +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_error ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_collection_links_default_limit ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_collection_links_default_limit ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_only_step_fail -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_only_step_fail ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_empty +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_empty ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_singular +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_singular ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_empty +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_empty ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_generate_uuid +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_generate_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_collection_custom_fields +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_collection_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_error +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_error ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_node_name +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_node_name ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_collection_pagination_no_uuid +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_collection_pagination_no_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_candidate_node_format +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_candidate_node_format ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_custom_fields_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_custom_fields_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_not_allowed +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_node_uuid +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_node_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_custom_fields_invalid_fields +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_custom_fields_invalid_fields ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_trait +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_trait ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_not_found +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_non_existing_node +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_non_existing_node ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_one +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_one ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_owner_not_acceptable +ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_owner_not_acceptable ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_one_custom_fields +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_one_custom_fields ... ok +GOT:{'allocations': [{'uuid': '74892c00-f919-4063-80c4-5147637cd87d', 'created_at': '2024-01-06T14:10:18.198000+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/74892c00-f919-4063-80c4-5147637cd87d', 'rel': 'self'}, {'href': 'http://localhost/allocations/74892c00-f919-4063-80c4-5147637cd87d', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': 'f3ce3554-bb7a-44cf-bcee-3f236f53fd52', 'created_at': '2024-01-06T14:10:18.201951+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/f3ce3554-bb7a-44cf-bcee-3f236f53fd52', 'rel': 'self'}, {'href': 'http://localhost/allocations/f3ce3554-bb7a-44cf-bcee-3f236f53fd52', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '18cdea44-24b9-41f1-bdc9-34d74a8ce98e', 'created_at': '2024-01-06T14:10:18.205671+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/18cdea44-24b9-41f1-bdc9-34d74a8ce98e', 'rel': 'self'}, {'href': 'http://localhost/allocations/18cdea44-24b9-41f1-bdc9-34d74a8ce98e', 'rel': 'bookmark'}], 'node_uuid': None}], 'next': 'http://localhost/v1/allocations?sort_key=id&sort_dir=asc&limit=3&marker=18cdea44-24b9-41f1-bdc9-34d74a8ce98e'} +GET: /v1/allocations?fields=uuid,extra {} +GOT:{'allocations': [{'uuid': '235471f3-b909-4805-bcd2-7b913480a93d', 'extra': {}, 'links': [{'href': 'http://localhost/v1/allocations/235471f3-b909-4805-bcd2-7b913480a93d', 'rel': 'self'}, {'href': 'http://localhost/allocations/235471f3-b909-4805-bcd2-7b913480a93d', 'rel': 'bookmark'}]}, {'uuid': 'd0cb0f29-f9ea-416b-aace-8bf242eb70f9', 'extra': {}, 'links': [{'href': 'http://localhost/v1/allocations/d0cb0f29-f9ea-416b-aace-8bf242eb70f9', 'rel': 'self'}, {'href': 'http://localhost/allocations/d0cb0f29-f9ea-416b-aace-8bf242eb70f9', 'rel': 'bookmark'}]}, {'uuid': 'c7b59e93-a184-4649-8016-d33840146f9a', 'extra': {}, 'links': [{'href': 'http://localhost/v1/allocations/c7b59e93-a184-4649-8016-d33840146f9a', 'rel': 'self'}, {'href': 'http://localhost/allocations/c7b59e93-a184-4649-8016-d33840146f9a', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/allocations?sort_key=id&sort_dir=asc&fields=uuid,extra&limit=3&marker=c7b59e93-a184-4649-8016-d33840146f9a'} +GET: /v1/allocations {} +GOT:{'allocations': [{'uuid': '891975cd-f13c-4559-a4bd-238d752ab5cc', 'created_at': '2024-01-06T14:10:18.507825+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/891975cd-f13c-4559-a4bd-238d752ab5cc', 'rel': 'self'}, {'href': 'http://localhost/allocations/891975cd-f13c-4559-a4bd-238d752ab5cc', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': 'f09db212-34c1-4e72-a674-892db0da6d93', 'created_at': '2024-01-06T14:10:18.511579+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/f09db212-34c1-4e72-a674-892db0da6d93', 'rel': 'self'}, {'href': 'http://localhost/allocations/f09db212-34c1-4e72-a674-892db0da6d93', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '1a51f775-8c0e-4583-847c-e5bfc6fee1b1', 'created_at': '2024-01-06T14:10:18.515306+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/1a51f775-8c0e-4583-847c-e5bfc6fee1b1', 'rel': 'self'}, {'href': 'http://localhost/allocations/1a51f775-8c0e-4583-847c-e5bfc6fee1b1', 'rel': 'bookmark'}], 'node_uuid': None}], 'next': 'http://localhost/v1/allocations?sort_key=id&sort_dir=asc&limit=3&marker=1a51f775-8c0e-4583-847c-e5bfc6fee1b1'} +GET: /v1/allocations {} +GOT:{'allocations': []} +GET: /v1/allocations?node=node-1 {} +GOT:{'allocations': [{'uuid': '3cce2912-2956-4d2b-8ea6-14d483671c38', 'created_at': '2024-01-06T14:10:18.779659+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/3cce2912-2956-4d2b-8ea6-14d483671c38', 'rel': 'self'}, {'href': 'http://localhost/allocations/3cce2912-2956-4d2b-8ea6-14d483671c38', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'caa99df9-54d2-4619-90c0-5e5244664b32', 'created_at': '2024-01-06T14:10:18.792068+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/caa99df9-54d2-4619-90c0-5e5244664b32', 'rel': 'self'}, {'href': 'http://localhost/allocations/caa99df9-54d2-4619-90c0-5e5244664b32', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'f83ff592-3ccd-4f3d-a301-2216edf08146', 'created_at': '2024-01-06T14:10:18.800239+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/f83ff592-3ccd-4f3d-a301-2216edf08146', 'rel': 'self'}, {'href': 'http://localhost/allocations/f83ff592-3ccd-4f3d-a301-2216edf08146', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/allocations?node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:{'allocations': [{'uuid': '8004bf31-b12a-4b69-ba25-aada303ccaa7', 'created_at': '2024-01-06T14:10:19.060710+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/8004bf31-b12a-4b69-ba25-aada303ccaa7', 'rel': 'self'}, {'href': 'http://localhost/allocations/8004bf31-b12a-4b69-ba25-aada303ccaa7', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/allocations?node=banana {} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-764e76b1-7b84-4bd8-9f4f-b403dce72b91 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node banana could not be found.\", \"debuginfo\": null}"} +GET: /v1/allocations?owner=12345 {} +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_owner +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_owner ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_cached +ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_cached ... ok GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/4a18b1c5-ba19-454d-ba90-ee755c5704bb -Openstack-Request-Id: req-85a355b5-eaa0-4bd3-af96-901543328a3d +Location: http://localhost/v1/allocations/be900142-6732-4cbd-880c-63fe2cbe64c9 +Openstack-Request-Id: req-fe6b3cd0-4871-4577-94aa-d6b82b9b0227 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "4a18b1c5-ba19-454d-ba90-ee755c5704bb", "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/4a18b1c5-ba19-454d-ba90-ee755c5704bb", "rel": "self"}, {"href": "http://localhost/allocations/4a18b1c5-ba19-454d-ba90-ee755c5704bb", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/4a18b1c5-ba19-454d-ba90-ee755c5704bb {} -GOT:{'uuid': '4a18b1c5-ba19-454d-ba90-ee755c5704bb', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/4a18b1c5-ba19-454d-ba90-ee755c5704bb', 'rel': 'self'}, {'href': 'http://localhost/allocations/4a18b1c5-ba19-454d-ba90-ee755c5704bb', 'rel': 'bookmark'}], 'node_uuid': None} -POST: /v1/allocations {'candidate_nodes': ['this/is/not a/node/name'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'a31a6c9d-8b88-4a3b-855a-2dbd9913fa50', 'owner': None} +{"uuid": "be900142-6732-4cbd-880c-63fe2cbe64c9", "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/be900142-6732-4cbd-880c-63fe2cbe64c9", "rel": "self"}, {"href": "http://localhost/allocations/be900142-6732-4cbd-880c-63fe2cbe64c9", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/be900142-6732-4cbd-880c-63fe2cbe64c9 {} +GOT:{'uuid': 'be900142-6732-4cbd-880c-63fe2cbe64c9', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/be900142-6732-4cbd-880c-63fe2cbe64c9', 'rel': 'self'}, {'href': 'http://localhost/allocations/be900142-6732-4cbd-880c-63fe2cbe64c9', 'rel': 'bookmark'}], 'node_uuid': None} +POST: /v1/allocations {'candidate_nodes': ['this/is/not a/node/name'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'a3c6225c-753f-4e4c-97ce-ce5aed05bbbd', 'owner': None} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d76829fb-8b9e-4742-88c3-18f3067fa2e0 +Openstack-Request-Id: req-cddb62bb-6977-4fca-a69f-42c27b8eed99 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Nodes cannot be found: this/is/not a/node/name\", \"debuginfo\": null}"} -POST: /v1/allocations {'candidate_nodes': ['1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '3011d440-9d56-40c3-92a6-1d478ab9243b', 'owner': None} +POST: /v1/allocations {'candidate_nodes': ['1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '68c926aa-f125-4f94-b418-abb3df686010', 'owner': None} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b8d70d8c-fb81-4338-88a3-f1e361b21ff5 +Openstack-Request-Id: req-ee06d7d4-214e-4bd3-8f9b-c8c855d1c97a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Nodes cannot be found: 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e\", \"debuginfo\": null}"} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {'foo': 123}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '244e423e-2fb9-4f7b-b09f-c501d1c98742', 'owner': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {'foo': 123}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'da0fb24e-0a16-4bb0-b584-f594bb0e5bc9', 'owner': None} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/244e423e-2fb9-4f7b-b09f-c501d1c98742 -Openstack-Request-Id: req-848b312f-8813-40b6-b17c-e7a61e80fc0d +Location: http://localhost/v1/allocations/da0fb24e-0a16-4bb0-b584-f594bb0e5bc9 +Openstack-Request-Id: req-9e7b1498-f5a7-4ac7-99bc-e049eebb84d8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "244e423e-2fb9-4f7b-b09f-c501d1c98742", "created_at": "2024-01-06T13:31:20.915626+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/244e423e-2fb9-4f7b-b09f-c501d1c98742", "rel": "self"}, {"href": "http://localhost/allocations/244e423e-2fb9-4f7b-b09f-c501d1c98742", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/244e423e-2fb9-4f7b-b09f-c501d1c98742 {} -GOT:{'uuid': '244e423e-2fb9-4f7b-b09f-c501d1c98742', 'created_at': '2024-01-06T13:31:20.915626+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {'foo': 123}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/244e423e-2fb9-4f7b-b09f-c501d1c98742', 'rel': 'self'}, {'href': 'http://localhost/allocations/244e423e-2fb9-4f7b-b09f-c501d1c98742', 'rel': 'bookmark'}], 'node_uuid': None} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '7c839a9f-2f2e-455d-b238-3f43e9ff469b', 'owner': None} +{"uuid": "da0fb24e-0a16-4bb0-b584-f594bb0e5bc9", "created_at": "2024-01-06T14:10:18.252074+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/da0fb24e-0a16-4bb0-b584-f594bb0e5bc9", "rel": "self"}, {"href": "http://localhost/allocations/da0fb24e-0a16-4bb0-b584-f594bb0e5bc9", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/da0fb24e-0a16-4bb0-b584-f594bb0e5bc9 {} +GOT:{'uuid': 'da0fb24e-0a16-4bb0-b584-f594bb0e5bc9', 'created_at': '2024-01-06T14:10:18.252074+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {'foo': 123}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/da0fb24e-0a16-4bb0-b584-f594bb0e5bc9', 'rel': 'self'}, {'href': 'http://localhost/allocations/da0fb24e-0a16-4bb0-b584-f594bb0e5bc9', 'rel': 'bookmark'}], 'node_uuid': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '0929a403-2669-4c65-8771-d39583a26142', 'owner': None} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-f09d60d4-7cdb-49e3-b60d-75dd16be9afe +Openstack-Request-Id: req-a43b2bae-3df6-4fec-91d9-6aaa6eee3ae1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -5874,1594 +6008,1968 @@ POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'owner': None} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/bf146b31-5dbb-47b1-9440-06b814f3d3db -Openstack-Request-Id: req-4c19b189-780e-4eef-9a89-fd24e74775ca +Location: http://localhost/v1/allocations/52837848-6417-4e7f-9e21-598b6fc5e8dc +Openstack-Request-Id: req-50377a02-6da7-4db8-bb43-ffd8a0798009 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "bf146b31-5dbb-47b1-9440-06b814f3d3db", "created_at": "2024-01-06T13:31:21.809634+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/bf146b31-5dbb-47b1-9440-06b814f3d3db", "rel": "self"}, {"href": "http://localhost/allocations/bf146b31-5dbb-47b1-9440-06b814f3d3db", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/bf146b31-5dbb-47b1-9440-06b814f3d3db {} -GOT:{'uuid': 'bf146b31-5dbb-47b1-9440-06b814f3d3db', 'created_at': '2024-01-06T13:31:21.809634+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/bf146b31-5dbb-47b1-9440-06b814f3d3db', 'rel': 'self'}, {'href': 'http://localhost/allocations/bf146b31-5dbb-47b1-9440-06b814f3d3db', 'rel': 'bookmark'}], 'node_uuid': None} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '15a02af8-59d2-4376-917b-1562d10aed48', 'owner': None} +{"uuid": "52837848-6417-4e7f-9e21-598b6fc5e8dc", "created_at": "2024-01-06T14:10:18.679880+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/52837848-6417-4e7f-9e21-598b6fc5e8dc", "rel": "self"}, {"href": "http://localhost/allocations/52837848-6417-4e7f-9e21-598b6fc5e8dc", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/52837848-6417-4e7f-9e21-598b6fc5e8dc {} +GOT:{'uuid': '52837848-6417-4e7f-9e21-598b6fc5e8dc', 'created_at': '2024-01-06T14:10:18.679880+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/52837848-6417-4e7f-9e21-598b6fc5e8dc', 'rel': 'self'}, {'href': 'http://localhost/allocations/52837848-6417-4e7f-9e21-598b6fc5e8dc', 'rel': 'bookmark'}], 'node_uuid': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'f1f3dde5-63ce-40df-b8de-abad23d97727', '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\"}"} -POST: /v1/allocations {'candidate_nodes': ['invalid-format'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '7c010f04-13a2-485f-86cb-25a5b2a75120', 'owner': None} +POST: /v1/allocations {'candidate_nodes': ['invalid-format'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '39bc689b-c042-4993-a4f3-163732dfe576', 'owner': None} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d8528a9c-b7a8-493f-ab66-675975d7c494 +Openstack-Request-Id: req-acaba86b-8fbd-4ba0-8c80-20e4278d2877 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Nodes cannot be found: invalid-format\", \"debuginfo\": null}"} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': ['CUSTOM_GPU', 'FOO_BAR'], 'uuid': 'd15869bc-63ff-451f-97fe-a668309b734a', 'owner': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': ['CUSTOM_GPU', 'FOO_BAR'], 'uuid': '6e1d0212-7c22-4be5-8038-11585c7e998a', 'owner': None} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-db4fac10-864f-4b70-a8b6-930f6287f45b +Openstack-Request-Id: req-679bf6d8-df95-4dd2-acd2-f6ad9c0da238 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"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}"} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': 'aa:bb_cc', 'resource_class': 'baremetal', 'traits': [], 'uuid': '01f25f5d-f645-4cc0-8b90-d02e2a3fa946', 'owner': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': 'aa:bb_cc', 'resource_class': 'baremetal', 'traits': [], 'uuid': '9ffaa8fa-8e5d-4acd-bee3-807d3ba3febe', 'owner': None} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_name_invalid ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_name_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_empty -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_empty ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_name_ok ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_name_ok ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_steps -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_steps ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_no_mandatory_field_resource_class -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_no_mandatory_field_resource_class ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_node_name -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_node_name ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add_multi -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add_multi ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_uuid -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add_non_existent -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add_non_existent ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_node_uuid -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_auto_filled -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_auto_filled ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_duplicate_step -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_duplicate_step ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_non_existing_node -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_non_existing_node ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_not_allowed -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_not_allowed ... ok -DELETE: /v1/allocations/466e3b57-5608-4bce-b331-3e73aa4cca3b -GOT:Response: 204 No Content -Openstack-Request-Id: req-02eecba3-abba-4716-ab4b-2a65e1471db1 +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_owner_not_allowed +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_owner_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_links +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_links ... ok +PATCH: /v1/allocations/46b1a4d2-c3e6-4a83-aa2a-3f12f2da307f [{'path': '/uuid', 'op': 'remove'}] +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-ce9475a1-2876-4479-b425-5234fa569c1b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -DELETE: /v1/allocations/alloc1 -GOT:Response: 204 No Content -Openstack-Request-Id: req-b175acc9-96a4-4c38-a255-83876a0af7eb +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: name, extra\", \"debuginfo\": null}"} +PATCH: /v1/allocations/7ae1a696-4dfc-4be2-8676-f01075446e61 [{'path': '/name', 'value': '[test]', 'op': 'replace'}] +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-950220eb-6f1f-4087-b414-466eb5c5b610 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -DELETE: /v1/allocations/blah -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update allocation with invalid name '[test]'\", \"debuginfo\": null}"} +PATCH: /v1/allocations/cc077735-ec6d-4062-9be1-a2aa9032f3c6 [{'path': '/extra/foo2', 'value': 'new value', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-560ea716-24bb-4a9d-a2d3-8c25c188cdbc +Openstack-Request-Id: req-9a5a7919-686d-4b91-876c-be1298e9a7e1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation blah could not be found.\", \"debuginfo\": null}"} -DELETE: /v1/allocations/alloc1.json -GOT:Response: 204 No Content -Openstack-Request-Id: req-6df2619c-d3fe-425b-b6b7-fd170da2ed5c +{"uuid": "cc077735-ec6d-4062-9be1-a2aa9032f3c6", "created_at": "2024-01-06T14:10:18.099945+00:00", "updated_at": "2024-01-06T14:10:18.174321+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/cc077735-ec6d-4062-9be1-a2aa9032f3c6", "rel": "self"}, {"href": "http://localhost/allocations/cc077735-ec6d-4062-9be1-a2aa9032f3c6", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/cc077735-ec6d-4062-9be1-a2aa9032f3c6 {} +GOT:{'uuid': 'cc077735-ec6d-4062-9be1-a2aa9032f3c6', 'created_at': '2024-01-06T14:10:18.099945+00:00', 'updated_at': '2024-01-06T14:10:18.174321+00:00', 'candidate_nodes': [], 'extra': {'foo1': 'bar1', 'foo2': 'new value', 'foo3': 'bar3'}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/cc077735-ec6d-4062-9be1-a2aa9032f3c6', 'rel': 'self'}, {'href': 'http://localhost/allocations/cc077735-ec6d-4062-9be1-a2aa9032f3c6', 'rel': 'bookmark'}], 'node_uuid': None} +PATCH: /v1/allocations/46c15df9-ec1e-4125-8324-b32a120dc2b4 [{'path': '/name', 'value': None, 'op': 'replace'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-5f752e70-397f-4120-8cd9-fccfb0624c42 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation -GOT:Response: 204 No Content -Openstack-Request-Id: req-1c172c50-5bf5-4fe7-8182-147054b91c26 +{"uuid": "46c15df9-ec1e-4125-8324-b32a120dc2b4", "created_at": "2024-01-06T14:10:18.287471+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/46c15df9-ec1e-4125-8324-b32a120dc2b4", "rel": "self"}, {"href": "http://localhost/allocations/46c15df9-ec1e-4125-8324-b32a120dc2b4", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/46c15df9-ec1e-4125-8324-b32a120dc2b4 {} +GOT:{'uuid': '46c15df9-ec1e-4125-8324-b32a120dc2b4', 'created_at': '2024-01-06T14:10:18.287471+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/46c15df9-ec1e-4125-8324-b32a120dc2b4', 'rel': 'self'}, {'href': 'http://localhost/allocations/46c15df9-ec1e-4125-8324-b32a120dc2b4', 'rel': 'bookmark'}], 'node_uuid': None} +PATCH: /v1/allocations/b0bda8fa-0d63-4101-a32f-16bcc6087c5e [{'path': '/name', 'value': 'test', 'op': 'replace'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-78a50298-957c-4099-a2df-e868c66cdda8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -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\": \"\"}"} -DELETE: /v1/nodes/83f7da1f-b0a9-4f2d-a3dd-da27dd42f184/allocation -GOT:Response: 404 Not Found +{"uuid": "b0bda8fa-0d63-4101-a32f-16bcc6087c5e", "created_at": "2024-01-06T14:10:18.535778+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/b0bda8fa-0d63-4101-a32f-16bcc6087c5e", "rel": "self"}, {"href": "http://localhost/allocations/b0bda8fa-0d63-4101-a32f-16bcc6087c5e", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/b0bda8fa-0d63-4101-a32f-16bcc6087c5e {} +GOT:{'uuid': 'b0bda8fa-0d63-4101-a32f-16bcc6087c5e', 'created_at': '2024-01-06T14:10:18.535778+00:00', 'updated_at': '2000-01-01T00:00:00+00:00', 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'test', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/b0bda8fa-0d63-4101-a32f-16bcc6087c5e', 'rel': 'self'}, {'href': 'http://localhost/allocations/b0bda8fa-0d63-4101-a32f-16bcc6087c5e', 'rel': 'bookmark'}], 'node_uuid': None} +PATCH: /v1/allocations/87165888-3802-4317-93bc-fc31133d376e [{'path': '/name', 'value': 'new', 'op': 'replace'}] +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-00a99d82-c830-4dfa-9a0d-eabc64833754 +Openstack-Request-Id: req-61412681-b9c2-4a8c-b06c-a4787a2d89b7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation for node 83f7da1f-b0a9-4f2d-a3dd-da27dd42f184 was not found\", \"debuginfo\": null}"} -DELETE: /v1/allocations/0ff1af45-a23f-4ebf-b27d-bcd689a002a0 -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\"}"} -DELETE: /v1/allocations/ba!na!na1 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} +PATCH: /v1/allocations/036a3d46-e449-4c92-aa95-08b8fa1dd81d [{'path': '/extra/foo', 'value': 'bar', '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 allocations\"}"} -DELETE: /v1/nodes/575d1f02-bba2-4775-9ea0-ae0fc335ec01/allocation -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-fe316a3d-7757-4b89-bde2-fb37c334ba92 +Openstack-Request-Id: req-bf8e5d51-6426-4b5f-9043-f373d8d93141 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 575d1f02-bba2-4775-9ea0-ae0fc335ec01 could not be found.\", \"debuginfo\": null}"} -DELETE: /v1/allocations/1dece94a-ecbc-4021-8953-38f19f7ed834 -GOT:Response: 409 Conflict +X-Openstack-Ironic-Api-Version: 1.56 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The API version does not allow updating allocations\", \"debuginfo\": null}"} +PATCH: /v1/allocations/860cba56-40de-4079-8c46-3a4701d45149 [{'path': '/name', 'value': 'b', 'op': 'replace'}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-2429f183-ebc8-4ded-8cbd-6cff0125c195 +Openstack-Request-Id: req-96ec063d-e7df-4bed-a150-4c96440f2512 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} -PATCH: /v1/allocations/9128e478-3964-4ca7-b431-1f2ae653a67c [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 860cba56-40de-4079-8c46-3a4701d45149 could not be found.\", \"debuginfo\": null}"} +PATCH: /v1/allocations/4ae4a403-0cb4-41bd-9d84-9aadeda00709 [{'path': '/owner', 'value': '54321', 'op': 'replace'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-6ff7880a-fee5-47f6-981b-e8da13af5f7f +Openstack-Request-Id: req-dd8225b2-7ee4-405c-b534-6ec05a569313 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "9128e478-3964-4ca7-b431-1f2ae653a67c", "created_at": "2024-01-06T13:31:23.620791+00:00", "updated_at": "2024-01-06T13:31:23.795663+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/9128e478-3964-4ca7-b431-1f2ae653a67c", "rel": "self"}, {"href": "http://localhost/allocations/9128e478-3964-4ca7-b431-1f2ae653a67c", "rel": "bookmark"}], "node_uuid": null} -PATCH: /v1/allocations/d48a0a6a-a197-4922-ab49-a78401d8467e [{'path': '/extra/foo1', 'value': 'bar1', 'op': 'add'}, {'path': '/extra/foo2', 'value': 'bar2', 'op': 'add'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /owner. Only the following can be updated: name, extra\", \"debuginfo\": null}"} +GET: /v1/drivers/manual-management/properties {} +GOT:{'prop1': 'Property 1. Required.'} +GET: /v1/drivers/manual-management/properties {} +GOT:{'prop1': 'Property 1. Required.'} +GET: /v1/drivers/manual-management/properties {} +GOT:{'prop1': 'Property 1. Required.'} +GET: /v1/drivers/driver/properties {} +ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_cannot_load +ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_cannot_load ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_fake +ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_fake ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_no_mandatory_field_resource_class +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_no_mandatory_field_resource_class ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_state +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_state ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_hw_type +ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_hw_type ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner ... ok +GOT:{'chassis': [{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T14:10:17.827517+00:00', 'updated_at': None, '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 {} +GOT:{'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 {} +GOT:{'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=True&fields=description {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-765997ec-cc6c-4d29-8522-0f339751b293 +Openstack-Request-Id: req-f69c381a-9f47-4677-90fc-c4932098d742 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "d48a0a6a-a197-4922-ab49-a78401d8467e", "created_at": "2024-01-06T13:31:24.176917+00:00", "updated_at": "2024-01-06T13:31:24.317623+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/d48a0a6a-a197-4922-ab49-a78401d8467e", "rel": "self"}, {"href": "http://localhost/allocations/d48a0a6a-a197-4922-ab49-a78401d8467e", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/d48a0a6a-a197-4922-ab49-a78401d8467e {} -GOT:{'uuid': 'd48a0a6a-a197-4922-ab49-a78401d8467e', 'created_at': '2024-01-06T13:31:24.176917+00:00', 'updated_at': '2024-01-06T13:31:24.317623+00:00', 'candidate_nodes': [], 'extra': {'foo1': 'bar1', 'foo2': 'bar2'}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/d48a0a6a-a197-4922-ab49-a78401d8467e', 'rel': 'self'}, {'href': 'http://localhost/allocations/d48a0a6a-a197-4922-ab49-a78401d8467e', 'rel': 'bookmark'}], 'node_uuid': None} -PATCH: /v1/allocations/68fa25d8-f439-4df6-b53f-eb39d7ba2ddd [{'path': '/foo', 'value': 'bar', 'op': 'add'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} +GET: /v1/chassis?detail=False&fields=description {} +GOT:{'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'}]}]} +GET: /v1/chassis?detail=True {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-e59bfa32-b55d-45f7-a334-fb5e910cfc75 +Openstack-Request-Id: req-b0f352df-0c6e-4dd7-b9a4-ef2fd8da1227 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: name, extra\", \"debuginfo\": null}"} -PATCH: /v1/allocations/5d75858e-9f00-40a1-84f3-fefda60f7e76 [{'path': '/extra/foo2', 'op': 'remove'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid query parameter ?detail=True received.\", \"debuginfo\": null}"} +GET: /v1/chassis {} +GOT:{'chassis': []} +GET: /v1/chassis?fields=uuid,extra {} +GOT:{'chassis': [{'uuid': '24e7d353-2d98-416c-866e-8a3199a0a93b', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/24e7d353-2d98-416c-866e-8a3199a0a93b', 'rel': 'self'}, {'href': 'http://localhost/chassis/24e7d353-2d98-416c-866e-8a3199a0a93b', 'rel': 'bookmark'}]}, {'uuid': 'f4fbc66b-8ca7-412b-8055-02c857705819', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/f4fbc66b-8ca7-412b-8055-02c857705819', 'rel': 'self'}, {'href': 'http://localhost/chassis/f4fbc66b-8ca7-412b-8055-02c857705819', 'rel': 'bookmark'}]}, {'uuid': 'bd6602f1-4a86-4b4a-a876-48fe6ccb8b7c', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/bd6602f1-4a86-4b4a-a876-48fe6ccb8b7c', 'rel': 'self'}, {'href': 'http://localhost/chassis/bd6602f1-4a86-4b4a-a876-48fe6ccb8b7c', 'rel': 'bookmark'}]}]} +GET: /v1/chassis?fields=extra&limit=2 {} +GOT:{'chassis': [{'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/daaa39c0-fd7b-4b3c-8e76-58f8d0488cc3', 'rel': 'self'}, {'href': 'http://localhost/chassis/daaa39c0-fd7b-4b3c-8e76-58f8d0488cc3', 'rel': 'bookmark'}]}, {'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/f4912790-0bdf-45c2-9689-fdc117b9d65c', 'rel': 'self'}, {'href': 'http://localhost/chassis/f4912790-0bdf-45c2-9689-fdc117b9d65c', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=extra&limit=2&marker=f4912790-0bdf-45c2-9689-fdc117b9d65c'} +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66?fields=uuid,extra {} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-8dd9f172-699e-4698-828f-8356027bf458 +Openstack-Request-Id: req-70231bcc-bdee-4b2c-a38b-1f670d7088c1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5d75858e-9f00-40a1-84f3-fefda60f7e76", "created_at": "2024-01-06T13:31:25.178513+00:00", "updated_at": "2024-01-06T13:31:25.318747+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/5d75858e-9f00-40a1-84f3-fefda60f7e76", "rel": "self"}, {"href": "http://localhost/allocations/5d75858e-9f00-40a1-84f3-fefda60f7e76", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/5d75858e-9f00-40a1-84f3-fefda60f7e76 {} -GOT:{'uuid': '5d75858e-9f00-40a1-84f3-fefda60f7e76', 'created_at': '2024-01-06T13:31:25.178513+00:00', 'updated_at': '2024-01-06T13:31:25.318747+00:00', 'candidate_nodes': [], 'extra': {'foo1': 'bar1', 'foo3': 'bar3'}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/5d75858e-9f00-40a1-84f3-fefda60f7e76', 'rel': 'self'}, {'href': 'http://localhost/allocations/5d75858e-9f00-40a1-84f3-fefda60f7e76', 'rel': 'bookmark'}], 'node_uuid': None} -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_multi -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_multi ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_not_my_projet_id -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_not_my_projet_id ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_empty_step_list_fail -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_empty_step_list_fail ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_non_existent_property_fail -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_non_existent_property_fail ... ok -GOT:{'allocations': [{'uuid': '0a03f47b-ae09-404d-bf05-4e6985c01686', 'created_at': '2024-01-06T13:31:22.637147+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/0a03f47b-ae09-404d-bf05-4e6985c01686', 'rel': 'self'}, {'href': 'http://localhost/allocations/0a03f47b-ae09-404d-bf05-4e6985c01686', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '7940bf05-733c-432c-ab14-034b75494cb6', 'created_at': '2024-01-06T13:31:22.650455+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/7940bf05-733c-432c-ab14-034b75494cb6', 'rel': 'self'}, {'href': 'http://localhost/allocations/7940bf05-733c-432c-ab14-034b75494cb6', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '3a315758-c289-41c5-977e-047fd499e127', 'created_at': '2024-01-06T13:31:22.663258+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/3a315758-c289-41c5-977e-047fd499e127', 'rel': 'self'}, {'href': 'http://localhost/allocations/3a315758-c289-41c5-977e-047fd499e127', 'rel': 'bookmark'}], 'node_uuid': None}], 'next': 'http://localhost/v1/allocations?sort_key=id&sort_dir=asc&limit=3&marker=3a315758-c289-41c5-977e-047fd499e127'} -GET: /v1/allocations?fields=uuid,extra {} -GOT:{'allocations': [{'uuid': '724b6276-ebe9-45d8-8ca8-6d74a4a9b05c', 'extra': {}, 'links': [{'href': 'http://localhost/v1/allocations/724b6276-ebe9-45d8-8ca8-6d74a4a9b05c', 'rel': 'self'}, {'href': 'http://localhost/allocations/724b6276-ebe9-45d8-8ca8-6d74a4a9b05c', 'rel': 'bookmark'}]}, {'uuid': '4fdbb7e8-005f-4ac7-b511-8631c762c21f', 'extra': {}, 'links': [{'href': 'http://localhost/v1/allocations/4fdbb7e8-005f-4ac7-b511-8631c762c21f', 'rel': 'self'}, {'href': 'http://localhost/allocations/4fdbb7e8-005f-4ac7-b511-8631c762c21f', 'rel': 'bookmark'}]}, {'uuid': '4714d37f-5545-4b00-a9c2-1c8b3cb6b63b', 'extra': {}, 'links': [{'href': 'http://localhost/v1/allocations/4714d37f-5545-4b00-a9c2-1c8b3cb6b63b', 'rel': 'self'}, {'href': 'http://localhost/allocations/4714d37f-5545-4b00-a9c2-1c8b3cb6b63b', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/allocations?sort_key=id&sort_dir=asc&fields=uuid,extra&limit=3&marker=4714d37f-5545-4b00-a9c2-1c8b3cb6b63b'} -GET: /v1/allocations {} -GOT:{'allocations': [{'uuid': 'e2581f77-d0a9-4d22-876f-bf8d701ff0e0', 'created_at': '2024-01-06T13:31:23.438933+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/e2581f77-d0a9-4d22-876f-bf8d701ff0e0', 'rel': 'self'}, {'href': 'http://localhost/allocations/e2581f77-d0a9-4d22-876f-bf8d701ff0e0', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': 'af9e3756-2a0f-4881-b317-516b5b5ff2a2', 'created_at': '2024-01-06T13:31:23.451494+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/af9e3756-2a0f-4881-b317-516b5b5ff2a2', 'rel': 'self'}, {'href': 'http://localhost/allocations/af9e3756-2a0f-4881-b317-516b5b5ff2a2', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '3b647985-4e17-4452-ad23-38407f510eeb', 'created_at': '2024-01-06T13:31:23.455965+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/3b647985-4e17-4452-ad23-38407f510eeb', 'rel': 'self'}, {'href': 'http://localhost/allocations/3b647985-4e17-4452-ad23-38407f510eeb', 'rel': 'bookmark'}], 'node_uuid': None}], 'next': 'http://localhost/v1/allocations?sort_key=id&sort_dir=asc&limit=3&marker=3b647985-4e17-4452-ad23-38407f510eeb'} -GET: /v1/allocations {} -GOT:{'allocations': []} -GET: /v1/allocations?node=node-1 {} -GOT:{'allocations': [{'uuid': '8dbefe60-4fa8-415d-ac32-15bed4bf23bc', 'created_at': '2024-01-06T13:31:24.108542+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/8dbefe60-4fa8-415d-ac32-15bed4bf23bc', 'rel': 'self'}, {'href': 'http://localhost/allocations/8dbefe60-4fa8-415d-ac32-15bed4bf23bc', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '5b498a48-bae9-4d7e-8611-53cbca8a10d6', 'created_at': '2024-01-06T13:31:24.118069+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/5b498a48-bae9-4d7e-8611-53cbca8a10d6', 'rel': 'self'}, {'href': 'http://localhost/allocations/5b498a48-bae9-4d7e-8611-53cbca8a10d6', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '4e57a34e-2871-4c15-b457-b9ff1cc47de0', 'created_at': '2024-01-06T13:31:24.131609+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/4e57a34e-2871-4c15-b457-b9ff1cc47de0', 'rel': 'self'}, {'href': 'http://localhost/allocations/4e57a34e-2871-4c15-b457-b9ff1cc47de0', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/allocations?node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'allocations': [{'uuid': 'e4cfac4b-063e-4cf0-8af2-cdd2b69b2932', 'created_at': '2024-01-06T13:31:24.757915+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/e4cfac4b-063e-4cf0-8af2-cdd2b69b2932', 'rel': 'self'}, {'href': 'http://localhost/allocations/e4cfac4b-063e-4cf0-8af2-cdd2b69b2932', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/allocations?node=banana {} +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66?fields=uuid,spongebob {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-6e421f20-904b-417e-bdf5-9f426bb66b1f +Openstack-Request-Id: req-c8083c05-824d-419b-a4c9-aba8a76f13a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node banana could not be found.\", \"debuginfo\": null}"} -GET: /v1/allocations?owner=12345 {} -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_owner -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_owner ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_owner_not_allowed -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_owner_not_allowed ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T14:10:19.312328+00:00', 'updated_at': None, '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?fields=extra,description {} +GOT:{'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'}]} +GET: /v1/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647 {} +GOT:{'uuid': '46ed54a1-8a94-4a51-956e-7e4d83e99647', 'created_at': '2024-01-06T14:10:19.759506+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647', 'rel': 'self'}, {'href': 'http://localhost/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647/nodes', 'rel': 'bookmark'}]]} +GET: /v1/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647 {} +GOT:{'uuid': '46ed54a1-8a94-4a51-956e-7e4d83e99647', 'created_at': '2024-01-06T14:10:19.759506+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647', 'rel': 'self'}, {'href': 'http://localhost/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647/nodes', 'rel': 'bookmark'}]]} +GET: /chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647 {} +GOT:{'uuid': '46ed54a1-8a94-4a51-956e-7e4d83e99647', 'created_at': '2024-01-06T14:10:19.759506+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647', 'rel': 'self'}, {'href': 'http://localhost/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/46ed54a1-8a94-4a51-956e-7e4d83e99647/nodes', 'rel': 'bookmark'}]]} +GET: /v1/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb {} +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_links_public_url +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_links_public_url ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_auto_filled +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_auto_filled ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_invalid_driver_name +ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_invalid_driver_name ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_many +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_many ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_not_allowed +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_and_id +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_and_id ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_does_not_contain_event +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_does_not_contain_event ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_not_my_projet_id +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_not_my_projet_id ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_invalid_event +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_invalid_event ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_invalid_api_version ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_resource_class_too_long ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_resource_class_too_long ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_none -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_none ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_singular -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_singular ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_state -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_state ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_not_a_trait -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_not_a_trait ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_uuid -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_chassis_not_found +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_chassis_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_unsupported_api_version +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_unsupported_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_link +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_link ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_with_fields +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_with_fields ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_no_uuid +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_no_uuid ... ok GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-f9462ce3-2b2b-42d6-b184-117aa805e519 +Openstack-Request-Id: req-37bfea52-41c3-49a3-9a16-991f6636fd90 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create allocation with invalid name 'aa:bb_cc'\", \"debuginfo\": null}"} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': 'foo', 'resource_class': 'baremetal', 'traits': [], 'uuid': '20adbf33-ee6b-4586-9b68-8720d76fdc6c', 'owner': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': 'foo', 'resource_class': 'baremetal', 'traits': [], 'uuid': 'db9a8f0f-7e90-434d-8701-dc99e2791843', 'owner': None} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/20adbf33-ee6b-4586-9b68-8720d76fdc6c -Openstack-Request-Id: req-24db604d-ea9e-4346-acb4-6aed8f2dc0f5 +Location: http://localhost/v1/allocations/db9a8f0f-7e90-434d-8701-dc99e2791843 +Openstack-Request-Id: req-dadfce15-7a9d-48ad-9515-5c5e87c79783 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "20adbf33-ee6b-4586-9b68-8720d76fdc6c", "created_at": "2024-01-06T13:31:23.824884+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/20adbf33-ee6b-4586-9b68-8720d76fdc6c", "rel": "self"}, {"href": "http://localhost/allocations/20adbf33-ee6b-4586-9b68-8720d76fdc6c", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/20adbf33-ee6b-4586-9b68-8720d76fdc6c {} -GOT:{'uuid': '20adbf33-ee6b-4586-9b68-8720d76fdc6c', 'created_at': '2024-01-06T13:31:23.824884+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'foo', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/20adbf33-ee6b-4586-9b68-8720d76fdc6c', 'rel': 'self'}, {'href': 'http://localhost/allocations/20adbf33-ee6b-4586-9b68-8720d76fdc6c', 'rel': 'bookmark'}], 'node_uuid': None} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'traits': [], 'uuid': '5ec541c3-6ec2-4967-a1f1-8795f1ee1509', 'owner': None} +{"uuid": "db9a8f0f-7e90-434d-8701-dc99e2791843", "created_at": "2024-01-06T14:10:19.709560+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/db9a8f0f-7e90-434d-8701-dc99e2791843", "rel": "self"}, {"href": "http://localhost/allocations/db9a8f0f-7e90-434d-8701-dc99e2791843", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/db9a8f0f-7e90-434d-8701-dc99e2791843 {} +GOT:{'uuid': 'db9a8f0f-7e90-434d-8701-dc99e2791843', 'created_at': '2024-01-06T14:10:19.709560+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'foo', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/db9a8f0f-7e90-434d-8701-dc99e2791843', 'rel': 'self'}, {'href': 'http://localhost/allocations/db9a8f0f-7e90-434d-8701-dc99e2791843', 'rel': 'bookmark'}], 'node_uuid': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'traits': [], 'uuid': 'de801689-ff0f-4c9f-9e31-fd70415af8c4', 'owner': None} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-21aa5a27-df3b-4d3a-ba40-4e37fdc999b0 +Openstack-Request-Id: req-99ceea01-2537-4a5c-9076-5e4482102e52 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The resource_class field is mandatory when not backfilling\", \"debuginfo\": null}"} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '5baf9b4f-814e-4107-b6ba-f65312d55fd8', 'owner': '12345'} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '6305011f-b693-4de5-b4d9-3a90ccb4f557', 'owner': '12345'} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/5baf9b4f-814e-4107-b6ba-f65312d55fd8 -Openstack-Request-Id: req-0a904348-bf84-4d0b-aae1-4d7658e3d1fc +Location: http://localhost/v1/allocations/6305011f-b693-4de5-b4d9-3a90ccb4f557 +Openstack-Request-Id: req-ab5304a2-3158-4382-9a0b-c70f8a59145d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5baf9b4f-814e-4107-b6ba-f65312d55fd8", "created_at": "2024-01-06T13:31:24.687766+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/5baf9b4f-814e-4107-b6ba-f65312d55fd8", "rel": "self"}, {"href": "http://localhost/allocations/5baf9b4f-814e-4107-b6ba-f65312d55fd8", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/5baf9b4f-814e-4107-b6ba-f65312d55fd8 {} -GOT:{'uuid': '5baf9b4f-814e-4107-b6ba-f65312d55fd8', 'created_at': '2024-01-06T13:31:24.687766+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/5baf9b4f-814e-4107-b6ba-f65312d55fd8', 'rel': 'self'}, {'href': 'http://localhost/allocations/5baf9b4f-814e-4107-b6ba-f65312d55fd8', 'rel': 'bookmark'}], 'node_uuid': None} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '9592b90b-a4ba-40bb-a470-ab5fa45c7bd0', 'owner': None} +{"uuid": "6305011f-b693-4de5-b4d9-3a90ccb4f557", "created_at": "2024-01-06T14:10:20.151258+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/6305011f-b693-4de5-b4d9-3a90ccb4f557", "rel": "self"}, {"href": "http://localhost/allocations/6305011f-b693-4de5-b4d9-3a90ccb4f557", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/6305011f-b693-4de5-b4d9-3a90ccb4f557 {} +GOT:{'uuid': '6305011f-b693-4de5-b4d9-3a90ccb4f557', 'created_at': '2024-01-06T14:10:20.151258+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/6305011f-b693-4de5-b4d9-3a90ccb4f557', 'rel': 'self'}, {'href': 'http://localhost/allocations/6305011f-b693-4de5-b4d9-3a90ccb4f557', 'rel': 'bookmark'}], 'node_uuid': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '868cc22e-cbd0-4a4e-9b76-93d39370c68d', 'owner': None} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/9592b90b-a4ba-40bb-a470-ab5fa45c7bd0 -Openstack-Request-Id: req-3a8c2eed-084a-48f7-9878-658cc2bb4e9b +Location: http://localhost/v1/allocations/868cc22e-cbd0-4a4e-9b76-93d39370c68d +Openstack-Request-Id: req-30e2f735-c8ae-4dad-b9e3-5e18c2c4f549 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "9592b90b-a4ba-40bb-a470-ab5fa45c7bd0", "created_at": "2024-01-06T13:31:25.057451+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/9592b90b-a4ba-40bb-a470-ab5fa45c7bd0", "rel": "self"}, {"href": "http://localhost/allocations/9592b90b-a4ba-40bb-a470-ab5fa45c7bd0", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/9592b90b-a4ba-40bb-a470-ab5fa45c7bd0 {} -GOT:{'uuid': '9592b90b-a4ba-40bb-a470-ab5fa45c7bd0', 'created_at': '2024-01-06T13:31:25.057451+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '123456', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/9592b90b-a4ba-40bb-a470-ab5fa45c7bd0', 'rel': 'self'}, {'href': 'http://localhost/allocations/9592b90b-a4ba-40bb-a470-ab5fa45c7bd0', 'rel': 'bookmark'}], 'node_uuid': None} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '08b80ada-5aef-4a67-a56b-e8894366a882', 'owner': '12345'} +{"uuid": "868cc22e-cbd0-4a4e-9b76-93d39370c68d", "created_at": "2024-01-06T14:10:20.276864+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/868cc22e-cbd0-4a4e-9b76-93d39370c68d", "rel": "self"}, {"href": "http://localhost/allocations/868cc22e-cbd0-4a4e-9b76-93d39370c68d", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/868cc22e-cbd0-4a4e-9b76-93d39370c68d {} +GOT:{'uuid': '868cc22e-cbd0-4a4e-9b76-93d39370c68d', 'created_at': '2024-01-06T14:10:20.276864+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '123456', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/868cc22e-cbd0-4a4e-9b76-93d39370c68d', 'rel': 'self'}, {'href': 'http://localhost/allocations/868cc22e-cbd0-4a4e-9b76-93d39370c68d', 'rel': 'bookmark'}], 'node_uuid': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'd337f1a8-db93-4afa-a93c-47b90a072a7e', 'owner': '12345'} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-46670d2f-4776-4c98-9a7c-1dde8ec10618 +Openstack-Request-Id: req-de07c628-9d79-4ac9-89f9-ef3eb7f7f668 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'bb265228-c5f4-4a9a-8eef-6f6af943974b', 'owner': '12345'} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'ff8b2179-f3fc-411b-a48a-c4b86b6890db', 'owner': '12345'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1c3bfc88-9e32-4702-925e-21fd09a67e78 +Openstack-Request-Id: req-76038d88-7947-4974-86a2-5d421fe92e09 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create allocation with an owner Project ID value 12345 not matching the requestor Project ID 0987. Policy baremetal:allocation:create_restricted is required for this capability.\", \"debuginfo\": null}"} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'traits': [], 'uuid': 'f5ff913c-d3ad-41c2-a31c-599b2d34696a', 'owner': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'traits': [], 'uuid': 'f3a9b5c8-dc5d-45f2-9308-6923a5603f5b', 'owner': None} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-e7437166-e375-40d6-9c0f-a7ec97d5e64a +Openstack-Request-Id: req-37d3c777-aa81-48af-baeb-0fd74e192266 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for allocation: 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff' is too long\", \"debuginfo\": null}"} -POST: /v1/allocations {'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': '09014e74-669a-4d00-88ce-14f340628a23', 'owner': None} +POST: /v1/allocations {'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': 'cd67baa5-78fe-455e-b36a-6c3e985bc90d', 'owner': None} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_valid_extra ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_valid_extra ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_invalid_name -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_invalid_name ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_multiple_events +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_multiple_events ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_candidate_nodes ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_candidate_nodes ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_too_long -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_too_long ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_and_id -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_and_id ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_multi -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_multi ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_one +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_one ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_collection_custom_fields +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_collection_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_bind_port_events +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_bind_port_events ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_no_extra ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_no_extra ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_invalid_api_version ... ok -GOT:Response: 200 OK +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_delete_port_events +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_delete_port_events ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_sort_key +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_sort_key ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_collection_pagination_no_uuid +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_collection_pagination_no_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_binding_host_id +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_binding_host_id ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_traits +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_traits ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_custom_fields_invalid_fields +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_custom_fields_invalid_fields ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_binding_vnic_type +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_binding_vnic_type ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one ... ok +GOT:{'uuid': 'a2e2a327-5d43-49b4-96a4-86206c8d99bb', 'created_at': '2024-01-06T14:10:20.059395+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {}, 'links': [{'href': 'http://foo/v1/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb', 'rel': 'self'}, {'href': 'http://foo/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://foo/v1/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb/nodes', 'rel': 'self'}, {'href': 'http://foo/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb/nodes', 'rel': 'bookmark'}]]} +GET: /v1/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb {} +GOT:{'uuid': 'a2e2a327-5d43-49b4-96a4-86206c8d99bb', 'created_at': '2024-01-06T14:10:20.059395+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {}, 'links': [{'href': 'http://foo/v1/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb', 'rel': 'self'}, {'href': 'http://foo/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://foo/v1/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb/nodes', 'rel': 'self'}, {'href': 'http://foo/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb/nodes', 'rel': 'bookmark'}]]} +GET: /chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb {} +GOT:{'uuid': 'a2e2a327-5d43-49b4-96a4-86206c8d99bb', 'created_at': '2024-01-06T14:10:20.059395+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {}, 'links': [{'href': 'http://foo/v1/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb', 'rel': 'self'}, {'href': 'http://foo/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://foo/v1/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb/nodes', 'rel': 'self'}, {'href': 'http://foo/chassis/a2e2a327-5d43-49b4-96a4-86206c8d99bb/nodes', 'rel': 'bookmark'}]]} +GET: /v1/chassis {} +GOT:{'chassis': [{'uuid': '231f4d08-d22a-4b0d-b8e0-92980195b6f2', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/231f4d08-d22a-4b0d-b8e0-92980195b6f2', 'rel': 'self'}, {'href': 'http://localhost/chassis/231f4d08-d22a-4b0d-b8e0-92980195b6f2', 'rel': 'bookmark'}]}, {'uuid': '372c4abc-062b-49fa-ab32-bb0643c68104', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/372c4abc-062b-49fa-ab32-bb0643c68104', 'rel': 'self'}, {'href': 'http://localhost/chassis/372c4abc-062b-49fa-ab32-bb0643c68104', 'rel': 'bookmark'}]}, {'uuid': '7eb7290b-ae9c-4d5a-94fd-534c0566de84', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/7eb7290b-ae9c-4d5a-94fd-534c0566de84', 'rel': 'self'}, {'href': 'http://localhost/chassis/7eb7290b-ae9c-4d5a-94fd-534c0566de84', 'rel': 'bookmark'}]}, {'uuid': '2a7f9481-d6e1-4baf-8874-bbdd01f67712', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/2a7f9481-d6e1-4baf-8874-bbdd01f67712', 'rel': 'self'}, {'href': 'http://localhost/chassis/2a7f9481-d6e1-4baf-8874-bbdd01f67712', 'rel': 'bookmark'}]}, {'uuid': 'eb6eb295-0079-4080-8235-771b4e841bcc', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/eb6eb295-0079-4080-8235-771b4e841bcc', 'rel': 'self'}, {'href': 'http://localhost/chassis/eb6eb295-0079-4080-8235-771b4e841bcc', 'rel': 'bookmark'}]}]} +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes {} +GOT:{'nodes': [{'uuid': '1f5b8d4e-0a78-4d29-90e0-e84620084c44', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/1f5b8d4e-0a78-4d29-90e0-e84620084c44', 'rel': 'self'}, {'href': 'http://localhost/nodes/1f5b8d4e-0a78-4d29-90e0-e84620084c44', 'rel': 'bookmark'}]}, {'uuid': '3c4af560-29c9-4658-9c48-d82e91af9779', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/3c4af560-29c9-4658-9c48-d82e91af9779', 'rel': 'self'}, {'href': 'http://localhost/nodes/3c4af560-29c9-4658-9c48-d82e91af9779', 'rel': 'bookmark'}]}]} +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes?limit=1 {} +GOT:{'nodes': [{'uuid': '1f5b8d4e-0a78-4d29-90e0-e84620084c44', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/1f5b8d4e-0a78-4d29-90e0-e84620084c44', 'rel': 'self'}, {'href': 'http://localhost/nodes/1f5b8d4e-0a78-4d29-90e0-e84620084c44', '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=1f5b8d4e-0a78-4d29-90e0-e84620084c44'} +GET: /v1/chassis/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/nodes {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f1729d01-640e-4d83-b50d-916ccd071c17 +Openstack-Request-Id: req-e9fe8655-44e2-4d40-a31e-83caba7fbbef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "db0b32f9-5941-4a56-8dc6-7bb6af88f24e", "created_at": "2024-01-06T13:31:21.309528+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/db0b32f9-5941-4a56-8dc6-7bb6af88f24e", "rel": "self"}, {"href": "http://localhost/deploy_templates/db0b32f9-5941-4a56-8dc6-7bb6af88f24e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration0", "args": {}, "priority": 10}, {"interface": "raid", "step": "create_configuration2", "args": {}, "priority": 10}]} -PATCH: /v1/deploy_templates/c7e3f7ca-8ca2-4d25-a2e4-6309f11e5fb2 [{'path': '/name', 'op': 'remove'}] +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis eeeeeeee-cccc-aaaa-bbbb-cccccccccccc could not be found.\", \"debuginfo\": null}"} +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T14:10:20.832911+00:00', 'updated_at': None, '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/nodes {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c1427c00-c10c-465a-b2ec-6f4e7b58e441 +Openstack-Request-Id: req-3dbe370a-9238-402f-9f61-83cf1b9f0d0c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'name' is a required property\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/e3f118f9-18ea-4d79-90d5-9307119f12c9 [{'path': '/non-existent', 'op': 'remove'}] +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis id not specified.\", \"debuginfo\": null}"} +GET: /v1/chassis {} +GOT:{'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?sort_key=uuid {} +GOT:{'chassis': [{'uuid': '9879f0a6-8193-43b9-8e6f-a63fcc0cfea4', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/9879f0a6-8193-43b9-8e6f-a63fcc0cfea4', 'rel': 'self'}, {'href': 'http://localhost/chassis/9879f0a6-8193-43b9-8e6f-a63fcc0cfea4', 'rel': 'bookmark'}]}, {'uuid': '9bb191d6-6ff6-444e-b01e-943d6f4f38c1', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/9bb191d6-6ff6-444e-b01e-943d6f4f38c1', 'rel': 'self'}, {'href': 'http://localhost/chassis/9bb191d6-6ff6-444e-b01e-943d6f4f38c1', 'rel': 'bookmark'}]}, {'uuid': 'f4ed33ab-9a34-4b86-8de5-bea7b8f25e0d', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/f4ed33ab-9a34-4b86-8de5-bea7b8f25e0d', 'rel': 'self'}, {'href': 'http://localhost/chassis/f4ed33ab-9a34-4b86-8de5-bea7b8f25e0d', 'rel': 'bookmark'}]}]} +GET: /v1/chassis?sort_key=foo {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-904dcb86-3e0a-4e34-9155-90c6fab83646 +Openstack-Request-Id: req-70a51900-1ee9-4c0d-a0e0-e905aa03fa4e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /non-existent. Only the following can be updated: extra, name, steps, description\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/435345bc-23f0-4ed3-836f-b89cda92a9fb [{'path': '/steps/1', 'op': 'remove'}] -GOT:Response: 400 Bad Request +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 {} +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_sort_key_invalid +ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_sort_key_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_by_node_not_allowed +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_by_node_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_device_id +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_device_id ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_doesnt_contain_id +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_doesnt_contain_id ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_custom_fields +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_node_uuid_not_allowed +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_node_uuid_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_error +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_error ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_generate_uuid +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_generate_uuid ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-38664461-506d-4401-b34a-b968eda25c66 +Openstack-Request-Id: req-cc327ec0-414c-4d23-8553-f3ea41f54e0f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/steps/1', 'op': 'remove'}'. Reason: can't remove a non-existent object '1'\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/250a25b8-04dd-4d10-b218-1ec0effa335c [{'path': '/steps/0/non-existent', 'op': 'remove'}] -GOT:Response: 400 Bad Request +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}"} +GET: /v1/drivers/test/properties {} +GOT:{'prop1': 'Property 1. Required.'} +GET: /v1/drivers/manual-management/properties {} +GOT:{'prop1': 'Property 1. Required.'} +GET: /v1/drivers/bad_driver/properties {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-57d911ef-4c41-427a-8452-ff67973cf798 +Openstack-Request-Id: req-07cdaa2c-2f9c-472f-8111-fb909dd6851a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/steps/0/non-existent', 'op': 'remove'}'. Reason: can't remove a non-existent object 'non-existent'\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/d3859821-e86d-47b0-925a-27aa92609b55 [{'path': '/steps/0', 'op': 'remove'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-7e6ed7b3-1f25-4683-9351-111ce3079197 +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}"} +POST: /v1/events {'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-da928631-6864-4daa-9e5d-26a35528c458 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: [] is too short\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/c1c8e078-6bb9-4383-8cce-44dcca0d5ef1 [{'path': '/steps', 'op': 'remove'}] + +POST: /v1/events {'events': [{'INVALID': 'fake.event'}]} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-f0fe13d9-483e-4552-a233-1b8b2d7d7fb7 +Openstack-Request-Id: req-204502fe-cb06-48d6-bfbc-c39eb46abc6d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'steps' is a required property\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/3c06d010-e089-4299-9bbd-1afdba4f8ccb [{'path': '/uuid', 'op': 'remove'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'event' is a required property\", \"debuginfo\": null}"} +POST: /v1/events {'events': [{'event': 'invalid.event'}]} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-78b67ba8-8241-43f3-bcd9-477e321a64e4 +Openstack-Request-Id: req-703176b5-1942-4446-996e-8f18fd5a2f01 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: extra, name, steps, description\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/72d201d9-d48d-4593-b788-98af6d700d50 [{'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 +{"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}"} +POST: /v1/events {'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-d4dbfc41-93a8-4613-aa4d-75eef2aff501 +Openstack-Request-Id: req-a6d7679f-f2a1-474d-acea-e9de99c1f5a4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template invalid: Duplicate deploy steps. A deploy template cannot have multiple deploy steps with the same interface and step. Duplicates: interface: raid, step: create_configuration.\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/3bb760c9-8e55-4153-a96b-4b6c62058cdd [{'path': '/steps', 'op': 'replace', 'value': []}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-f60eb5e7-540e-4b79-9a2d-d5dbec07e12e +X-Openstack-Ironic-Api-Version: 1.50 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +POST: /v1/events {'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-8c99fed2-06a3-451e-a789-05b7bcb11333 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: [] is too short\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/5bfddbab-794a-4c25-ab39-f32ceedde39f [{'path': '/name', 'op': 'replace', 'value': None}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-29d222e8-618f-43a6-91aa-71b2439d1a26 + +POST: /v1/events {'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-1cee7e01-5f86-480d-b25b-146415d8e511 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: None is not of type 'string'\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/c85d369e-c15d-49b4-912d-893a0016072c [{'path': '/name', 'op': 'replace', 'value': 'not-a-trait'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-bede611f-1035-4071-a21a-13fcddbb024d + +POST: /v1/events {'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-c9f62003-d30b-4313-9509-bbae5b447af3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/deploy_templates/c0552a39-2fcf-4736-b671-4495f91dd654 [{'path': '/name', 'op': 'replace', 'value': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'}] + +POST: /v1/events {'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-94ccd9c8-2405-4241-8997-4134dfb94569 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' is too long\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/76645107-4be6-4404-bc1d-fbee88a83e0a [{'path': '/steps/0', 'op': 'replace', 'value': {'interface': 'foo', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'priority': 42}}] -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_step_interface_fail -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_step_interface_fail ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_traits -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_traits ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_name_with_none -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_name_with_none ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_with_fields -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_with_fields ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_multi -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_multi ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_by_node_not_allowed -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_by_node_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_collection_custom_fields -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_collection_custom_fields ... ok -PATCH: /v1/allocations/5d75858e-9f00-40a1-84f3-fefda60f7e76 [{'path': '/extra', 'op': 'remove'}] -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-1bd7cab0-40b8-42db-95b3-c90de504f838 +Openstack-Request-Id: req-66abf1a5-db8c-4eb9-94c2-8158863c8182 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5d75858e-9f00-40a1-84f3-fefda60f7e76", "created_at": "2024-01-06T13:31:25.178513+00:00", "updated_at": "2024-01-06T13:31:25.538330+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/5d75858e-9f00-40a1-84f3-fefda60f7e76", "rel": "self"}, {"href": "http://localhost/allocations/5d75858e-9f00-40a1-84f3-fefda60f7e76", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/5d75858e-9f00-40a1-84f3-fefda60f7e76 {} -GOT:{'uuid': '5d75858e-9f00-40a1-84f3-fefda60f7e76', 'created_at': '2024-01-06T13:31:25.178513+00:00', 'updated_at': '2024-01-06T13:31:25.538330+00:00', 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/5d75858e-9f00-40a1-84f3-fefda60f7e76', 'rel': 'self'}, {'href': 'http://localhost/allocations/5d75858e-9f00-40a1-84f3-fefda60f7e76', 'rel': 'bookmark'}], 'node_uuid': None} -PATCH: /v1/allocations/55903bf5-ef7c-41e0-aeb1-bad9cbeb114f [{'path': '/extra/non-existent', 'op': 'remove'}] +{"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}"} +POST: /v1/events {'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-bbe1f1e5-a33c-49ed-b35b-f65665c61249 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove a non-existent object 'non-existent'\", \"debuginfo\": null}"} -PATCH: /v1/allocations/271fbced-f947-4dd3-92c8-cac379dc9f76 [{'path': '/extra/a', 'op': 'remove'}] -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-5bc3549e-095d-429d-88f2-1199ec133a59 +Openstack-Request-Id: req-e4dca68f-f36d-46d4-9f31-cc7c84d1ab0e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "271fbced-f947-4dd3-92c8-cac379dc9f76", "created_at": "2024-01-06T13:31:26.272517+00:00", "updated_at": "2024-01-06T13:31:26.412148+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/271fbced-f947-4dd3-92c8-cac379dc9f76", "rel": "self"}, {"href": "http://localhost/allocations/271fbced-f947-4dd3-92c8-cac379dc9f76", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/271fbced-f947-4dd3-92c8-cac379dc9f76 {} -GOT:{'uuid': '271fbced-f947-4dd3-92c8-cac379dc9f76', 'created_at': '2024-01-06T13:31:26.272517+00:00', 'updated_at': '2024-01-06T13:31:26.412148+00:00', 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/271fbced-f947-4dd3-92c8-cac379dc9f76', 'rel': 'self'}, {'href': 'http://localhost/allocations/271fbced-f947-4dd3-92c8-cac379dc9f76', 'rel': 'bookmark'}], 'node_uuid': None} -PATCH: /v1/allocations/703835b5-6168-468d-a526-496f2ae49295 [{'path': '/uuid', 'op': 'remove'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['binding:vnic_type', 'SHOULD', 'BE', 'TEXT'] is not of type 'string', 'null'\", \"debuginfo\": null}"} +POST: /v1/events {'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-a7dd4759-6e70-47e0-a97e-248c23e1ddf2 +Openstack-Request-Id: req-2c5cb4ef-05ef-4371-81df-374647bddeff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: name, extra\", \"debuginfo\": null}"} -PATCH: /v1/allocations/35e2d265-8691-4d85-95b9-58ec40af2c7d [{'path': '/name', 'value': '[test]', 'op': 'replace'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for device_id: DEVICE_ID_SHOULD_BE_UUID\", \"debuginfo\": null}"} +POST: /v1/events {'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'}]} +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_mac_address +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_mac_address ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_port_id +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_port_id ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_invalid_description +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_invalid_description ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_toolong_description +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_toolong_description ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_status +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_status ... ok +GOT:{'allocations': [{'uuid': 'd4fe2279-865a-4997-aaa4-2d0abd671050', 'created_at': '2024-01-06T14:10:19.428214+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/d4fe2279-865a-4997-aaa4-2d0abd671050', 'rel': 'self'}, {'href': 'http://localhost/allocations/d4fe2279-865a-4997-aaa4-2d0abd671050', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': 'c0ee035f-128f-44b3-add4-6e4ecb2c2d85', 'created_at': '2024-01-06T14:10:19.441033+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/c0ee035f-128f-44b3-add4-6e4ecb2c2d85', 'rel': 'self'}, {'href': 'http://localhost/allocations/c0ee035f-128f-44b3-add4-6e4ecb2c2d85', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '26c241a5-12c7-4134-bbb7-1560388411e9', 'created_at': '2024-01-06T14:10:19.449575+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/26c241a5-12c7-4134-bbb7-1560388411e9', 'rel': 'self'}, {'href': 'http://localhost/allocations/26c241a5-12c7-4134-bbb7-1560388411e9', 'rel': 'bookmark'}], 'node_uuid': None}]} +GET: /v1/allocations?owner=12345 {} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-5ce6663e-d04e-43bb-b990-59e0528522b1 +Openstack-Request-Id: req-431a4c9c-590d-4ef0-a89c-a2d5a57d02be X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update allocation with invalid name '[test]'\", \"debuginfo\": null}"} -PATCH: /v1/allocations/07ee6632-6b13-4e77-8469-dbdd590e4732 [{'path': '/extra/foo2', 'value': 'new value', 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.59 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +GET: /v1/allocations?state=allocating {} +GOT:{'allocations': [{'uuid': '66d88a86-29d8-46f3-8ae3-5a7bc75f7f1b', 'created_at': '2024-01-06T14:10:19.987934+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/66d88a86-29d8-46f3-8ae3-5a7bc75f7f1b', 'rel': 'self'}, {'href': 'http://localhost/allocations/66d88a86-29d8-46f3-8ae3-5a7bc75f7f1b', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': 'efc5d1e4-2d8f-4a47-905c-e5c5c55ec18f', 'created_at': '2024-01-06T14:10:20.005199+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/efc5d1e4-2d8f-4a47-905c-e5c5c55ec18f', 'rel': 'self'}, {'href': 'http://localhost/allocations/efc5d1e4-2d8f-4a47-905c-e5c5c55ec18f', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': 'ecacce47-c701-4e9b-8db2-c275e248822f', 'created_at': '2024-01-06T14:10:20.014082+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/ecacce47-c701-4e9b-8db2-c275e248822f', 'rel': 'self'}, {'href': 'http://localhost/allocations/ecacce47-c701-4e9b-8db2-c275e248822f', 'rel': 'bookmark'}], 'node_uuid': None}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation {} +GOT:{'uuid': '899e9c9c-0f2b-41e8-97d6-e0966885e800', 'created_at': '2024-01-06T14:10:20.296646+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/899e9c9c-0f2b-41e8-97d6-e0966885e800', 'rel': 'self'}, {'href': 'http://localhost/allocations/899e9c9c-0f2b-41e8-97d6-e0966885e800', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation/75bbd273-1650-4310-a040-1369c466141c {} +GOT:Response: 405 Method Not Allowed +Allow: DELETE, GET Content-Type: application/json -Openstack-Request-Id: req-5b005609-50eb-427d-b2b9-7418a37b77a8 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "07ee6632-6b13-4e77-8469-dbdd590e4732", "created_at": "2024-01-06T13:31:27.350064+00:00", "updated_at": "2024-01-06T13:31:27.448410+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/07ee6632-6b13-4e77-8469-dbdd590e4732", "rel": "self"}, {"href": "http://localhost/allocations/07ee6632-6b13-4e77-8469-dbdd590e4732", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/07ee6632-6b13-4e77-8469-dbdd590e4732 {} -GOT:{'uuid': '07ee6632-6b13-4e77-8469-dbdd590e4732', 'created_at': '2024-01-06T13:31:27.350064+00:00', 'updated_at': '2024-01-06T13:31:27.448410+00:00', 'candidate_nodes': [], 'extra': {'foo1': 'bar1', 'foo2': 'new value', 'foo3': 'bar3'}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/07ee6632-6b13-4e77-8469-dbdd590e4732', 'rel': 'self'}, {'href': 'http://localhost/allocations/07ee6632-6b13-4e77-8469-dbdd590e4732', 'rel': 'bookmark'}], 'node_uuid': None} -PATCH: /v1/allocations/d3bb0e1f-3918-41c7-ae4c-5723e2887066 [{'path': '/name', 'value': None, 'op': 'replace'}] -GOT:Response: 200 OK +{"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} +GET: /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\": \"\"}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation?fields=name,extra {} +GOT:{'extra': {}, 'name': None, 'links': [{'href': 'http://localhost/v1/allocations/c7d529b2-5388-4d5e-b86c-5843b14a3f17', 'rel': 'self'}, {'href': 'http://localhost/allocations/c7d529b2-5388-4d5e-b86c-5843b14a3f17', 'rel': 'bookmark'}]} +GET: /v1/allocations?fields=uuid,extra {} +GOT:{'allocations': [{'uuid': 'b1909541-0705-448e-983c-bccb249f8954', 'extra': {}, 'links': [{'href': 'http://localhost/v1/allocations/b1909541-0705-448e-983c-bccb249f8954', 'rel': 'self'}, {'href': 'http://localhost/allocations/b1909541-0705-448e-983c-bccb249f8954', 'rel': 'bookmark'}]}, {'uuid': '1aa41319-e13f-4c71-b790-a2f33f21d6cb', 'extra': {}, 'links': [{'href': 'http://localhost/v1/allocations/1aa41319-e13f-4c71-b790-a2f33f21d6cb', 'rel': 'self'}, {'href': 'http://localhost/allocations/1aa41319-e13f-4c71-b790-a2f33f21d6cb', 'rel': 'bookmark'}]}, {'uuid': 'e9cf75e2-0463-4d37-986d-2ef7a3161de1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/allocations/e9cf75e2-0463-4d37-986d-2ef7a3161de1', 'rel': 'self'}, {'href': 'http://localhost/allocations/e9cf75e2-0463-4d37-986d-2ef7a3161de1', 'rel': 'bookmark'}]}]} +GET: /v1/allocations?fields=node_uuid&limit=2 {} +GOT:{'allocations': [{'links': [{'href': 'http://localhost/v1/allocations/4d6fada6-2c9b-4980-833e-ced7ae308d93', 'rel': 'self'}, {'href': 'http://localhost/allocations/4d6fada6-2c9b-4980-833e-ced7ae308d93', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'links': [{'href': 'http://localhost/v1/allocations/a08e0aa7-0efc-423d-bd32-ba980963b84e', 'rel': 'self'}, {'href': 'http://localhost/allocations/a08e0aa7-0efc-423d-bd32-ba980963b84e', '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=a08e0aa7-0efc-423d-bd32-ba980963b84e'} +GET: /v1/allocations/a0140db3-9d45-4666-9b9c-4473e0f13ed8?fields=uuid,spongebob {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-20040caf-a0b0-4af9-85a0-2311ea7ab18b +Openstack-Request-Id: req-87c796a8-f789-40a8-8f92-8d62d748135b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "d3bb0e1f-3918-41c7-ae4c-5723e2887066", "created_at": "2024-01-06T13:31:27.709088+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/d3bb0e1f-3918-41c7-ae4c-5723e2887066", "rel": "self"}, {"href": "http://localhost/allocations/d3bb0e1f-3918-41c7-ae4c-5723e2887066", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/d3bb0e1f-3918-41c7-ae4c-5723e2887066 {} -GOT:{'uuid': 'd3bb0e1f-3918-41c7-ae4c-5723e2887066', 'created_at': '2024-01-06T13:31:27.709088+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/d3bb0e1f-3918-41c7-ae4c-5723e2887066', 'rel': 'self'}, {'href': 'http://localhost/allocations/d3bb0e1f-3918-41c7-ae4c-5723e2887066', 'rel': 'bookmark'}], 'node_uuid': None} -PATCH: /v1/allocations/80136b4f-9cb1-4de8-985b-da8b455c7764 [{'path': '/name', 'value': 'test', 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_singular -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_singular ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_name_already_exist -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_name_already_exist ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_node_uuid_not_allowed -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_node_uuid_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_collection_pagination_no_uuid -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_collection_pagination_no_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_non_existent_step_fail -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_non_existent_step_fail ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_error -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_error ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_custom_fields_invalid_fields -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_custom_fields_invalid_fields ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_step_invalid_interface -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_step_invalid_interface ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_not_allowed -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_not_allowed ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} +GET: /v1/allocations/8192ef38-c683-4601-a4a7-85b41dc330a7 {} +GOT:{'uuid': '8192ef38-c683-4601-a4a7-85b41dc330a7', 'created_at': '2024-01-06T14:10:21.575242+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/8192ef38-c683-4601-a4a7-85b41dc330a7', 'rel': 'self'}, {'href': 'http://localhost/allocations/8192ef38-c683-4601-a4a7-85b41dc330a7', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/allocations/5460bdec-125c-4ef8-8a30-4e08f639de69?fields=resource_class,extra {} +GOT:{'extra': {}, 'resource_class': 'baremetal', 'links': [{'href': 'http://localhost/v1/allocations/5460bdec-125c-4ef8-8a30-4e08f639de69', 'rel': 'self'}, {'href': 'http://localhost/allocations/5460bdec-125c-4ef8-8a30-4e08f639de69', 'rel': 'bookmark'}]} +GET: /v1/allocations/7fce325b-0649-4ee6-8620-8ceaa78ca8b7 {} +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_invalid_api_version_without_check +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_invalid_api_version_without_check ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json ... ok GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/09014e74-669a-4d00-88ce-14f340628a23 -Openstack-Request-Id: req-59aad8c1-8040-40ac-89ba-c80ebff20c84 +Location: http://localhost/v1/allocations/cd67baa5-78fe-455e-b36a-6c3e985bc90d +Openstack-Request-Id: req-34f4e23d-b5e7-4f39-bcbf-f9b853af652d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "09014e74-669a-4d00-88ce-14f340628a23", "created_at": "2024-01-06T13:31:26.749888+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": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/09014e74-669a-4d00-88ce-14f340628a23", "rel": "self"}, {"href": "http://localhost/allocations/09014e74-669a-4d00-88ce-14f340628a23", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/09014e74-669a-4d00-88ce-14f340628a23 {} -GOT:{'uuid': '09014e74-669a-4d00-88ce-14f340628a23', 'created_at': '2024-01-06T13:31:26.749888+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/09014e74-669a-4d00-88ce-14f340628a23', 'rel': 'self'}, {'href': 'http://localhost/allocations/09014e74-669a-4d00-88ce-14f340628a23', 'rel': 'bookmark'}], 'node_uuid': None} -POST: /v1/allocations {'candidate_nodes': ['node-1', 'e1ef2f42-0ae8-43cc-b217-c328c4a38336'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '38f8ab42-a7da-4355-85e1-45cc5e72ac2f', 'owner': None} +{"uuid": "cd67baa5-78fe-455e-b36a-6c3e985bc90d", "created_at": "2024-01-06T14:10:20.882238+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": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/cd67baa5-78fe-455e-b36a-6c3e985bc90d", "rel": "self"}, {"href": "http://localhost/allocations/cd67baa5-78fe-455e-b36a-6c3e985bc90d", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/cd67baa5-78fe-455e-b36a-6c3e985bc90d {} +GOT:{'uuid': 'cd67baa5-78fe-455e-b36a-6c3e985bc90d', 'created_at': '2024-01-06T14:10:20.882238+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/cd67baa5-78fe-455e-b36a-6c3e985bc90d', 'rel': 'self'}, {'href': 'http://localhost/allocations/cd67baa5-78fe-455e-b36a-6c3e985bc90d', 'rel': 'bookmark'}], 'node_uuid': None} +POST: /v1/allocations {'candidate_nodes': ['node-1', '25df1862-df61-4a05-9914-986c895413a1'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'e657861b-dd41-4770-a399-78b2a670343f', 'owner': None} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/38f8ab42-a7da-4355-85e1-45cc5e72ac2f -Openstack-Request-Id: req-5001393f-b549-4e4e-b0a9-bf05a69568ea +Location: http://localhost/v1/allocations/e657861b-dd41-4770-a399-78b2a670343f +Openstack-Request-Id: req-ec144db5-9f2c-4208-a730-474e4c1b66b6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "38f8ab42-a7da-4355-85e1-45cc5e72ac2f", "created_at": "2024-01-06T13:31:27.178147+00:00", "updated_at": null, "candidate_nodes": ["1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "e1ef2f42-0ae8-43cc-b217-c328c4a38336"], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/38f8ab42-a7da-4355-85e1-45cc5e72ac2f", "rel": "self"}, {"href": "http://localhost/allocations/38f8ab42-a7da-4355-85e1-45cc5e72ac2f", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/38f8ab42-a7da-4355-85e1-45cc5e72ac2f {} -GOT:{'uuid': '38f8ab42-a7da-4355-85e1-45cc5e72ac2f', 'created_at': '2024-01-06T13:31:27.178147+00:00', 'updated_at': None, 'candidate_nodes': ['1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'e1ef2f42-0ae8-43cc-b217-c328c4a38336'], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/38f8ab42-a7da-4355-85e1-45cc5e72ac2f', 'rel': 'self'}, {'href': 'http://localhost/allocations/38f8ab42-a7da-4355-85e1-45cc5e72ac2f', 'rel': 'bookmark'}], 'node_uuid': None} -POST: /v1/allocations {'candidate_nodes': [], 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '2ff4b6cd-bc95-4d4f-a4c6-772f666c0543', 'owner': None} +{"uuid": "e657861b-dd41-4770-a399-78b2a670343f", "created_at": "2024-01-06T14:10:21.100067+00:00", "updated_at": null, "candidate_nodes": ["1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "25df1862-df61-4a05-9914-986c895413a1"], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/e657861b-dd41-4770-a399-78b2a670343f", "rel": "self"}, {"href": "http://localhost/allocations/e657861b-dd41-4770-a399-78b2a670343f", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/e657861b-dd41-4770-a399-78b2a670343f {} +GOT:{'uuid': 'e657861b-dd41-4770-a399-78b2a670343f', 'created_at': '2024-01-06T14:10:21.100067+00:00', 'updated_at': None, 'candidate_nodes': ['1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '25df1862-df61-4a05-9914-986c895413a1'], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/e657861b-dd41-4770-a399-78b2a670343f', 'rel': 'self'}, {'href': 'http://localhost/allocations/e657861b-dd41-4770-a399-78b2a670343f', 'rel': 'bookmark'}], 'node_uuid': None} +POST: /v1/allocations {'candidate_nodes': [], 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'ba672027-bb6a-466a-8834-5ec74e966473', 'owner': None} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/2ff4b6cd-bc95-4d4f-a4c6-772f666c0543 -Openstack-Request-Id: req-e112fd61-4a76-4f58-9632-ce76a5daa51c +Location: http://localhost/v1/allocations/ba672027-bb6a-466a-8834-5ec74e966473 +Openstack-Request-Id: req-967f56bb-6c46-4b54-89ff-229ddc631093 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "2ff4b6cd-bc95-4d4f-a4c6-772f666c0543", "created_at": "2024-01-06T13:31:27.485958+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/2ff4b6cd-bc95-4d4f-a4c6-772f666c0543", "rel": "self"}, {"href": "http://localhost/allocations/2ff4b6cd-bc95-4d4f-a4c6-772f666c0543", "rel": "bookmark"}], "node_uuid": null} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': ['CUSTOM_GPU', 'CUSTOM_FOO_BAR'], 'uuid': '2f9df262-8e21-486f-af37-722388e0b6d5', 'owner': None} +{"uuid": "ba672027-bb6a-466a-8834-5ec74e966473", "created_at": "2024-01-06T14:10:21.273278+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/ba672027-bb6a-466a-8834-5ec74e966473", "rel": "self"}, {"href": "http://localhost/allocations/ba672027-bb6a-466a-8834-5ec74e966473", "rel": "bookmark"}], "node_uuid": null} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': ['CUSTOM_GPU', 'CUSTOM_FOO_BAR'], 'uuid': 'b34136f7-763e-4b76-addc-33ea6bc6bc50', 'owner': None} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/2f9df262-8e21-486f-af37-722388e0b6d5 -Openstack-Request-Id: req-c4e85b4b-dfa1-4a28-a902-161d00946539 +Location: http://localhost/v1/allocations/b34136f7-763e-4b76-addc-33ea6bc6bc50 +Openstack-Request-Id: req-e6fc8d08-589d-468e-9e50-db08c65d03ce X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "2f9df262-8e21-486f-af37-722388e0b6d5", "created_at": "2024-01-06T13:31:27.840096+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": ["CUSTOM_GPU", "CUSTOM_FOO_BAR"], "links": [{"href": "http://localhost/v1/allocations/2f9df262-8e21-486f-af37-722388e0b6d5", "rel": "self"}, {"href": "http://localhost/allocations/2f9df262-8e21-486f-af37-722388e0b6d5", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/2f9df262-8e21-486f-af37-722388e0b6d5 {} -GOT:{'uuid': '2f9df262-8e21-486f-af37-722388e0b6d5', 'created_at': '2024-01-06T13:31:27.840096+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': ['CUSTOM_GPU', 'CUSTOM_FOO_BAR'], 'links': [{'href': 'http://localhost/v1/allocations/2f9df262-8e21-486f-af37-722388e0b6d5', 'rel': 'self'}, {'href': 'http://localhost/allocations/2f9df262-8e21-486f-af37-722388e0b6d5', 'rel': 'bookmark'}], 'node_uuid': None} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '9581b493-ff3c-4538-ab35-c0c9c382bb59', 'owner': None} +{"uuid": "b34136f7-763e-4b76-addc-33ea6bc6bc50", "created_at": "2024-01-06T14:10:21.411484+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": ["CUSTOM_GPU", "CUSTOM_FOO_BAR"], "links": [{"href": "http://localhost/v1/allocations/b34136f7-763e-4b76-addc-33ea6bc6bc50", "rel": "self"}, {"href": "http://localhost/allocations/b34136f7-763e-4b76-addc-33ea6bc6bc50", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/b34136f7-763e-4b76-addc-33ea6bc6bc50 {} +GOT:{'uuid': 'b34136f7-763e-4b76-addc-33ea6bc6bc50', 'created_at': '2024-01-06T14:10:21.411484+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': ['CUSTOM_GPU', 'CUSTOM_FOO_BAR'], 'links': [{'href': 'http://localhost/v1/allocations/b34136f7-763e-4b76-addc-33ea6bc6bc50', 'rel': 'self'}, {'href': 'http://localhost/allocations/b34136f7-763e-4b76-addc-33ea6bc6bc50', 'rel': 'bookmark'}], 'node_uuid': None} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'd0668872-6434-44b6-8658-e02e489c692f', 'owner': None} GOT:Response: 405 Method Not Allowed Allow: DELETE, GET Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '3611366a-0d00-48b5-b219-ae576dd466cd', 'owner': None, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '468d0dc1-448d-4664-87db-3b5bd0be216f', 'owner': None, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-4d051627-c009-4a56-a843-99fbbe7f4666 +Openstack-Request-Id: req-3e2ec4e6-430a-4211-a8ca-2b78bf157904 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for allocation: Additional properties are not allowed ('node_uuid' was unexpected)\", \"debuginfo\": null}"} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '2c451130-a763-43dd-8e9d-eb0aaa8bb6e6', 'owner': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '1c4a976d-2be3-4a44-bea5-e5196ca863db', 'owner': None} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/2c451130-a763-43dd-8e9d-eb0aaa8bb6e6 -Openstack-Request-Id: req-f6f78a36-a35c-478d-b596-9d0bab3c2600 +Location: http://localhost/v1/allocations/1c4a976d-2be3-4a44-bea5-e5196ca863db +Openstack-Request-Id: req-557df5ea-6d6e-4196-b0fd-25af95c503f1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 -{"uuid": "2c451130-a763-43dd-8e9d-eb0aaa8bb6e6", "created_at": "2024-01-06T13:31:29.003587+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/2c451130-a763-43dd-8e9d-eb0aaa8bb6e6", "rel": "self"}, {"href": "http://localhost/allocations/2c451130-a763-43dd-8e9d-eb0aaa8bb6e6", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/2c451130-a763-43dd-8e9d-eb0aaa8bb6e6 {} +{"uuid": "1c4a976d-2be3-4a44-bea5-e5196ca863db", "created_at": "2024-01-06T14:10:21.927676+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/1c4a976d-2be3-4a44-bea5-e5196ca863db", "rel": "self"}, {"href": "http://localhost/allocations/1c4a976d-2be3-4a44-bea5-e5196ca863db", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/1c4a976d-2be3-4a44-bea5-e5196ca863db {} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_deprecated_without_owner ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_deprecated_without_owner ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_forbidden ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_not_found -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_id -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_id ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_custom_fields -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_custom_fields ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_normal ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_normal ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_owner_not_acceptable -ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_owner_not_acceptable ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_id_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_id_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json_in_name +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json_in_name ... ok ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_older_version ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_older_version ... ok -GOT:{'allocations': [{'uuid': 'ee2ceaff-69e7-491e-ba3a-38a482fdb6da', 'created_at': '2024-01-06T13:31:25.663433+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/ee2ceaff-69e7-491e-ba3a-38a482fdb6da', 'rel': 'self'}, {'href': 'http://localhost/allocations/ee2ceaff-69e7-491e-ba3a-38a482fdb6da', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': 'a726eba2-c588-48e3-8d11-1c4ea4ec4789', 'created_at': '2024-01-06T13:31:25.672550+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/a726eba2-c588-48e3-8d11-1c4ea4ec4789', 'rel': 'self'}, {'href': 'http://localhost/allocations/a726eba2-c588-48e3-8d11-1c4ea4ec4789', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '66efebb0-0990-47c1-ba5a-a8ddca16ebf0', 'created_at': '2024-01-06T13:31:25.685595+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/66efebb0-0990-47c1-ba5a-a8ddca16ebf0', 'rel': 'self'}, {'href': 'http://localhost/allocations/66efebb0-0990-47c1-ba5a-a8ddca16ebf0', 'rel': 'bookmark'}], 'node_uuid': None}]} -GET: /v1/allocations?owner=12345 {} -GOT:Response: 406 Not Acceptable +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_unbind_port_events +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_unbind_port_events ... ok +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-2a1a90df-8e43-4842-b54e-977ecac7de0e +Openstack-Request-Id: req-cc027318-1f2e-47a1-968f-86a10fe47f7e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/allocations?state=allocating {} -GOT:{'allocations': [{'uuid': '729ebe83-09ca-4088-a7a1-d17643076725', 'created_at': '2024-01-06T13:31:26.603751+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/729ebe83-09ca-4088-a7a1-d17643076725', 'rel': 'self'}, {'href': 'http://localhost/allocations/729ebe83-09ca-4088-a7a1-d17643076725', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '4048f43a-73dc-4ac3-b60f-e3663ccea9ee', 'created_at': '2024-01-06T13:31:26.608647+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/4048f43a-73dc-4ac3-b60f-e3663ccea9ee', 'rel': 'self'}, {'href': 'http://localhost/allocations/4048f43a-73dc-4ac3-b60f-e3663ccea9ee', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '688b1132-c820-4e86-8b18-a9bb6d22c458', 'created_at': '2024-01-06T13:31:26.621487+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/688b1132-c820-4e86-8b18-a9bb6d22c458', 'rel': 'self'}, {'href': 'http://localhost/allocations/688b1132-c820-4e86-8b18-a9bb6d22c458', 'rel': 'bookmark'}], 'node_uuid': None}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation {} -GOT:{'uuid': '3eb99f14-626e-4219-9003-c33da9e3e762', 'created_at': '2024-01-06T13:31:27.075344+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/3eb99f14-626e-4219-9003-c33da9e3e762', 'rel': 'self'}, {'href': 'http://localhost/allocations/3eb99f14-626e-4219-9003-c33da9e3e762', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation/c73f428f-07bd-4512-a50f-ac480c88da22 {} -GOT:Response: 405 Method Not Allowed -Allow: DELETE, GET -Content-Type: application/json -{"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} -GET: /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\": \"\"}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation?fields=name,extra {} -GOT:{'extra': {}, 'name': None, 'links': [{'href': 'http://localhost/v1/allocations/404b0026-1cc5-48a4-9385-724b46141c0f', 'rel': 'self'}, {'href': 'http://localhost/allocations/404b0026-1cc5-48a4-9385-724b46141c0f', 'rel': 'bookmark'}]} -GET: /v1/allocations?fields=uuid,extra {} -GOT:{'allocations': [{'uuid': 'c557418f-5ea6-4be0-add5-9919f5bf2b05', 'extra': {}, 'links': [{'href': 'http://localhost/v1/allocations/c557418f-5ea6-4be0-add5-9919f5bf2b05', 'rel': 'self'}, {'href': 'http://localhost/allocations/c557418f-5ea6-4be0-add5-9919f5bf2b05', 'rel': 'bookmark'}]}, {'uuid': '517f673c-e3ec-47bc-b77f-d94aa956807d', 'extra': {}, 'links': [{'href': 'http://localhost/v1/allocations/517f673c-e3ec-47bc-b77f-d94aa956807d', 'rel': 'self'}, {'href': 'http://localhost/allocations/517f673c-e3ec-47bc-b77f-d94aa956807d', 'rel': 'bookmark'}]}, {'uuid': 'fcd7eb32-3369-4c49-96e7-92e13e1a12a3', 'extra': {}, 'links': [{'href': 'http://localhost/v1/allocations/fcd7eb32-3369-4c49-96e7-92e13e1a12a3', 'rel': 'self'}, {'href': 'http://localhost/allocations/fcd7eb32-3369-4c49-96e7-92e13e1a12a3', 'rel': 'bookmark'}]}]} -GET: /v1/allocations?fields=node_uuid&limit=2 {} -GOT:{'allocations': [{'links': [{'href': 'http://localhost/v1/allocations/8956a660-8fe8-451a-a9e9-0c112d425cae', 'rel': 'self'}, {'href': 'http://localhost/allocations/8956a660-8fe8-451a-a9e9-0c112d425cae', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'links': [{'href': 'http://localhost/v1/allocations/fdf3c82b-4af8-4ed3-a1a8-17752619c8ad', 'rel': 'self'}, {'href': 'http://localhost/allocations/fdf3c82b-4af8-4ed3-a1a8-17752619c8ad', '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=fdf3c82b-4af8-4ed3-a1a8-17752619c8ad'} -GET: /v1/allocations/6bff0ca4-4f90-4f43-aebe-ccd55dded7f2?fields=uuid,spongebob {} -GOT:Response: 400 Bad Request +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}"} +POST: /v1/chassis {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 'data-center-1-chassis'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-69f6ac52-8cfa-4ec3-96ec-f74f19945c98 +Location: http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +Openstack-Request-Id: req-27d0b6b2-269c-442d-b0b4-bfed0eedcd75 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} -GET: /v1/allocations/699d74fe-a053-46a0-a3fb-c74c3d9477e0 {} -GOT:{'uuid': '699d74fe-a053-46a0-a3fb-c74c3d9477e0', 'created_at': '2024-01-06T13:31:29.282905+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/699d74fe-a053-46a0-a3fb-c74c3d9477e0', 'rel': 'self'}, {'href': 'http://localhost/allocations/699d74fe-a053-46a0-a3fb-c74c3d9477e0', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/allocations/ddeb3797-8885-4f02-b6e2-fb746e419f1b?fields=resource_class,extra {} -GOT:{'extra': {}, 'resource_class': 'baremetal', 'links': [{'href': 'http://localhost/v1/allocations/ddeb3797-8885-4f02-b6e2-fb746e419f1b', 'rel': 'self'}, {'href': 'http://localhost/allocations/ddeb3797-8885-4f02-b6e2-fb746e419f1b', 'rel': 'bookmark'}]} -GET: /v1/allocations/a4b1af00-25eb-4a16-ace4-1dfd7c63e2fc {} -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_multi -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_multi ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_invalid_api_version_without_check -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_invalid_api_version_without_check ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_with_mismatch_owner -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_with_mismatch_owner ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name_old_api_version -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_root -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_root ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_with_owner -ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_with_owner ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_root_non_existent -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_root_non_existent ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name_with_json -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name_with_json ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json_in_name -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json_in_name ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_patch_nodes_subresource -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_patch_nodes_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_suffix -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_suffix ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_invalid_name -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_invalid_name ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_owner_field -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_owner_field ... ok -GOT:{'uuid': '2c451130-a763-43dd-8e9d-eb0aaa8bb6e6', 'created_at': '2024-01-06T13:31:29.003587+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/2c451130-a763-43dd-8e9d-eb0aaa8bb6e6', 'rel': 'self'}, {'href': 'http://localhost/allocations/2c451130-a763-43dd-8e9d-eb0aaa8bb6e6', 'rel': 'bookmark'}], 'node_uuid': None} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'fe5f5ac4-4f47-4cdc-bee4-ce782f870537', 'owner': None} -GOT:Response: 403 Forbidden +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 {} +GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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'}]]} +POST: /v1/chassis {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {'foo': 123}, 'description': 'data-center-1-chassis'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-1fccc4b1-3c1d-4dd7-b050-9c241a2e0fee +Location: http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +Openstack-Request-Id: req-1212a779-5a44-4ec6-b906-0e3903d48e99 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'bdff96cb-61ba-4943-90a5-6c72746bf45d', 'owner': None} -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:10:21.729077+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 {} +GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T14:10:21.729077+00:00', 'updated_at': None, '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'}]]} +POST: /v1/chassis {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 'data-center-1-chassis'} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Location: http://localhost/v1/allocations/bdff96cb-61ba-4943-90a5-6c72746bf45d -Openstack-Request-Id: req-5aaa5148-ee9f-45c8-883c-07e70ac74232 +Openstack-Request-Id: req-0974a882-1d87-420e-870d-03a75c3c7c8a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.60 -{"uuid": "bdff96cb-61ba-4943-90a5-6c72746bf45d", "created_at": "2024-01-06T13:31:29.667482+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/bdff96cb-61ba-4943-90a5-6c72746bf45d", "rel": "self"}, {"href": "http://localhost/allocations/bdff96cb-61ba-4943-90a5-6c72746bf45d", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/bdff96cb-61ba-4943-90a5-6c72746bf45d {} -GOT:{'uuid': 'bdff96cb-61ba-4943-90a5-6c72746bf45d', 'created_at': '2024-01-06T13:31:29.667482+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/bdff96cb-61ba-4943-90a5-6c72746bf45d', 'rel': 'self'}, {'href': 'http://localhost/allocations/bdff96cb-61ba-4943-90a5-6c72746bf45d', 'rel': 'bookmark'}], 'node_uuid': None} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'aca3a57d-0dfa-4e6c-bd6c-d4e2d2d3dba4'} +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} +POST: /v1/chassis {'extra': {}, 'description': 'data-center-1-chassis'} GOT:Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/allocations/aca3a57d-0dfa-4e6c-bd6c-d4e2d2d3dba4 -Openstack-Request-Id: req-73e840a9-070b-4c41-bb54-a0a8e886e159 +Location: http://localhost/v1/chassis/4f2eff0a-821b-4db9-8879-dd09414787bd +Openstack-Request-Id: req-e5ce3e0d-c2e9-451f-85f9-c23a657f7173 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.59 -{"uuid": "aca3a57d-0dfa-4e6c-bd6c-d4e2d2d3dba4", "created_at": "2024-01-06T13:31:30.032003+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/aca3a57d-0dfa-4e6c-bd6c-d4e2d2d3dba4", "rel": "self"}, {"href": "http://localhost/allocations/aca3a57d-0dfa-4e6c-bd6c-d4e2d2d3dba4", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/aca3a57d-0dfa-4e6c-bd6c-d4e2d2d3dba4 {} -GOT:{'uuid': 'aca3a57d-0dfa-4e6c-bd6c-d4e2d2d3dba4', 'created_at': '2024-01-06T13:31:30.032003+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/aca3a57d-0dfa-4e6c-bd6c-d4e2d2d3dba4', 'rel': 'self'}, {'href': 'http://localhost/allocations/aca3a57d-0dfa-4e6c-bd6c-d4e2d2d3dba4', 'rel': 'bookmark'}], 'node_uuid': None} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '3bda2aa6-c822-466c-8eb8-8c505ec632e7', 'owner': '54321'} -GOT:Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "4f2eff0a-821b-4db9-8879-dd09414787bd", "created_at": "2024-01-06T14:10:21.957837+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/4f2eff0a-821b-4db9-8879-dd09414787bd", "rel": "self"}, {"href": "http://localhost/chassis/4f2eff0a-821b-4db9-8879-dd09414787bd", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/4f2eff0a-821b-4db9-8879-dd09414787bd/nodes", "rel": "self"}, {"href": "http://localhost/chassis/4f2eff0a-821b-4db9-8879-dd09414787bd/nodes", "rel": "bookmark"}]]} +GET: /v1/chassis {} +GOT:{'chassis': [{'uuid': '4f2eff0a-821b-4db9-8879-dd09414787bd', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/4f2eff0a-821b-4db9-8879-dd09414787bd', 'rel': 'self'}, {'href': 'http://localhost/chassis/4f2eff0a-821b-4db9-8879-dd09414787bd', 'rel': 'bookmark'}]}]} +POST: /v1/chassis {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 1334} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-533de3a4-c168-4bba-859b-eb5c02aa0bed +Openstack-Request-Id: req-0d885f88-54cd-4f19-bb7e-1d8210e4ca25 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '604ceecd-2982-4503-a0b9-aa0d03ad722a', 'owner': '12345'} -GOT:Response: 201 Created +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}"} +POST: /v1/chassis {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'} +GOT:Response: 400 Bad Request Content-Type: application/json -Location: http://localhost/v1/allocations/604ceecd-2982-4503-a0b9-aa0d03ad722a -Openstack-Request-Id: req-9e407406-d35a-4268-9543-842dfa87e5d9 +Openstack-Request-Id: req-05b82bc5-d996-418a-b452-f9819164eca1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.60 -{"uuid": "604ceecd-2982-4503-a0b9-aa0d03ad722a", "created_at": "2024-01-06T13:31:30.647937+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/604ceecd-2982-4503-a0b9-aa0d03ad722a", "rel": "self"}, {"href": "http://localhost/allocations/604ceecd-2982-4503-a0b9-aa0d03ad722a", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/604ceecd-2982-4503-a0b9-aa0d03ad722a {} -GOT:{'uuid': '604ceecd-2982-4503-a0b9-aa0d03ad722a', 'created_at': '2024-01-06T13:31:30.647937+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/604ceecd-2982-4503-a0b9-aa0d03ad722a', 'rel': 'self'}, {'href': 'http://localhost/allocations/604ceecd-2982-4503-a0b9-aa0d03ad722a', 'rel': 'bookmark'}], 'node_uuid': None} -GET: /v1/chassis/?limit=3 {} -GOT:{'chassis': [{'uuid': '247ae99b-79d4-4170-b9e1-45ee98114dd1', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/247ae99b-79d4-4170-b9e1-45ee98114dd1', 'rel': 'self'}, {'href': 'http://localhost/chassis/247ae99b-79d4-4170-b9e1-45ee98114dd1', 'rel': 'bookmark'}]}, {'uuid': 'ccde7720-79be-44ef-9587-02226b8ab0c0', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/ccde7720-79be-44ef-9587-02226b8ab0c0', 'rel': 'self'}, {'href': 'http://localhost/chassis/ccde7720-79be-44ef-9587-02226b8ab0c0', 'rel': 'bookmark'}]}, {'uuid': '0a48aefc-ae29-471f-b07c-8183f8a849f3', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/0a48aefc-ae29-471f-b07c-8183f8a849f3', 'rel': 'self'}, {'href': 'http://localhost/chassis/0a48aefc-ae29-471f-b07c-8183f8a849f3', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=uuid,description&limit=3&marker=0a48aefc-ae29-471f-b07c-8183f8a849f3'} -GET: /v1/chassis?fields=extra,uuid {} -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links_custom_fields -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links_default_limit -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links_default_limit ... ok -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for chassis: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' is too long\", \"debuginfo\": null}"} +POST: /v1/chassis {'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'} +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_valid_extra +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_valid_extra ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_post_nodes_subresource +ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_post_nodes_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_with_mismatch_owner +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_with_mismatch_owner ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_suffix +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_suffix ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_unknown_event_property +ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_unknown_event_property ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_not_list +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_not_list ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_owner_field +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_owner_field ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_with_owner +ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_with_owner ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_args_value_invalid +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_args_value_invalid ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links_custom_fields +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_interface_value_invalid +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_interface_value_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_links +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_links ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_key_invalid +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_key_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis +ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links_default_limit +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links_default_limit ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_min_length_step_value +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_min_length_step_value ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis_not_found +ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis_not_found ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_interface +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_interface ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_many +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_many ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_query +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_query ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_step_key +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_step_key ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis_with_node +ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis_with_node ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_one +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_one ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_step_value +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_step_value ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_query_false +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_query_false ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_not_dict +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_not_dict ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_valid +ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_valid ... ok +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow allocations\"}"} +GET: /v1/allocations/ba!na!na! {} +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow allocations\"}"} +GET: /v1/allocations/519637e4-4dfa-478f-a5e2-56cf3299ff2a.json {} +GOT:{'uuid': '519637e4-4dfa-478f-a5e2-56cf3299ff2a', 'created_at': '2024-01-06T14:10:22.174941+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/519637e4-4dfa-478f-a5e2-56cf3299ff2a', 'rel': 'self'}, {'href': 'http://localhost/allocations/519637e4-4dfa-478f-a5e2-56cf3299ff2a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/allocations/83dbae15-5247-40d0-b87e-23e20c94967a {} +GOT:{'uuid': '83dbae15-5247-40d0-b87e-23e20c94967a', 'created_at': '2024-01-06T14:10:22.366859+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'pg.json', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/83dbae15-5247-40d0-b87e-23e20c94967a', 'rel': 'self'}, {'href': 'http://localhost/allocations/83dbae15-5247-40d0-b87e-23e20c94967a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/allocations/77db3ac9-0587-4b13-8ce6-8a110cd9d810 {} +GOT:{'uuid': '77db3ac9-0587-4b13-8ce6-8a110cd9d810', 'created_at': '2024-01-06T14:10:22.615236+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'pg.1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/77db3ac9-0587-4b13-8ce6-8a110cd9d810', 'rel': 'self'}, {'href': 'http://localhost/allocations/77db3ac9-0587-4b13-8ce6-8a110cd9d810', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/allocations/3d09033a-0e8a-4fc2-bd63-8eee257bc41a?fields=owner {} +GOT:{'owner': '12345', 'links': [{'href': 'http://localhost/v1/allocations/3d09033a-0e8a-4fc2-bd63-8eee257bc41a', 'rel': 'self'}, {'href': 'http://localhost/allocations/3d09033a-0e8a-4fc2-bd63-8eee257bc41a', 'rel': 'bookmark'}]} +GET: /v1/allocations/56337b41-4260-4625-9c14-a214f8b0258a {} +GOT:{'uuid': '56337b41-4260-4625-9c14-a214f8b0258a', 'created_at': '2024-01-06T14:10:22.871508+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/56337b41-4260-4625-9c14-a214f8b0258a', 'rel': 'self'}, {'href': 'http://localhost/allocations/56337b41-4260-4625-9c14-a214f8b0258a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/allocations/56337b41-4260-4625-9c14-a214f8b0258a {} +GOT:{'uuid': '56337b41-4260-4625-9c14-a214f8b0258a', 'created_at': '2024-01-06T14:10:22.871508+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/56337b41-4260-4625-9c14-a214f8b0258a', 'rel': 'self'}, {'href': 'http://localhost/allocations/56337b41-4260-4625-9c14-a214f8b0258a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /allocations/56337b41-4260-4625-9c14-a214f8b0258a {} +GOT:{'uuid': '56337b41-4260-4625-9c14-a214f8b0258a', 'created_at': '2024-01-06T14:10:22.871508+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/56337b41-4260-4625-9c14-a214f8b0258a', 'rel': 'self'}, {'href': 'http://localhost/allocations/56337b41-4260-4625-9c14-a214f8b0258a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/allocations {} +GOT:{'allocations': [{'uuid': 'e3cd10a2-7218-49e2-87f7-5ecce15b02e4', 'created_at': '2024-01-06T14:10:23.040484+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/e3cd10a2-7218-49e2-87f7-5ecce15b02e4', 'rel': 'self'}, {'href': 'http://localhost/allocations/e3cd10a2-7218-49e2-87f7-5ecce15b02e4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'ac1e73f8-53f6-4c33-8ea9-18bbf7144c2b', 'created_at': '2024-01-06T14:10:23.045522+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/ac1e73f8-53f6-4c33-8ea9-18bbf7144c2b', 'rel': 'self'}, {'href': 'http://localhost/allocations/ac1e73f8-53f6-4c33-8ea9-18bbf7144c2b', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '1a06a820-a23c-4d51-84cf-b7054d68b155', 'created_at': '2024-01-06T14:10:23.050270+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/1a06a820-a23c-4d51-84cf-b7054d68b155', 'rel': 'self'}, {'href': 'http://localhost/allocations/1a06a820-a23c-4d51-84cf-b7054d68b155', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'e9f111fa-d29e-4335-9cab-28cb7cef51a9', 'created_at': '2024-01-06T14:10:23.054348+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation3', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/e9f111fa-d29e-4335-9cab-28cb7cef51a9', 'rel': 'self'}, {'href': 'http://localhost/allocations/e9f111fa-d29e-4335-9cab-28cb7cef51a9', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '43fb3eb1-61cc-435d-a6a6-c6143198c70a', 'created_at': '2024-01-06T14:10:23.058138+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation4', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/43fb3eb1-61cc-435d-a6a6-c6143198c70a', 'rel': 'self'}, {'href': 'http://localhost/allocations/43fb3eb1-61cc-435d-a6a6-c6143198c70a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/allocations {} +GOT:{'allocations': [{'uuid': '5e6cdf7d-83c3-4c4b-bc13-d976a1831e52', 'created_at': '2024-01-06T14:10:23.204218+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/5e6cdf7d-83c3-4c4b-bc13-d976a1831e52', 'rel': 'self'}, {'href': 'http://localhost/allocations/5e6cdf7d-83c3-4c4b-bc13-d976a1831e52', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/allocations?sort_key=uuid {} +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key_allowed +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key_allowed ... ok +GOT:{'uuid': '1c4a976d-2be3-4a44-bea5-e5196ca863db', 'created_at': '2024-01-06T14:10:21.927676+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/1c4a976d-2be3-4a44-bea5-e5196ca863db', 'rel': 'self'}, {'href': 'http://localhost/allocations/1c4a976d-2be3-4a44-bea5-e5196ca863db', 'rel': 'bookmark'}], 'node_uuid': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '378bfd02-3dc7-493e-ad9f-ace47dd16c18', 'owner': None} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7fe6d62e-d9e5-4fd9-ade8-05a544f05141 +Openstack-Request-Id: req-930b8b9d-9ca4-42b7-820d-936d82813ade X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "80136b4f-9cb1-4de8-985b-da8b455c7764", "created_at": "2024-01-06T13:31:28.229154+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/80136b4f-9cb1-4de8-985b-da8b455c7764", "rel": "self"}, {"href": "http://localhost/allocations/80136b4f-9cb1-4de8-985b-da8b455c7764", "rel": "bookmark"}], "node_uuid": null} -GET: /v1/allocations/80136b4f-9cb1-4de8-985b-da8b455c7764 {} -GOT:{'uuid': '80136b4f-9cb1-4de8-985b-da8b455c7764', 'created_at': '2024-01-06T13:31:28.229154+00:00', 'updated_at': '2000-01-01T00:00:00+00:00', 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'test', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/80136b4f-9cb1-4de8-985b-da8b455c7764', 'rel': 'self'}, {'href': 'http://localhost/allocations/80136b4f-9cb1-4de8-985b-da8b455c7764', 'rel': 'bookmark'}], 'node_uuid': None} -PATCH: /v1/allocations/a062fff3-5e12-4a26-bdd4-adfc483b401c [{'path': '/name', 'value': 'new', 'op': 'replace'}] -GOT:Response: 500 Internal Server Error +X-Openstack-Ironic-Api-Version: 1.60 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '5513d0c7-9247-4aaf-9f9a-b8c9ace31a6f', 'owner': None} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-1982082e-44b0-4415-b387-e2ff6899946c +Location: http://localhost/v1/allocations/5513d0c7-9247-4aaf-9f9a-b8c9ace31a6f +Openstack-Request-Id: req-cdcbf1a2-0e3b-41f3-a0f3-8300a0d6ad9f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} -PATCH: /v1/allocations/f5054b6b-a638-4fb0-aa3d-00f3eb82404e [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 405 Method Not Allowed +X-Openstack-Ironic-Api-Version: 1.60 +{"uuid": "5513d0c7-9247-4aaf-9f9a-b8c9ace31a6f", "created_at": "2024-01-06T14:10:22.334398+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/5513d0c7-9247-4aaf-9f9a-b8c9ace31a6f", "rel": "self"}, {"href": "http://localhost/allocations/5513d0c7-9247-4aaf-9f9a-b8c9ace31a6f", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/5513d0c7-9247-4aaf-9f9a-b8c9ace31a6f {} +GOT:{'uuid': '5513d0c7-9247-4aaf-9f9a-b8c9ace31a6f', 'created_at': '2024-01-06T14:10:22.334398+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/5513d0c7-9247-4aaf-9f9a-b8c9ace31a6f', 'rel': 'self'}, {'href': 'http://localhost/allocations/5513d0c7-9247-4aaf-9f9a-b8c9ace31a6f', 'rel': 'bookmark'}], 'node_uuid': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '1fd5db66-ba1d-49b5-ada2-263b259528b2'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-4fec9d18-3145-47f9-b2c9-9d3626e568cf +Location: http://localhost/v1/allocations/1fd5db66-ba1d-49b5-ada2-263b259528b2 +Openstack-Request-Id: req-e918f3bd-8de3-493a-9756-efaf54d6386a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/allocations/3fc17ae0-4b7d-461e-9ac2-707957957e0f [{'path': '/name', 'value': 'b', 'op': 'replace'}] -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.59 +{"uuid": "1fd5db66-ba1d-49b5-ada2-263b259528b2", "created_at": "2024-01-06T14:10:22.490022+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/1fd5db66-ba1d-49b5-ada2-263b259528b2", "rel": "self"}, {"href": "http://localhost/allocations/1fd5db66-ba1d-49b5-ada2-263b259528b2", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/1fd5db66-ba1d-49b5-ada2-263b259528b2 {} +GOT:{'uuid': '1fd5db66-ba1d-49b5-ada2-263b259528b2', 'created_at': '2024-01-06T14:10:22.490022+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/1fd5db66-ba1d-49b5-ada2-263b259528b2', 'rel': 'self'}, {'href': 'http://localhost/allocations/1fd5db66-ba1d-49b5-ada2-263b259528b2', 'rel': 'bookmark'}], 'node_uuid': None} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'aafa209a-f942-4ccb-870f-b8ac10d369c3', 'owner': '54321'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4f0fac27-b72f-4f19-9615-aaa637ec94c7 +Openstack-Request-Id: req-e9d84c1e-3b44-42a0-9b7c-1fd766066361 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 3fc17ae0-4b7d-461e-9ac2-707957957e0f could not be found.\", \"debuginfo\": null}"} -PATCH: /v1/allocations/4d788333-5d48-4579-9c1a-14df52d73f14 [{'path': '/owner', 'value': '54321', 'op': 'replace'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.60 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} +POST: /v1/allocations {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '99705031-beb0-40e0-9d94-e60b38d38bf2', 'owner': '12345'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-19cf7a3a-3041-4efb-9769-b0e78828cc12 +Location: http://localhost/v1/allocations/99705031-beb0-40e0-9d94-e60b38d38bf2 +Openstack-Request-Id: req-e8e4d449-e24e-4606-a597-2f9133daca09 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /owner. Only the following can be updated: name, extra\", \"debuginfo\": null}"} -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'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-c1446e48-3436-4c71-8862-d3987705bf4b +X-Openstack-Ironic-Api-Version: 1.60 +{"uuid": "99705031-beb0-40e0-9d94-e60b38d38bf2", "created_at": "2024-01-06T14:10:22.780392+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/99705031-beb0-40e0-9d94-e60b38d38bf2", "rel": "self"}, {"href": "http://localhost/allocations/99705031-beb0-40e0-9d94-e60b38d38bf2", "rel": "bookmark"}], "node_uuid": null} +GET: /v1/allocations/99705031-beb0-40e0-9d94-e60b38d38bf2 {} +GOT:{'uuid': '99705031-beb0-40e0-9d94-e60b38d38bf2', 'created_at': '2024-01-06T14:10:22.780392+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': '12345', 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/99705031-beb0-40e0-9d94-e60b38d38bf2', 'rel': 'self'}, {'href': 'http://localhost/allocations/99705031-beb0-40e0-9d94-e60b38d38bf2', 'rel': 'bookmark'}], 'node_uuid': None} +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GOT:Response: 204 No Content +Openstack-Request-Id: req-d957a43b-3338-409d-8da6-a2a3fc156bc9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:31:29.979321+00:00", "updated_at": "2024-01-06T13:31:30.075498+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 {} -GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T13:31:29.979321+00:00', 'updated_at': '2024-01-06T13:31:30.075498+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'}]]} -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'path': '/description', 'value': 'test', 'op': 'add'}] -GOT:Response: 200 OK +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-afb19584-5628-4668-9382-e8439916f14a +Openstack-Request-Id: req-f16291a8-f69a-4faf-846f-426a81dd061e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:31:30.376618+00:00", "updated_at": "2024-01-06T13:31:30.457304+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"}]]} -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis e74c40e0-d825-11e2-a28f-0800200c9a66 could not be found.\", \"debuginfo\": null}"} +DELETE: /v1/chassis/d8c0a9e4-986f-469a-80b3-43423d4de1b6 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-da5c5043-37e2-4a14-9384-7cbeb118a049 +Openstack-Request-Id: req-ad06a45f-0ce2-45f1-aa4e-201ce7d76d84 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis d8c0a9e4-986f-469a-80b3-43423d4de1b6 could not be found.\", \"debuginfo\": null}"} +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-32d0a42c-2afa-4086-ae6f-d616eab9e8cd +Openstack-Request-Id: req-3f8689a1-6137-4752-8c99-d49fd838214a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855 [{'path': '/extra/foo2', 'op': 'remove'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot complete the requested action because chassis e74c40e0-d825-11e2-a28f-0800200c9a66 contains nodes.\", \"debuginfo\": null}"} +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes +ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_nodes_subresource +ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_nodes_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_get_next +ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_get_next ... ok +ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_has_next +ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_has_next ... ok +ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_list_convert_with_links +ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_list_convert_with_links ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-5e5ccaaf-bd05-4168-9f95-2349493c3535 +Location: http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +Openstack-Request-Id: req-edfb6bf8-82d6-4664-9603-042218d27f7d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "f52a32bc-c092-4ab5-ada2-dc9c2d37b855", "created_at": "2024-01-06T13:31:31.393041+00:00", "updated_at": "2024-01-06T13:31:31.474466+00:00", "description": "foobar", "extra": {"foo1": "bar1", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855", "rel": "self"}, {"href": "http://localhost/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855/nodes", "rel": "self"}, {"href": "http://localhost/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855/nodes", "rel": "bookmark"}]]} -GET: /v1/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855 {} -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_multi -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_multi ... ok -GOT:Response: 400 Bad Request +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:10:22.338044+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 {} +GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T14:10:22.338044+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, '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'}]]} +POST: /v1/chassis/nodes {'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', 'cpus': '8', '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-70a8a413-d689-4921-91ba-1410bbe5724b +Openstack-Request-Id: req-7000276b-e8cc-4352-a505-edf7003d3478 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'foo' is not one of ['power', 'management', 'deploy', 'bios', 'raid']\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/03e9c892-9178-4b3b-bd9e-72f7afd59e0f [{'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 +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +GET: /v1/deploy_templates/?limit=3 {} +GOT:{'deploy_templates': [{'uuid': '56e06bd9-ba93-4d12-be84-58f70cceaff0', 'name': 'CUSTOM_DT0', 'links': [{'href': 'http://localhost/v1/deploy_templates/56e06bd9-ba93-4d12-be84-58f70cceaff0', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/56e06bd9-ba93-4d12-be84-58f70cceaff0', 'rel': 'bookmark'}]}, {'uuid': 'f7dd6780-bf7f-4208-af9d-97c623ed8ed5', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/f7dd6780-bf7f-4208-af9d-97c623ed8ed5', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/f7dd6780-bf7f-4208-af9d-97c623ed8ed5', 'rel': 'bookmark'}]}, {'uuid': '7f5ac113-c804-4ae3-afc2-75098c5e685e', 'name': 'CUSTOM_DT2', 'links': [{'href': 'http://localhost/v1/deploy_templates/7f5ac113-c804-4ae3-afc2-75098c5e685e', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/7f5ac113-c804-4ae3-afc2-75098c5e685e', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=uuid,name&limit=3&marker=7f5ac113-c804-4ae3-afc2-75098c5e685e'} +GET: /v1/deploy_templates?fields=uuid,steps {} +GOT:{'deploy_templates': [{'uuid': '0bfba2af-0f5d-426d-b5d2-ed740ee45c6a', 'links': [{'href': 'http://localhost/v1/deploy_templates/0bfba2af-0f5d-426d-b5d2-ed740ee45c6a', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/0bfba2af-0f5d-426d-b5d2-ed740ee45c6a', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}, {'uuid': '952ada9a-9b9f-4d6a-9f88-4ab9f4c113d6', 'links': [{'href': 'http://localhost/v1/deploy_templates/952ada9a-9b9f-4d6a-9f88-4ab9f4c113d6', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/952ada9a-9b9f-4d6a-9f88-4ab9f4c113d6', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}, {'uuid': 'ee90cf57-0a33-45d8-b42a-ac6515ff9b0a', 'links': [{'href': 'http://localhost/v1/deploy_templates/ee90cf57-0a33-45d8-b42a-ac6515ff9b0a', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/ee90cf57-0a33-45d8-b42a-ac6515ff9b0a', '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=ee90cf57-0a33-45d8-b42a-ac6515ff9b0a'} +GET: /v1/deploy_templates {} +GOT:{'deploy_templates': [{'uuid': '64613576-726e-4b2b-9d11-539ad75668fd', 'name': 'CUSTOM_DT0', 'links': [{'href': 'http://localhost/v1/deploy_templates/64613576-726e-4b2b-9d11-539ad75668fd', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/64613576-726e-4b2b-9d11-539ad75668fd', 'rel': 'bookmark'}]}, {'uuid': '2ebeb00d-4c89-4925-9391-b91e99a12db1', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/2ebeb00d-4c89-4925-9391-b91e99a12db1', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/2ebeb00d-4c89-4925-9391-b91e99a12db1', 'rel': 'bookmark'}]}, {'uuid': 'cd2d35f9-d472-4187-a19b-13096913ec72', 'name': 'CUSTOM_DT2', 'links': [{'href': 'http://localhost/v1/deploy_templates/cd2d35f9-d472-4187-a19b-13096913ec72', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/cd2d35f9-d472-4187-a19b-13096913ec72', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=uuid,name&limit=3&marker=cd2d35f9-d472-4187-a19b-13096913ec72'} +GET: /v1/deploy_templates?detail=True {} +GOT:{'deploy_templates': [{'uuid': '36edd106-8a60-484e-b0a3-432044c6149f', 'created_at': '2024-01-06T14:10:23.119063+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/36edd106-8a60-484e-b0a3-432044c6149f', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/36edd106-8a60-484e-b0a3-432044c6149f', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}]} +GET: /v1/deploy_templates {} +GOT:{'deploy_templates': [{'uuid': 'cef844bf-2605-43b0-b6ea-e708862afa82', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/cef844bf-2605-43b0-b6ea-e708862afa82', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/cef844bf-2605-43b0-b6ea-e708862afa82', 'rel': 'bookmark'}]}]} +GET: /v1/deploy_templates?detail=False {} +GOT:{'deploy_templates': [{'uuid': 'cef844bf-2605-43b0-b6ea-e708862afa82', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/cef844bf-2605-43b0-b6ea-e708862afa82', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/cef844bf-2605-43b0-b6ea-e708862afa82', 'rel': 'bookmark'}]}]} +GET: /v1/deploy_templates?sort_key=name&detail=True {} +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_sort_key_allowed +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_sort_key_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_using_query_and_fields +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_using_query_and_fields ... ok +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key_invalid +ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_associated +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_associated ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_using_query_false_and_fields +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_using_query_false_and_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links_custom_fields +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_multi +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_multi ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_empty +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_empty ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links_default_limit +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links_default_limit ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_root +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_root ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_all_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_all_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name_unsupported +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name_unsupported ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_empty +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_empty ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_collection_custom_fields +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_collection_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_collection_custom_fields +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_collection_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name_with_json +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name_with_json ... ok +GOT:{'allocations': [{'uuid': '166fc5aa-7e1c-42f0-8e6c-d532221623e2', 'created_at': '2024-01-06T14:10:23.333416+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/166fc5aa-7e1c-42f0-8e6c-d532221623e2', 'rel': 'self'}, {'href': 'http://localhost/allocations/166fc5aa-7e1c-42f0-8e6c-d532221623e2', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '7660f1ff-f2a0-4b68-b345-758f8902a2c3', 'created_at': '2024-01-06T14:10:23.338480+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/7660f1ff-f2a0-4b68-b345-758f8902a2c3', 'rel': 'self'}, {'href': 'http://localhost/allocations/7660f1ff-f2a0-4b68-b345-758f8902a2c3', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'a0592430-d400-4ffd-9fd4-5dfeb72382f2', 'created_at': '2024-01-06T14:10:23.342730+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/a0592430-d400-4ffd-9fd4-5dfeb72382f2', 'rel': 'self'}, {'href': 'http://localhost/allocations/a0592430-d400-4ffd-9fd4-5dfeb72382f2', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/allocations?sort_key=name {} +GOT:{'allocations': [{'uuid': '516c13cd-2ef8-4abf-98f3-158e5a80ea38', 'created_at': '2024-01-06T14:10:23.488636+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/516c13cd-2ef8-4abf-98f3-158e5a80ea38', 'rel': 'self'}, {'href': 'http://localhost/allocations/516c13cd-2ef8-4abf-98f3-158e5a80ea38', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '83891e7e-ad74-4be6-ad7d-b4a6f44bb4e7', 'created_at': '2024-01-06T14:10:23.484836+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/83891e7e-ad74-4be6-ad7d-b4a6f44bb4e7', 'rel': 'self'}, {'href': 'http://localhost/allocations/83891e7e-ad74-4be6-ad7d-b4a6f44bb4e7', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '9bb4c5f0-8118-4d56-b05a-9070b6a1f1d3', 'created_at': '2024-01-06T14:10:23.480762+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation3', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/9bb4c5f0-8118-4d56-b05a-9070b6a1f1d3', 'rel': 'self'}, {'href': 'http://localhost/allocations/9bb4c5f0-8118-4d56-b05a-9070b6a1f1d3', 'rel': 'bookmark'}], 'node_uuid': None}]} +GET: /v1/allocations?sort_key=foo {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-253c35d0-bec9-419c-8d20-26924ac7b0b9 +Openstack-Request-Id: req-a5e77048-2fe1-4418-9924-0c22cc88b9df X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "03e9c892-9178-4b3b-bd9e-72f7afd59e0f", "created_at": "2024-01-06T13:31:27.937879+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/03e9c892-9178-4b3b-bd9e-72f7afd59e0f", "rel": "self"}, {"href": "http://localhost/deploy_templates/03e9c892-9178-4b3b-bd9e-72f7afd59e0f", "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}]} -PATCH: /v1/deploy_templates/ba44475a-a6be-43c5-b23c-fe3f0984d4f5 [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'replace'}] -GOT:Response: 409 Conflict +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} +GET: /v1/allocations?sort_key=extra {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-a92de3b7-2323-4288-b0ea-bdeb57b4429e +Openstack-Request-Id: req-7e914fbb-a4d5-4bf2-a679-488be3a9deae X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A deploy template with UUID ba44475a-a6be-43c5-b23c-fe3f0984d4f5 already exists.\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/977f9ba5-5957-4888-bc25-556b6bd0c162 [{'path': '/steps/1', 'op': 'replace', 'value': {'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'priority': 42}}] +{"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 {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-9d518eeb-1c82-4cc2-a12c-5ea6c6469c45 +Openstack-Request-Id: req-b1970d56-1309-4556-90d0-6fb01a1a7b6b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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: can't replace outside of list\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/6af260a4-2552-4db9-83b7-e7b2b83af1a8 [{'path': '/steps/0/interface', 'op': 'replace', 'value': 'foo'}] +{"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 {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-1c611deb-d0f6-4fe7-982c-cc8808e00945 +Openstack-Request-Id: req-2bb4cb5c-4460-4097-9d96-75bbee31b99b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'foo' is not one of ['power', 'management', 'deploy', 'bios', 'raid']\", \"debuginfo\": null}"} -PATCH: /v1/deploy_templates/4243fab8-edb9-450e-9502-a79eda57f78e [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"properties\\\" is an invalid field for sorting\", \"debuginfo\": null}"} +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'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-02d5b6bf-0e07-479a-9d4e-e505aa76ca61 +Openstack-Request-Id: req-4f6d3ff2-2fb2-40f4-bdc5-7c06ea935c00 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "4243fab8-edb9-450e-9502-a79eda57f78e", "created_at": "2024-01-06T13:31:29.377748+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/4243fab8-edb9-450e-9502-a79eda57f78e", "rel": "self"}, {"href": "http://localhost/deploy_templates/4243fab8-edb9-450e-9502-a79eda57f78e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -PATCH: /v1/deploy_templates/da6a4623-d4e7-4f34-81b2-28cb02035676 [{'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\"}"} -PATCH: /v1/deploy_templates/CUSTOM_DT1 [{'path': '/steps', 'value': [{'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'priority': 42}], 'op': 'replace'}] +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:10:23.795650+00:00", "updated_at": "2024-01-06T14:10:23.841668+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 {} +GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T14:10:23.795650+00:00', 'updated_at': '2024-01-06T14:10:23.841668+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'}]]} +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'path': '/description', 'value': 'test', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-dedb12d5-bcd1-485b-b485-d2c0693349fd +Openstack-Request-Id: req-ab10c3a2-5d7c-4cc3-b612-043e15ed61db X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "9f050356-4430-4b96-aa2b-83d8e71c8ec2", "created_at": "2024-01-06T13:31:29.998415+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/9f050356-4430-4b96-aa2b-83d8e71c8ec2", "rel": "self"}, {"href": "http://localhost/deploy_templates/9f050356-4430-4b96-aa2b-83d8e71c8ec2", "rel": "bookmark"}], "steps": [{"interface": "bios", "step": "apply_configuration", "args": {"foo": "bar"}, "priority": 42}]} -PATCH: /v1/deploy_templates/CUSTOM_DT1 [{'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\"}"} -PATCH: /v1/deploy_templates/CUSTOM_DT1.json [{'path': '/steps/0/interface', 'value': 'bios', 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:10:23.978645+00:00", "updated_at": "2024-01-06T14:10:24.021280+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"}]]} +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_root_non_existent +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_root_non_existent ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_patch_nodes_subresource +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_patch_nodes_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_custom_fields_invalid_fields +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_custom_fields_invalid_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_maintenance_mode +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_maintenance_mode ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_collection_pagination_no_uuid +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_collection_pagination_no_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_multi +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_multi ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_maintenance_mode_by_name +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_maintenance_mode_by_name ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_custom_fields_invalid_fields +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_custom_fields_invalid_fields ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_conductor_offline +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_conductor_offline ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_non_existent_property_fail +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_non_existent_property_fail ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_custom_fields +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found_by_name +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found_by_name ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_with_invalid_api +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_with_invalid_api ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_custom_fields +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_singular +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_singular ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found_by_name_unsupported +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found_by_name_unsupported ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_links +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_links ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_uuid +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_json +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_json ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_portgroup_subresource +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_portgroup_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_suffix +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_suffix ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_ports_subresource +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_ports_subresource ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-64b93add-67f3-4fa5-9c4f-1b711c23aabe +Openstack-Request-Id: req-c779af37-1524-4518-9ffc-d2e58703222c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e9411f9f-62d7-4ece-bf28-082a650ebc08", "created_at": "2024-01-06T13:31:30.654350+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/e9411f9f-62d7-4ece-bf28-082a650ebc08", "rel": "self"}, {"href": "http://localhost/deploy_templates/e9411f9f-62d7-4ece-bf28-082a650ebc08", "rel": "bookmark"}], "steps": [{"interface": "bios", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -PATCH: /v1/deploy_templates/8d27bf2a-c89e-4f08-8c04-35000125da5b [{'path': '/name', 'value': 'aa:bb_cc', 'op': 'replace'}] +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +GET: /v1/conductors/?limit=3 {} +GOT:{'conductors': [{'hostname': '8505b7fa-c55b-444b-9b6b-209e0abdb4f3', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/8505b7fa-c55b-444b-9b6b-209e0abdb4f3', 'rel': 'self'}, {'href': 'http://localhost/conductors/8505b7fa-c55b-444b-9b6b-209e0abdb4f3', 'rel': 'bookmark'}], 'alive': True}, {'hostname': '6c1e6598-392b-46e9-9894-2b01dcb10c0a', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/6c1e6598-392b-46e9-9894-2b01dcb10c0a', 'rel': 'self'}, {'href': 'http://localhost/conductors/6c1e6598-392b-46e9-9894-2b01dcb10c0a', 'rel': 'bookmark'}], 'alive': True}, {'hostname': '64c13ced-7c8f-4fa3-8535-1d4b6bede62e', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/64c13ced-7c8f-4fa3-8535-1d4b6bede62e', 'rel': 'self'}, {'href': 'http://localhost/conductors/64c13ced-7c8f-4fa3-8535-1d4b6bede62e', 'rel': 'bookmark'}], 'alive': True}], 'next': 'http://localhost/v1/conductors?sort_key=id&sort_dir=asc&fields=hostname,conductor_group,alive&limit=3&marker=64c13ced-7c8f-4fa3-8535-1d4b6bede62e'} +GET: /v1/conductors?fields=hostname,alive {} +GOT:{'conductors': [{'hostname': 'ac443e35-6e26-45b1-b4b5-f26c2257fa1c', 'links': [{'href': 'http://localhost/v1/conductors/ac443e35-6e26-45b1-b4b5-f26c2257fa1c', 'rel': 'self'}, {'href': 'http://localhost/conductors/ac443e35-6e26-45b1-b4b5-f26c2257fa1c', 'rel': 'bookmark'}], 'alive': True}, {'hostname': 'ada9ad5a-f158-4aa7-9fa3-90440b5c52e2', 'links': [{'href': 'http://localhost/v1/conductors/ada9ad5a-f158-4aa7-9fa3-90440b5c52e2', 'rel': 'self'}, {'href': 'http://localhost/conductors/ada9ad5a-f158-4aa7-9fa3-90440b5c52e2', 'rel': 'bookmark'}], 'alive': True}, {'hostname': '137478ea-2a2a-4ffa-8ee9-d4ee636768ff', 'links': [{'href': 'http://localhost/v1/conductors/137478ea-2a2a-4ffa-8ee9-d4ee636768ff', 'rel': 'self'}, {'href': 'http://localhost/conductors/137478ea-2a2a-4ffa-8ee9-d4ee636768ff', 'rel': 'bookmark'}], 'alive': True}], 'next': 'http://localhost/v1/conductors?sort_key=id&sort_dir=asc&fields=hostname,alive&limit=3&marker=137478ea-2a2a-4ffa-8ee9-d4ee636768ff'} +GET: /v1/conductors {} +GOT:{'conductors': [{'hostname': '1a144ba3-fff6-4ea0-aae7-25700628f4c6', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/1a144ba3-fff6-4ea0-aae7-25700628f4c6', 'rel': 'self'}, {'href': 'http://localhost/conductors/1a144ba3-fff6-4ea0-aae7-25700628f4c6', 'rel': 'bookmark'}], 'alive': True}, {'hostname': 'e2b40961-59fe-417c-a54f-29596d6d86c3', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/e2b40961-59fe-417c-a54f-29596d6d86c3', 'rel': 'self'}, {'href': 'http://localhost/conductors/e2b40961-59fe-417c-a54f-29596d6d86c3', 'rel': 'bookmark'}], 'alive': True}, {'hostname': '3245fb59-19ec-417e-9954-77b67b39e747', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/3245fb59-19ec-417e-9954-77b67b39e747', 'rel': 'self'}, {'href': 'http://localhost/conductors/3245fb59-19ec-417e-9954-77b67b39e747', 'rel': 'bookmark'}], 'alive': True}], 'next': 'http://localhost/v1/conductors?sort_key=id&sort_dir=asc&fields=hostname,conductor_group,alive&limit=3&marker=3245fb59-19ec-417e-9954-77b67b39e747'} +GET: /v1/conductors {} +GOT:{'conductors': []} +GET: /v1/conductors?fields=hostname,alive {} +GOT:{'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}]} +GET: /v1/conductors/rocky.rocks?fields=hostname,spongebob {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-7c9c68e5-9109-4f50-ad4b-4c7bb6c37042 +Openstack-Request-Id: req-237c338b-5c1f-44ea-a66e-7eb50610a1b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/deploy_templates/00a369ce-577b-4efe-8281-4bec1ac6a578 [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_name_custom_trait -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_name_custom_trait ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_non_existent_property_fail -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_non_existent_property_fail ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_links -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_links ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_name_standard_trait -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_name_standard_trait ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_against_single -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_against_single ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_singular -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_singular ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_not_found -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_many -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_many ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_query -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_query ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_uuid -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_one -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_one ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_query_false -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_query_false ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_replace_multi -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_replace_multi ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_does_not_contain_event -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_does_not_contain_event ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_and_fields -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_and_fields ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_invalid_event -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_invalid_event ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} +GET: /v1/conductors/rocky.rocks {} +GOT:{'created_at': '2024-01-06T14:10:24.399736+00:00', 'updated_at': '2024-01-06T14:10:24.399167+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 {} +GOT:{'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} +GET: /v1/conductors/rocky.rocks?fields=hostname,alive {} +GOT:{'hostname': 'rocky.rocks', '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 {} GOT:Response: 404 Not Found Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow allocations\"}"} -GET: /v1/allocations/ba!na!na! {} -GOT:Response: 404 Not Found +Openstack-Request-Id: req-8cf11d07-bd21-41f8-b509-a289aa0561f1 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/conductors/rocky.rocks {} +GOT:{'created_at': '2024-01-06T14:10:24.792065+00:00', 'updated_at': '2024-01-06T14:10:24.791461+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 {} +GOT:{'created_at': '2024-01-06T14:10:24.792065+00:00', 'updated_at': '2024-01-06T14:10:24.791461+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 {} +GOT:{'created_at': '2024-01-06T14:10:24.792065+00:00', 'updated_at': '2024-01-06T14:10:24.791461+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 {} +GOT:{'created_at': '2024-01-06T14:10:24.919841+00:00', 'updated_at': '2024-01-06T14:10:24.919256+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 {} +GOT:{'created_at': '2024-01-06T14:10:24.919841+00:00', 'updated_at': '2024-01-06T14:10:24.919256+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 {} +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_links_public_url +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_links_public_url ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list ... ok +GOT:Response: 400 Bad Request Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow allocations\"}"} -GET: /v1/allocations/c1457e37-c7c4-40e6-bb5c-21e3c1e2bb4e.json {} -GOT:{'uuid': 'c1457e37-c7c4-40e6-bb5c-21e3c1e2bb4e', 'created_at': '2024-01-06T13:31:30.527396+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/c1457e37-c7c4-40e6-bb5c-21e3c1e2bb4e', 'rel': 'self'}, {'href': 'http://localhost/allocations/c1457e37-c7c4-40e6-bb5c-21e3c1e2bb4e', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/allocations/7f90db4d-e5c1-4475-9dcc-6fa71cab8ec6 {} -GOT:{'uuid': '7f90db4d-e5c1-4475-9dcc-6fa71cab8ec6', 'created_at': '2024-01-06T13:31:30.770460+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'pg.json', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/7f90db4d-e5c1-4475-9dcc-6fa71cab8ec6', 'rel': 'self'}, {'href': 'http://localhost/allocations/7f90db4d-e5c1-4475-9dcc-6fa71cab8ec6', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/allocations/dd72db24-3800-4eb6-a5e4-2b30cf7ec3b0 {} -GOT:{'uuid': 'dd72db24-3800-4eb6-a5e4-2b30cf7ec3b0', 'created_at': '2024-01-06T13:31:31.209541+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'pg.1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/dd72db24-3800-4eb6-a5e4-2b30cf7ec3b0', 'rel': 'self'}, {'href': 'http://localhost/allocations/dd72db24-3800-4eb6-a5e4-2b30cf7ec3b0', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/allocations/6bc14200-ca70-4d69-ade3-d455c2b8d676?fields=owner {} -GOT:{'owner': '12345', 'links': [{'href': 'http://localhost/v1/allocations/6bc14200-ca70-4d69-ade3-d455c2b8d676', 'rel': 'self'}, {'href': 'http://localhost/allocations/6bc14200-ca70-4d69-ade3-d455c2b8d676', 'rel': 'bookmark'}]} -GET: /v1/allocations/1d0b97ff-5655-4479-a22f-181c40c538b0 {} -GOT:{'uuid': '1d0b97ff-5655-4479-a22f-181c40c538b0', 'created_at': '2024-01-06T13:31:31.827854+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/1d0b97ff-5655-4479-a22f-181c40c538b0', 'rel': 'self'}, {'href': 'http://localhost/allocations/1d0b97ff-5655-4479-a22f-181c40c538b0', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/allocations/1d0b97ff-5655-4479-a22f-181c40c538b0 {} -GOT:{'uuid': '1d0b97ff-5655-4479-a22f-181c40c538b0', 'created_at': '2024-01-06T13:31:31.827854+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/1d0b97ff-5655-4479-a22f-181c40c538b0', 'rel': 'self'}, {'href': 'http://localhost/allocations/1d0b97ff-5655-4479-a22f-181c40c538b0', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /allocations/1d0b97ff-5655-4479-a22f-181c40c538b0 {} -GOT:{'uuid': '1d0b97ff-5655-4479-a22f-181c40c538b0', 'created_at': '2024-01-06T13:31:31.827854+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/1d0b97ff-5655-4479-a22f-181c40c538b0', 'rel': 'self'}, {'href': 'http://localhost/allocations/1d0b97ff-5655-4479-a22f-181c40c538b0', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/allocations {} -GOT:{'allocations': [{'uuid': 'd48e2d90-e623-4f85-b999-10673538cc57', 'created_at': '2024-01-06T13:31:32.384940+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/d48e2d90-e623-4f85-b999-10673538cc57', 'rel': 'self'}, {'href': 'http://localhost/allocations/d48e2d90-e623-4f85-b999-10673538cc57', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '30806cd9-cadd-43c9-9a8b-28b61b2c2a78', 'created_at': '2024-01-06T13:31:32.397841+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/30806cd9-cadd-43c9-9a8b-28b61b2c2a78', 'rel': 'self'}, {'href': 'http://localhost/allocations/30806cd9-cadd-43c9-9a8b-28b61b2c2a78', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '23f7414f-b3de-4682-bed9-08927a0b0807', 'created_at': '2024-01-06T13:31:32.411038+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/23f7414f-b3de-4682-bed9-08927a0b0807', 'rel': 'self'}, {'href': 'http://localhost/allocations/23f7414f-b3de-4682-bed9-08927a0b0807', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '89434b3e-467a-4cb0-a983-fcb576dee30d', 'created_at': '2024-01-06T13:31:32.420019+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation3', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/89434b3e-467a-4cb0-a983-fcb576dee30d', 'rel': 'self'}, {'href': 'http://localhost/allocations/89434b3e-467a-4cb0-a983-fcb576dee30d', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'b13a2a4f-ba34-4beb-be20-ad8d365be5b0', 'created_at': '2024-01-06T13:31:32.428939+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation4', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/b13a2a4f-ba34-4beb-be20-ad8d365be5b0', 'rel': 'self'}, {'href': 'http://localhost/allocations/b13a2a4f-ba34-4beb-be20-ad8d365be5b0', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/allocations {} -GOT:{'allocations': [{'uuid': '389ff4a2-75cc-4d9a-9962-3863b34889d4', 'created_at': '2024-01-06T13:31:32.817857+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': None, 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/389ff4a2-75cc-4d9a-9962-3863b34889d4', 'rel': 'self'}, {'href': 'http://localhost/allocations/389ff4a2-75cc-4d9a-9962-3863b34889d4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/allocations?sort_key=uuid {} -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_false_and_fields -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_false_and_fields ... ok -GOT:{'uuid': 'f52a32bc-c092-4ab5-ada2-dc9c2d37b855', 'created_at': '2024-01-06T13:31:31.393041+00:00', 'updated_at': '2024-01-06T13:31:31.474466+00:00', 'description': 'foobar', 'extra': {'foo1': 'bar1', 'foo3': 'bar3'}, 'links': [{'href': 'http://localhost/v1/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855', 'rel': 'self'}, {'href': 'http://localhost/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855/nodes', 'rel': 'bookmark'}]]} -PATCH: /v1/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855 [{'path': '/extra', 'op': 'remove'}] +Openstack-Request-Id: req-ccfd149a-2fa7-4f56-98fc-f70f7ba7f31c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-d29527af-a1ce-44e4-ac42-c5ad6cc2ef15 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PATCH: /v1/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51 [{'path': '/extra/foo2', 'op': 'remove'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-aad02b7c-f989-43e1-8368-25ed4f9b4b96 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "52779cf8-2a4a-406a-94b9-37c80ef3cd51", "created_at": "2024-01-06T14:10:24.335774+00:00", "updated_at": "2024-01-06T14:10:24.375603+00:00", "description": "foobar", "extra": {"foo1": "bar1", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51", "rel": "self"}, {"href": "http://localhost/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51/nodes", "rel": "self"}, {"href": "http://localhost/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51/nodes", "rel": "bookmark"}]]} +GET: /v1/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51 {} +GOT:{'uuid': '52779cf8-2a4a-406a-94b9-37c80ef3cd51', 'created_at': '2024-01-06T14:10:24.335774+00:00', 'updated_at': '2024-01-06T14:10:24.375603+00:00', 'description': 'foobar', 'extra': {'foo1': 'bar1', 'foo3': 'bar3'}, 'links': [{'href': 'http://localhost/v1/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51', 'rel': 'self'}, {'href': 'http://localhost/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51/nodes', 'rel': 'bookmark'}]]} +PATCH: /v1/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51 [{'path': '/extra', 'op': 'remove'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-48702b36-5dbd-4672-aac3-8bd6b4fa3066 +Openstack-Request-Id: req-b1b3efd7-c852-4fbb-94d2-f8b69a8897e2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "f52a32bc-c092-4ab5-ada2-dc9c2d37b855", "created_at": "2024-01-06T13:31:31.393041+00:00", "updated_at": "2024-01-06T13:31:31.616705+00:00", "description": "foobar", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855", "rel": "self"}, {"href": "http://localhost/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855/nodes", "rel": "self"}, {"href": "http://localhost/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855/nodes", "rel": "bookmark"}]]} -GET: /v1/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855 {} -GOT:{'uuid': 'f52a32bc-c092-4ab5-ada2-dc9c2d37b855', 'created_at': '2024-01-06T13:31:31.393041+00:00', 'updated_at': '2024-01-06T13:31:31.616705+00:00', 'description': 'foobar', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855', 'rel': 'self'}, {'href': 'http://localhost/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/f52a32bc-c092-4ab5-ada2-dc9c2d37b855/nodes', 'rel': 'bookmark'}]]} +{"uuid": "52779cf8-2a4a-406a-94b9-37c80ef3cd51", "created_at": "2024-01-06T14:10:24.335774+00:00", "updated_at": "2024-01-06T14:10:24.428076+00:00", "description": "foobar", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51", "rel": "self"}, {"href": "http://localhost/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51/nodes", "rel": "self"}, {"href": "http://localhost/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51/nodes", "rel": "bookmark"}]]} +GET: /v1/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51 {} +GOT:{'uuid': '52779cf8-2a4a-406a-94b9-37c80ef3cd51', 'created_at': '2024-01-06T14:10:24.335774+00:00', 'updated_at': '2024-01-06T14:10:24.428076+00:00', 'description': 'foobar', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51', 'rel': 'self'}, {'href': 'http://localhost/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/52779cf8-2a4a-406a-94b9-37c80ef3cd51/nodes', 'rel': 'bookmark'}]]} PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'path': '/extra/non-existent', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-38b31640-c2b8-4e5e-ae59-fd0e34c9d85f +Openstack-Request-Id: req-e1b0ac82-55f9-4bba-9aa0-fd6e1a0e2744 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 a non-existent object 'non-existent'\", \"debuginfo\": null}"} -PATCH: /v1/chassis/2bc6c4c7-74d0-41a8-9bf7-49fa669867fb [{'path': '/description', 'op': 'remove'}] +PATCH: /v1/chassis/b4bac7bc-4798-4cda-bf51-a4425435d2d5 [{'path': '/description', 'op': 'remove'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0aa08b5c-c5ed-4313-93d4-d5d5b56df2a5 +Openstack-Request-Id: req-fb935e7c-1136-4c66-a161-c7368c0c4c3e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "2bc6c4c7-74d0-41a8-9bf7-49fa669867fb", "created_at": "2024-01-06T13:31:32.331105+00:00", "updated_at": "2024-01-06T13:31:32.416752+00:00", "description": null, "extra": {"a": "b"}, "links": [{"href": "http://localhost/v1/chassis/2bc6c4c7-74d0-41a8-9bf7-49fa669867fb", "rel": "self"}, {"href": "http://localhost/chassis/2bc6c4c7-74d0-41a8-9bf7-49fa669867fb", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/2bc6c4c7-74d0-41a8-9bf7-49fa669867fb/nodes", "rel": "self"}, {"href": "http://localhost/chassis/2bc6c4c7-74d0-41a8-9bf7-49fa669867fb/nodes", "rel": "bookmark"}]]} -GET: /v1/chassis/2bc6c4c7-74d0-41a8-9bf7-49fa669867fb {} -GOT:{'uuid': '2bc6c4c7-74d0-41a8-9bf7-49fa669867fb', 'created_at': '2024-01-06T13:31:32.331105+00:00', 'updated_at': '2024-01-06T13:31:32.416752+00:00', 'description': None, 'extra': {'a': 'b'}, 'links': [{'href': 'http://localhost/v1/chassis/2bc6c4c7-74d0-41a8-9bf7-49fa669867fb', 'rel': 'self'}, {'href': 'http://localhost/chassis/2bc6c4c7-74d0-41a8-9bf7-49fa669867fb', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/2bc6c4c7-74d0-41a8-9bf7-49fa669867fb/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/2bc6c4c7-74d0-41a8-9bf7-49fa669867fb/nodes', 'rel': 'bookmark'}]]} +{"uuid": "b4bac7bc-4798-4cda-bf51-a4425435d2d5", "created_at": "2024-01-06T14:10:24.683286+00:00", "updated_at": "2024-01-06T14:10:24.722400+00:00", "description": null, "extra": {"a": "b"}, "links": [{"href": "http://localhost/v1/chassis/b4bac7bc-4798-4cda-bf51-a4425435d2d5", "rel": "self"}, {"href": "http://localhost/chassis/b4bac7bc-4798-4cda-bf51-a4425435d2d5", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/b4bac7bc-4798-4cda-bf51-a4425435d2d5/nodes", "rel": "self"}, {"href": "http://localhost/chassis/b4bac7bc-4798-4cda-bf51-a4425435d2d5/nodes", "rel": "bookmark"}]]} +GET: /v1/chassis/b4bac7bc-4798-4cda-bf51-a4425435d2d5 {} +GOT:{'uuid': 'b4bac7bc-4798-4cda-bf51-a4425435d2d5', 'created_at': '2024-01-06T14:10:24.683286+00:00', 'updated_at': '2024-01-06T14:10:24.722400+00:00', 'description': None, 'extra': {'a': 'b'}, 'links': [{'href': 'http://localhost/v1/chassis/b4bac7bc-4798-4cda-bf51-a4425435d2d5', 'rel': 'self'}, {'href': 'http://localhost/chassis/b4bac7bc-4798-4cda-bf51-a4425435d2d5', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/b4bac7bc-4798-4cda-bf51-a4425435d2d5/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/b4bac7bc-4798-4cda-bf51-a4425435d2d5/nodes', 'rel': 'bookmark'}]]} PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'path': '/uuid', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-08e8f0b7-6757-4dfb-ae03-9fdd0735061a +Openstack-Request-Id: req-b0cead7a-b675-4ca8-bfb3-1eab2176d60c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/chassis/0dd3d45d-fbb2-40b3-b4b9-6c44b2b3e54e [{'path': '/extra/foo2', 'value': 'new value', 'op': 'replace'}] +PATCH: /v1/chassis/4c46e195-d2ba-4928-ab44-3f5973c3367f [{'path': '/extra/foo2', 'value': 'new value', 'op': 'replace'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e1383314-b9ce-4de4-9da3-689150a49557 +Openstack-Request-Id: req-faa0793e-9b56-49d9-bc0a-c341c4e11c1d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "0dd3d45d-fbb2-40b3-b4b9-6c44b2b3e54e", "created_at": "2024-01-06T13:31:32.873259+00:00", "updated_at": "2024-01-06T13:31:32.964899+00:00", "description": "data-center-1-chassis", "extra": {"foo1": "bar1", "foo2": "new value", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/chassis/0dd3d45d-fbb2-40b3-b4b9-6c44b2b3e54e", "rel": "self"}, {"href": "http://localhost/chassis/0dd3d45d-fbb2-40b3-b4b9-6c44b2b3e54e", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/0dd3d45d-fbb2-40b3-b4b9-6c44b2b3e54e/nodes", "rel": "self"}, {"href": "http://localhost/chassis/0dd3d45d-fbb2-40b3-b4b9-6c44b2b3e54e/nodes", "rel": "bookmark"}]]} -GET: /v1/chassis/0dd3d45d-fbb2-40b3-b4b9-6c44b2b3e54e {} -GOT:{'uuid': '0dd3d45d-fbb2-40b3-b4b9-6c44b2b3e54e', 'created_at': '2024-01-06T13:31:32.873259+00:00', 'updated_at': '2024-01-06T13:31:32.964899+00:00', 'description': 'data-center-1-chassis', 'extra': {'foo1': 'bar1', 'foo2': 'new value', 'foo3': 'bar3'}, 'links': [{'href': 'http://localhost/v1/chassis/0dd3d45d-fbb2-40b3-b4b9-6c44b2b3e54e', 'rel': 'self'}, {'href': 'http://localhost/chassis/0dd3d45d-fbb2-40b3-b4b9-6c44b2b3e54e', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/0dd3d45d-fbb2-40b3-b4b9-6c44b2b3e54e/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/0dd3d45d-fbb2-40b3-b4b9-6c44b2b3e54e/nodes', 'rel': 'bookmark'}]]} -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'path': '/description', 'value': 'chassis-new-description', 'op': 'replace'}] -GOT:Response: 200 OK +{"uuid": "4c46e195-d2ba-4928-ab44-3f5973c3367f", "created_at": "2024-01-06T14:10:24.953217+00:00", "updated_at": "2024-01-06T14:10:24.992133+00:00", "description": "data-center-1-chassis", "extra": {"foo1": "bar1", "foo2": "new value", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/chassis/4c46e195-d2ba-4928-ab44-3f5973c3367f", "rel": "self"}, {"href": "http://localhost/chassis/4c46e195-d2ba-4928-ab44-3f5973c3367f", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/4c46e195-d2ba-4928-ab44-3f5973c3367f/nodes", "rel": "self"}, {"href": "http://localhost/chassis/4c46e195-d2ba-4928-ab44-3f5973c3367f/nodes", "rel": "bookmark"}]]} +GET: /v1/chassis/4c46e195-d2ba-4928-ab44-3f5973c3367f {} +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_replace_multi +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_replace_multi ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_ports_subresource_no_port_id +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_ports_subresource_no_port_id ... ok +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_replace_singular +ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_replace_singular ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list_with_detail +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list_with_detail ... ok +GOT:{'deploy_templates': [{'uuid': '08dbcc0b-8f20-4e37-b495-56b9cfaa4540', 'created_at': '2024-01-06T14:10:23.361677+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/08dbcc0b-8f20-4e37-b495-56b9cfaa4540', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/08dbcc0b-8f20-4e37-b495-56b9cfaa4540', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}, {'uuid': '5101a2f0-543b-49be-82ee-adda6b00869c', 'created_at': '2024-01-06T14:10:23.355368+00:00', 'updated_at': None, 'name': 'CUSTOM_DT2', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/5101a2f0-543b-49be-82ee-adda6b00869c', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/5101a2f0-543b-49be-82ee-adda6b00869c', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}, {'uuid': 'ca550098-7be5-4c47-abf9-b5212a792347', 'created_at': '2024-01-06T14:10:23.349267+00:00', 'updated_at': None, 'name': 'CUSTOM_DT3', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/ca550098-7be5-4c47-abf9-b5212a792347', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/ca550098-7be5-4c47-abf9-b5212a792347', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}]} +GET: /v1/deploy_templates?detail=True&fields=name {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-553d8d6f-325e-4102-bdda-634b0692699e +Openstack-Request-Id: req-95cad755-917e-4c3b-a26d-5444f41f84ac X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:31:33.276993+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 {} -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_replace_singular -ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_replace_singular ... ok +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} +GET: /v1/deploy_templates?detail=False&fields=steps {} +GOT:{'deploy_templates': [{'links': [{'href': 'http://localhost/v1/deploy_templates/d11f939d-e8b2-4672-9539-2e0043e278fd', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/d11f939d-e8b2-4672-9539-2e0043e278fd', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}]} +GET: /v1/deploy_templates {} +GOT:{'deploy_templates': []} +GET: /v1/deploy_templates {} +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\"}"} +GET: /v1/deploy_templates?fields=uuid,steps {} +GOT:{'deploy_templates': [{'uuid': '1cbbcf81-eb94-4b1b-a383-3290386439ae', 'links': [{'href': 'http://localhost/v1/deploy_templates/1cbbcf81-eb94-4b1b-a383-3290386439ae', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/1cbbcf81-eb94-4b1b-a383-3290386439ae', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}, {'uuid': '2e2558af-636d-47ee-88f0-d0b9958f7b94', 'links': [{'href': 'http://localhost/v1/deploy_templates/2e2558af-636d-47ee-88f0-d0b9958f7b94', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/2e2558af-636d-47ee-88f0-d0b9958f7b94', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}, {'uuid': 'e1ce32f8-e009-4842-8932-039622b429bc', 'links': [{'href': 'http://localhost/v1/deploy_templates/e1ce32f8-e009-4842-8932-039622b429bc', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/e1ce32f8-e009-4842-8932-039622b429bc', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}]} +GET: /v1/deploy_templates?fields=name&limit=2 {} +GOT:{'deploy_templates': [{'name': 'CUSTOM_DT0', 'links': [{'href': 'http://localhost/v1/deploy_templates/cec937a0-03bd-443e-962f-83f5021a458d', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/cec937a0-03bd-443e-962f-83f5021a458d', 'rel': 'bookmark'}]}, {'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/6307a365-f92c-44ba-b006-75be1e2fc399', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/6307a365-f92c-44ba-b006-75be1e2fc399', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=name&limit=2&marker=6307a365-f92c-44ba-b006-75be1e2fc399'} +GET: /v1/deploy_templates/08677c0c-66bd-4bb2-a6db-70db7af70d55?fields=uuid,spongebob {} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-08c91c3c-4334-442e-aece-63750027f551 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} +GET: /v1/deploy_templates/7cabf5cd-0939-4255-bdf5-c47e1d736b15 {} +GOT:{'uuid': '7cabf5cd-0939-4255-bdf5-c47e1d736b15', 'created_at': '2024-01-06T14:10:24.583542+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/7cabf5cd-0939-4255-bdf5-c47e1d736b15', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/7cabf5cd-0939-4255-bdf5-c47e1d736b15', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} +GET: /v1/deploy_templates/f23bf837-14f8-4f81-a2fc-04faf76fb25a?fields=name,steps {} +GOT:{'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/f23bf837-14f8-4f81-a2fc-04faf76fb25a', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/f23bf837-14f8-4f81-a2fc-04faf76fb25a', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} +GET: /v1/deploy_templates/32c06b05-e726-4b6c-9ca3-4a1dce61de47 {} +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\"}"} +GET: /v1/deploy_templates/4c9354f6-7e2f-4e33-958a-ece48882780d.json {} +GOT:{'uuid': '4c9354f6-7e2f-4e33-958a-ece48882780d', 'created_at': '2024-01-06T14:10:24.928092+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/4c9354f6-7e2f-4e33-958a-ece48882780d', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/4c9354f6-7e2f-4e33-958a-ece48882780d', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} +GET: /v1/deploy_templates/b7b530f1-938d-45ef-9a92-f92a0478d37f {} +GOT:{'uuid': 'b7b530f1-938d-45ef-9a92-f92a0478d37f', 'created_at': '2024-01-06T14:10:25.055856+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/b7b530f1-938d-45ef-9a92-f92a0478d37f', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/b7b530f1-938d-45ef-9a92-f92a0478d37f', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} +GET: /v1/deploy_templates/c1e965fb-6362-4af0-936e-366fbd37ae63 {} +GOT:{'uuid': 'c1e965fb-6362-4af0-936e-366fbd37ae63', 'created_at': '2024-01-06T14:10:25.204108+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/c1e965fb-6362-4af0-936e-366fbd37ae63', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/c1e965fb-6362-4af0-936e-366fbd37ae63', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} +GET: /v1/deploy_templates/c1e965fb-6362-4af0-936e-366fbd37ae63 {} +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_links +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_links ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_many +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_many ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_connectors_subresource +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_connectors_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list_with_invalid_api +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list_with_invalid_api ... ok ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_update_error ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_update_error ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key_allowed -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_unsupported_api_version -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_unsupported_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_old_version -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_old_version ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_one +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_one ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_sort_key +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_sort_key ... ok ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_update_not_found ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_update_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key_invalid -ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_get_next -ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_get_next ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_empty -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_empty ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_multiple_events -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_multiple_events ... ok -ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_has_next -ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_has_next ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_collection_custom_fields -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_collection_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis ... ok -ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_list_convert_with_links -ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_list_convert_with_links ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_bind_port_events -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_bind_port_events ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_delete_port_events -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_delete_port_events ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_collection_pagination_no_uuid -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_collection_pagination_no_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_binding_host_id -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_binding_host_id ... ok -GOT:{'allocations': [{'uuid': '31889b4c-cccc-4154-a016-ebf414243c6b', 'created_at': '2024-01-06T13:31:33.292416+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/31889b4c-cccc-4154-a016-ebf414243c6b', 'rel': 'self'}, {'href': 'http://localhost/allocations/31889b4c-cccc-4154-a016-ebf414243c6b', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'a34c1d62-72b2-4dd9-9d32-41d5036a504b', 'created_at': '2024-01-06T13:31:33.275094+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation0', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/a34c1d62-72b2-4dd9-9d32-41d5036a504b', 'rel': 'self'}, {'href': 'http://localhost/allocations/a34c1d62-72b2-4dd9-9d32-41d5036a504b', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'f9d80ac5-4cfa-4fa0-b830-e7128f286dda', 'created_at': '2024-01-06T13:31:33.279803+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/f9d80ac5-4cfa-4fa0-b830-e7128f286dda', 'rel': 'self'}, {'href': 'http://localhost/allocations/f9d80ac5-4cfa-4fa0-b830-e7128f286dda', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/allocations?sort_key=name {} -GOT:{'allocations': [{'uuid': '4e5650a8-bba1-444c-a3b4-fbc238b09fc1', 'created_at': '2024-01-06T13:31:33.694006+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation1', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/4e5650a8-bba1-444c-a3b4-fbc238b09fc1', 'rel': 'self'}, {'href': 'http://localhost/allocations/4e5650a8-bba1-444c-a3b4-fbc238b09fc1', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': 'acae2723-8734-4605-b79e-b7640f2f0c09', 'created_at': '2024-01-06T13:31:33.685270+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation2', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/acae2723-8734-4605-b79e-b7640f2f0c09', 'rel': 'self'}, {'href': 'http://localhost/allocations/acae2723-8734-4605-b79e-b7640f2f0c09', 'rel': 'bookmark'}], 'node_uuid': None}, {'uuid': '3abfd4f0-ed80-4200-aaf7-c5a3fc8caf91', 'created_at': '2024-01-06T13:31:33.676248+00:00', 'updated_at': None, 'candidate_nodes': [], 'extra': {}, 'last_error': None, 'name': 'allocation3', 'owner': None, 'resource_class': 'baremetal', 'state': 'allocating', 'traits': [], 'links': [{'href': 'http://localhost/v1/allocations/3abfd4f0-ed80-4200-aaf7-c5a3fc8caf91', 'rel': 'self'}, {'href': 'http://localhost/allocations/3abfd4f0-ed80-4200-aaf7-c5a3fc8caf91', 'rel': 'bookmark'}], 'node_uuid': None}]} -GET: /v1/allocations?sort_key=foo {} +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sensitive_data_masked +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sensitive_data_masked ... ok GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-758aa233-b25b-42cc-a859-b4a22d58aff0 +Openstack-Request-Id: req-4f497bd6-3fe2-4dd6-89a7-224b20ef71a6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} -GET: /v1/allocations?sort_key=extra {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for mac_address: INVALID_MAC_ADDRESS\", \"debuginfo\": null}"} +POST: /v1/events {'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-689ba489-bb06-418e-a787-5294b91665f4 +Openstack-Request-Id: req-6dc843ef-8daf-48fa-a0ca-4a32f5b72115 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for port_id: PORT_ID_SHOULD_BE_UUID\", \"debuginfo\": null}"} +POST: /v1/events {'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-1eab8d4e-9249-4aec-a546-9baf2eb09a60 +Openstack-Request-Id: req-c72998fc-f766-4201-85cf-98a673cd7fa2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['status', 'SHOULD', 'BE', 'TEXT'] is not of type 'string'\", \"debuginfo\": null}"} +POST: /v1/events {'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-006b780c-9bb9-4bcc-9ca2-0bf8be85f726 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 + +POST: /v1/events {'events': [{'event': 'network.unbind_port', 'UNKNOWN': 'EVENT_PROPERTY'}]} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-9e52fabd-b148-465c-87aa-720c3e5a5e0f +Openstack-Request-Id: req-ca9f8b93-5c3e-46f8-86e4-d3b1d3b40bbe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"properties\\\" is an invalid field for sorting\", \"debuginfo\": null}"} -POST: /v1/chassis {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 'data-center-1-chassis'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'port_id' is a required property\", \"debuginfo\": null}"} +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GOT:Response: 409 Conflict Content-Type: application/json -Location: http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -Openstack-Request-Id: req-f8083d59-5389-43bb-ae80-8d2536e60dbb +Openstack-Request-Id: req-d1421b6e-e785-450c-9583-2d68810f79df X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {} -GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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'}]]} -POST: /v1/chassis {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {'foo': 123}, 'description': 'data-center-1-chassis'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is associated with instance aaaaaaaa-1111-bbbb-2222-cccccccccccc.\", \"debuginfo\": null}"} +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GOT:Response: 204 No Content +Openstack-Request-Id: req-0c154944-0ded-4f6e-bd91-6aa654a57d0b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.1 + +DELETE: /v1/nodes/foo.1 +GOT:Response: 204 No Content +Openstack-Request-Id: req-5b3c0cc2-8be6-4556-82e8-acae2a943d30 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.5 + +DELETE: /v1/nodes/foo +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -Openstack-Request-Id: req-3fae0f05-0604-4ff0-94f1-c06da9d3409a +Openstack-Request-Id: req-7325bc81-8c65-4940-93fd-9c2384396f73 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:31:34.962046+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 {} -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_doesnt_contain_id -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_doesnt_contain_id ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_custom_fields_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_custom_fields_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_error -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_error ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_complex_step_args -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_complex_step_args ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_binding_vnic_type -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_binding_vnic_type ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_custom_fields_invalid_fields -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_custom_fields_invalid_fields ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_generate_uuid -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_generate_uuid ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node foo could not be found.\", \"debuginfo\": null}"} +DELETE: /v1/nodes/foo.json +GOT:Response: 204 No Content +Openstack-Request-Id: req-e2df433e-4389-4ba2-94fd-63c3fefe1cc9 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.5 + +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +GOT:Response: 202 Accepted +Openstack-Request-Id: req-ac4cfda4-de4f-40ee-8710-02b64910e065 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.1 + +DELETE: /v1/nodes/foo/maintenance +GOT:Response: 202 Accepted +Openstack-Request-Id: req-25ac9f85-9c76-44d8-b50e-95be50a809dc +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.5 + +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-88672ab7-ce7a-4c7b-a30f-3fc0d0ced461 +Openstack-Request-Id: req-a06c1efc-a232-4b2d-a420-57a99180115c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "00a369ce-577b-4efe-8281-4bec1ac6a578", "created_at": "2024-01-06T13:31:31.517716+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/00a369ce-577b-4efe-8281-4bec1ac6a578", "rel": "self"}, {"href": "http://localhost/deploy_templates/00a369ce-577b-4efe-8281-4bec1ac6a578", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -PATCH: /v1/deploy_templates/5b2503fe-8a9c-4fb9-9a83-7114a8f1be6b [{'path': '/name', 'value': 'HW_CPU_X86_VMX', 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +DELETE: /v1/nodes/foo +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-79ef5823-8e73-44c4-bd14-02aea5f75681 +Openstack-Request-Id: req-1a7e1350-8690-475e-bf68-34ad747a20b4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5b2503fe-8a9c-4fb9-9a83-7114a8f1be6b", "created_at": "2024-01-06T13:31:32.030307+00:00", "updated_at": null, "name": "HW_CPU_X86_VMX", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/5b2503fe-8a9c-4fb9-9a83-7114a8f1be6b", "rel": "self"}, {"href": "http://localhost/deploy_templates/5b2503fe-8a9c-4fb9-9a83-7114a8f1be6b", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -PATCH: /v1/deploy_templates/f7d522d4-f332-406c-95b9-29a883218f65 [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.5 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node foo could not be found.\", \"debuginfo\": null}"} +DELETE: /v1/nodes/foo GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-4991f568-dc35-4860-8c52-058796ad9a1b +Openstack-Request-Id: req-0894a8dd-6565-466a-b7b8-a44aca13272d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template f7d522d4-f332-406c-95b9-29a883218f65 could not be found.\", \"debuginfo\": null}"} -POST: /v1/events {'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-7750d943-052a-41fe-88f8-fda6fed8e46c +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node foo could not be found.\", \"debuginfo\": null}"} +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-ad8829df-b92c-4252-9b93-7db97b44fa98 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/events {'events': [{'INVALID': 'fake.event'}]} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.24 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +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-741cd5e7-5b3a-4ff9-8cd9-1c13d004074b +Openstack-Request-Id: req-7d47cd70-4b5c-454a-873e-a0af6b00e6da X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'event' is a required property\", \"debuginfo\": null}"} -POST: /v1/events {'events': [{'event': 'invalid.event'}]} +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d4d055b8-02e9-4be1-82a0-b6a340476f53 +Openstack-Request-Id: req-fb22dac8-3192-4d3b-b987-01e24d91b8ab +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +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-2f3b8534-db00-46db-88e6-40ab021b442d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -POST: /v1/events {'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'}]} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_connectors_subresource_no_connector_id +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_connectors_subresource_no_connector_id ... ok +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_sort_key_invalid +ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_sort_key_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_targets_subresource +ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_targets_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key_allowed +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name_non_existent +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name_non_existent ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_multi +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_multi ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name_with_json +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name_with_json ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key_invalid +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_root_non_existent +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_root_non_existent ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_event_missing_madatory_field +ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_event_missing_madatory_field ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links_custom_fields +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_too_high_index_step_fail +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_too_high_index_step_fail ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_invalid_event_type +ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_invalid_event_type ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_invalid_mac_network_port_event +ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_invalid_mac_network_port_event ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid_with_json +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid_with_json ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_foo +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_foo ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links_default_limit +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links_default_limit ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_missing_mandatory_fields_network_port_event +ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_missing_mandatory_fields_network_port_event ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_simple_event_type +ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_simple_event_type ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_old_api_version +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_old_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events ... ok +GOT:{'created_at': '2024-01-06T14:10:24.919841+00:00', 'updated_at': '2024-01-06T14:10:24.919256+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 {} +GOT:{'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}]} +GET: /v1/conductors?detail=true {} +GOT:{'conductors': [{'created_at': '2024-01-06T14:10:25.303862+00:00', 'updated_at': '2024-01-06T14:10:25.303298+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': '2024-01-06T14:10:25.310460+00:00', 'updated_at': '2024-01-06T14:10:25.309929+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}]} +GET: /v1/conductors {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-fc8618d9-b14b-4dd3-a610-a237c69f57b4 +Openstack-Request-Id: req-3fe84be4-1517-4be9-97d1-252c3f444b6c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.50 +X-Openstack-Ironic-Api-Version: 1.48 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -POST: /v1/events {'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-4ff9905e-d4be-4ed9-a17b-ba84b1ea158d +GET: /v1/conductors?sort_key=hostname {} +GOT:{'conductors': [{'hostname': '555adafe-0dcf-49db-b2e8-ec54c31093e8', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/555adafe-0dcf-49db-b2e8-ec54c31093e8', 'rel': 'self'}, {'href': 'http://localhost/conductors/555adafe-0dcf-49db-b2e8-ec54c31093e8', 'rel': 'bookmark'}], 'alive': True}, {'hostname': 'c042872f-bee7-4e79-a87c-cf5654afedf1', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/c042872f-bee7-4e79-a87c-cf5654afedf1', 'rel': 'self'}, {'href': 'http://localhost/conductors/c042872f-bee7-4e79-a87c-cf5654afedf1', 'rel': 'bookmark'}], 'alive': True}, {'hostname': 'c742ec7f-5500-4666-b9a8-31a3e9a1076e', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/c742ec7f-5500-4666-b9a8-31a3e9a1076e', 'rel': 'self'}, {'href': 'http://localhost/conductors/c742ec7f-5500-4666-b9a8-31a3e9a1076e', 'rel': 'bookmark'}], 'alive': True}, {'hostname': 'ea3152ba-d2e8-40fa-916d-3343eb65baf8', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/ea3152ba-d2e8-40fa-916d-3343eb65baf8', 'rel': 'self'}, {'href': 'http://localhost/conductors/ea3152ba-d2e8-40fa-916d-3343eb65baf8', 'rel': 'bookmark'}], 'alive': True}, {'hostname': 'ebd86858-470b-4741-93bf-0f49b2347bbe', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/ebd86858-470b-4741-93bf-0f49b2347bbe', 'rel': 'self'}, {'href': 'http://localhost/conductors/ebd86858-470b-4741-93bf-0f49b2347bbe', 'rel': 'bookmark'}], 'alive': True}]} +GET: /v1/conductors?sort_key=alive {} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-2bf22c9d-39b0-4577-aa0d-e54a30ae835f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/events {'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-149629d9-6a12-48cb-bcce-d5e1fa11decb +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value alive is an invalid field for sorting\", \"debuginfo\": null}"} +GET: /v1/conductors?sort_key=drivers {} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-9581ab0d-a86c-45c3-ab1a-c79cdfc0560d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/events {'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-136cb942-b615-46ae-bdac-cc60b0442999 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value drivers is an invalid field for sorting\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/89f85c54-e2db-4287-9691-0169ef127dda [{'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-74da2ab1-96ab-415b-a4e6-d22dbc1a6c8e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/events {'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'}]} +{"uuid": "89f85c54-e2db-4287-9691-0169ef127dda", "created_at": "2024-01-06T14:10:25.801628+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/89f85c54-e2db-4287-9691-0169ef127dda", "rel": "self"}, {"href": "http://localhost/deploy_templates/89f85c54-e2db-4287-9691-0169ef127dda", "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}]} +PATCH: /v1/deploy_templates/7843de90-6371-4570-a1a2-afc7cfc877e8 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-de0097da-0ef3-4729-b378-e4219054f135 +Openstack-Request-Id: req-0f6238a9-e3b0-40c1-985a-c1a72e8c38d2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -POST: /v1/events {'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']}]} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: extra, name, steps, description\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/5cf74233-129d-4c17-bb3e-231e8b3f98d9 [{'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-51145cae-1dd0-4a9f-947c-e00377a99b44 +Openstack-Request-Id: req-e1f10cd1-65b3-49a5-a2cf-5fe557e57700 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['binding:vnic_type', 'SHOULD', 'BE', 'TEXT'] is not of type 'string', 'null'\", \"debuginfo\": null}"} -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_device_id -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_device_id ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_doesnt_contain_id -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_doesnt_contain_id ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_invalid_description -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_invalid_description ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_mac_address -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_mac_address ... ok -GOT:{'chassis': [{'uuid': '6ab386cf-c55b-4668-9851-856eadbdae9e', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/6ab386cf-c55b-4668-9851-856eadbdae9e', 'rel': 'self'}, {'href': 'http://localhost/chassis/6ab386cf-c55b-4668-9851-856eadbdae9e', 'rel': 'bookmark'}]}, {'uuid': '706af69f-050f-4135-80b7-3203f6dc39a3', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/706af69f-050f-4135-80b7-3203f6dc39a3', 'rel': 'self'}, {'href': 'http://localhost/chassis/706af69f-050f-4135-80b7-3203f6dc39a3', 'rel': 'bookmark'}]}, {'uuid': 'ebc3acb3-f76f-44a6-b6a1-4c4a4d4adf86', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/ebc3acb3-f76f-44a6-b6a1-4c4a4d4adf86', 'rel': 'self'}, {'href': 'http://localhost/chassis/ebc3acb3-f76f-44a6-b6a1-4c4a4d4adf86', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=extra,uuid&limit=3&marker=ebc3acb3-f76f-44a6-b6a1-4c4a4d4adf86'} -GET: /v1/chassis {} -GOT:{'chassis': [{'uuid': '783bc216-3fe8-439f-a53f-3fba2294bac3', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/783bc216-3fe8-439f-a53f-3fba2294bac3', 'rel': 'self'}, {'href': 'http://localhost/chassis/783bc216-3fe8-439f-a53f-3fba2294bac3', 'rel': 'bookmark'}]}, {'uuid': '00218fa8-5616-46ad-88cc-6d8e6d9c1591', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/00218fa8-5616-46ad-88cc-6d8e6d9c1591', 'rel': 'self'}, {'href': 'http://localhost/chassis/00218fa8-5616-46ad-88cc-6d8e6d9c1591', 'rel': 'bookmark'}]}, {'uuid': 'c87e22f4-a6ed-409d-aa16-e7fde5b447c6', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/c87e22f4-a6ed-409d-aa16-e7fde5b447c6', 'rel': 'self'}, {'href': 'http://localhost/chassis/c87e22f4-a6ed-409d-aa16-e7fde5b447c6', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=uuid,description&limit=3&marker=c87e22f4-a6ed-409d-aa16-e7fde5b447c6'} -GET: /v1/chassis/detail {} -GOT:{'chassis': [{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T13:31:32.104830+00:00', 'updated_at': None, '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/detail {} -GOT:Response: 404 Not Found +{"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}"} +PATCH: /v1/deploy_templates/b76c6dad-25f1-41fb-8838-80f8b9f264b6 [{'path': '/foo', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-349956e2-ea6a-4034-801b-3c07cba6c12d +Openstack-Request-Id: req-bbb7c631-b081-49e8-ba23-97e7fc038421 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/chassis?detail=True {} -GOT:{'chassis': [{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T13:31:32.580897+00:00', 'updated_at': None, '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 {} -GOT:{'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 {} -GOT:{'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=True&fields=description {} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: extra, name, steps, description\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/5cf91322-2487-456a-9f30-3fdacf527d3c [{'path': '/steps/1', 'op': 'remove'}] +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_multi +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_multi ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_name +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_name ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_against_single +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_against_single ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_does_not_contain_event +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_does_not_contain_event ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_property_fail +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_property_fail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_by_node_name_not_supported +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_by_node_name_not_supported ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_invalid_event +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_invalid_event ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_complex_step_args +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_complex_step_args ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_step_fail +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_step_fail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_by_node_name_ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_by_node_name_ok ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_step_property_fail +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_step_property_fail ... ok +GOT:{'uuid': 'c1e965fb-6362-4af0-936e-366fbd37ae63', 'created_at': '2024-01-06T14:10:25.204108+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/c1e965fb-6362-4af0-936e-366fbd37ae63', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/c1e965fb-6362-4af0-936e-366fbd37ae63', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} +GET: /deploy_templates/c1e965fb-6362-4af0-936e-366fbd37ae63 {} +GOT:{'uuid': 'c1e965fb-6362-4af0-936e-366fbd37ae63', 'created_at': '2024-01-06T14:10:25.204108+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/c1e965fb-6362-4af0-936e-366fbd37ae63', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/c1e965fb-6362-4af0-936e-366fbd37ae63', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} +GET: /v1/deploy_templates {} +GOT:{'deploy_templates': [{'uuid': 'd752390b-2a13-40d8-8eb9-b619f4cf0a5e', 'name': 'CUSTOM_DT0', 'links': [{'href': 'http://localhost/v1/deploy_templates/d752390b-2a13-40d8-8eb9-b619f4cf0a5e', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/d752390b-2a13-40d8-8eb9-b619f4cf0a5e', 'rel': 'bookmark'}]}, {'uuid': 'a357664e-9bee-450c-8f55-31fcea1fa868', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/a357664e-9bee-450c-8f55-31fcea1fa868', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/a357664e-9bee-450c-8f55-31fcea1fa868', 'rel': 'bookmark'}]}, {'uuid': 'f081ec29-5cdb-4296-889e-e00c0867ba57', 'name': 'CUSTOM_DT2', 'links': [{'href': 'http://localhost/v1/deploy_templates/f081ec29-5cdb-4296-889e-e00c0867ba57', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/f081ec29-5cdb-4296-889e-e00c0867ba57', 'rel': 'bookmark'}]}, {'uuid': 'd6d8bb9b-e9ea-4c05-8ed7-0fe9a3bdf459', 'name': 'CUSTOM_DT3', 'links': [{'href': 'http://localhost/v1/deploy_templates/d6d8bb9b-e9ea-4c05-8ed7-0fe9a3bdf459', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/d6d8bb9b-e9ea-4c05-8ed7-0fe9a3bdf459', 'rel': 'bookmark'}]}, {'uuid': '42f6521b-effa-4595-9d22-e66cdd6c9da1', 'name': 'CUSTOM_DT4', 'links': [{'href': 'http://localhost/v1/deploy_templates/42f6521b-effa-4595-9d22-e66cdd6c9da1', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/42f6521b-effa-4595-9d22-e66cdd6c9da1', 'rel': 'bookmark'}]}]} +GET: /v1/deploy_templates {} +GOT:{'deploy_templates': [{'uuid': '7bfd2d49-a7f2-48c9-bf6a-ce990e75f349', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/7bfd2d49-a7f2-48c9-bf6a-ce990e75f349', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/7bfd2d49-a7f2-48c9-bf6a-ce990e75f349', 'rel': 'bookmark'}]}]} +GET: /v1/deploy_templates/1cdef032-ec30-4d77-b34f-e7d185e3dcf1 {} +GOT:{'uuid': '1cdef032-ec30-4d77-b34f-e7d185e3dcf1', 'created_at': '2024-01-06T14:10:25.607556+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/1cdef032-ec30-4d77-b34f-e7d185e3dcf1', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/1cdef032-ec30-4d77-b34f-e7d185e3dcf1', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': [], 'password': '******'}, 'priority': 10}]} +GET: /v1/deploy_templates?sort_key=uuid {} +GOT:{'deploy_templates': [{'uuid': '05ca1482-024e-44b2-99da-8f42134d9f05', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/05ca1482-024e-44b2-99da-8f42134d9f05', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/05ca1482-024e-44b2-99da-8f42134d9f05', 'rel': 'bookmark'}]}, {'uuid': '0bcc4184-8f56-49cb-92cf-d89eabce4605', 'name': 'CUSTOM_DT0', 'links': [{'href': 'http://localhost/v1/deploy_templates/0bcc4184-8f56-49cb-92cf-d89eabce4605', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/0bcc4184-8f56-49cb-92cf-d89eabce4605', 'rel': 'bookmark'}]}, {'uuid': '14eb8c16-4d54-49f6-a2b4-7f568ed2230b', 'name': 'CUSTOM_DT2', 'links': [{'href': 'http://localhost/v1/deploy_templates/14eb8c16-4d54-49f6-a2b4-7f568ed2230b', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/14eb8c16-4d54-49f6-a2b4-7f568ed2230b', 'rel': 'bookmark'}]}]} +GET: /v1/deploy_templates?sort_key=name&detail=False {} +GOT:{'deploy_templates': [{'uuid': 'a86e8c21-653d-4c0a-82da-a6b65275dfef', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/a86e8c21-653d-4c0a-82da-a6b65275dfef', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/a86e8c21-653d-4c0a-82da-a6b65275dfef', 'rel': 'bookmark'}]}, {'uuid': '7a303399-cd4f-4497-9142-d19a91de2d5e', 'name': 'CUSTOM_DT2', 'links': [{'href': 'http://localhost/v1/deploy_templates/7a303399-cd4f-4497-9142-d19a91de2d5e', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/7a303399-cd4f-4497-9142-d19a91de2d5e', 'rel': 'bookmark'}]}, {'uuid': '159d66ba-28c3-4f08-8daa-faee5f1cbf49', 'name': 'CUSTOM_DT3', 'links': [{'href': 'http://localhost/v1/deploy_templates/159d66ba-28c3-4f08-8daa-faee5f1cbf49', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/159d66ba-28c3-4f08-8daa-faee5f1cbf49', 'rel': 'bookmark'}]}]} +GET: /v1/deploy_templates?sort_key=extra {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b567f878-b177-43a5-929b-837df9249eaa +Openstack-Request-Id: req-f93963a7-5ac7-46e2-9f0f-b12fde2c2459 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} -GET: /v1/chassis?detail=False&fields=description {} -GOT:{'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'}]}]} -GET: /v1/chassis?detail=True {} +{"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 {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-70f191a0-2d7a-4682-9f7f-e236d0f243f6 +Openstack-Request-Id: req-6c7081a7-d0de-44cc-9240-f0d58922dd4d X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/chassis {} -GOT:{'chassis': []} -GET: /v1/chassis?fields=uuid,extra {} -GOT:{'chassis': [{'uuid': 'c3e0061d-0639-47c7-88bf-e2812d9dbc67', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/c3e0061d-0639-47c7-88bf-e2812d9dbc67', 'rel': 'self'}, {'href': 'http://localhost/chassis/c3e0061d-0639-47c7-88bf-e2812d9dbc67', 'rel': 'bookmark'}]}, {'uuid': '185b494f-6af6-4391-8552-55909a0cab15', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/185b494f-6af6-4391-8552-55909a0cab15', 'rel': 'self'}, {'href': 'http://localhost/chassis/185b494f-6af6-4391-8552-55909a0cab15', 'rel': 'bookmark'}]}, {'uuid': '78679a0b-0a26-4b66-88f4-a52c5e496764', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/78679a0b-0a26-4b66-88f4-a52c5e496764', 'rel': 'self'}, {'href': 'http://localhost/chassis/78679a0b-0a26-4b66-88f4-a52c5e496764', 'rel': 'bookmark'}]}]} -GET: /v1/chassis?fields=extra&limit=2 {} -GOT:{'chassis': [{'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/e0245b50-f0b9-4017-885f-e3df2d627c64', 'rel': 'self'}, {'href': 'http://localhost/chassis/e0245b50-f0b9-4017-885f-e3df2d627c64', 'rel': 'bookmark'}]}, {'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/b216b981-b28c-45ed-818d-3ef0f8e44dbc', 'rel': 'self'}, {'href': 'http://localhost/chassis/b216b981-b28c-45ed-818d-3ef0f8e44dbc', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=extra&limit=2&marker=b216b981-b28c-45ed-818d-3ef0f8e44dbc'} -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66?fields=uuid,extra {} -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"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 {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-2573c4cf-dc8f-4281-b88a-a2ceaba4d5a1 +Openstack-Request-Id: req-a638caef-f5ca-4cf2-9305-d8551a5b86da X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66?fields=uuid,spongebob {} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value steps is an invalid field for sorting\", \"debuginfo\": null}"} +POST: /v1/events {'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-425a20b7-3043-4bd8-8482-0a46cd00d688 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 + +POST: /v1/events {'events': [{'INVALID': 'fake.event'}]} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d4293bc9-7234-4107-a4a3-917256012d58 +Openstack-Request-Id: req-9ec578b3-fe9d-405a-a5ad-f2346ea51db9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'event' is a required property\", \"debuginfo\": null}"} +POST: /v1/events {'events': [{'event': 'invalid.event'}]} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-3900d78d-d5fb-412d-81dd-0d58f765a951 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_unsupported_api_version +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_unsupported_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_multiple_events +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_multiple_events ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_bind_port_events +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_bind_port_events ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_query +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_query ... ok +GOT:{'uuid': '4c46e195-d2ba-4928-ab44-3f5973c3367f', 'created_at': '2024-01-06T14:10:24.953217+00:00', 'updated_at': '2024-01-06T14:10:24.992133+00:00', 'description': 'data-center-1-chassis', 'extra': {'foo1': 'bar1', 'foo2': 'new value', 'foo3': 'bar3'}, 'links': [{'href': 'http://localhost/v1/chassis/4c46e195-d2ba-4928-ab44-3f5973c3367f', 'rel': 'self'}, {'href': 'http://localhost/chassis/4c46e195-d2ba-4928-ab44-3f5973c3367f', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/4c46e195-d2ba-4928-ab44-3f5973c3367f/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/4c46e195-d2ba-4928-ab44-3f5973c3367f/nodes', 'rel': 'bookmark'}]]} +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'path': '/description', 'value': 'chassis-new-description', 'op': 'replace'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-a46d1dd0-539d-4063-8688-d481b974d682 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:10:25.163208+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 {} -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_one -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_one ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_one_custom_fields -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_one_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_toolong_description -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_toolong_description ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_port_id -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_port_id ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_error -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_error ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_status -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_status ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_links -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_links ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_valid_extra -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_valid_extra ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_generate_uuid -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_generate_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_unbind_port_events -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_unbind_port_events ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_links_public_url -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_links_public_url ... ok -GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T13:31:33.276993+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'}]]} +GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T14:10:25.163208+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'}]]} PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'path': '/description', 'value': 'new', 'op': 'replace'}] GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-df09309e-e9a4-45d0-99e1-086a1541933a +Openstack-Request-Id: req-76a45c76-13d4-4c04-9570-5f866c47e27d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} -PATCH: /v1/chassis/39a8482d-300d-40f4-a967-ddfc6cdf1a58 [{'path': '/extra/a', 'value': 'b', 'op': 'add'}] +PATCH: /v1/chassis/1ffe182b-5775-4946-a872-75b29109e75f [{'path': '/extra/a', 'value': 'b', 'op': 'add'}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8f245997-c747-49cd-86e3-5e75ac74c5de +Openstack-Request-Id: req-b39c5c02-8667-4228-84b7-5ed783be057d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis 39a8482d-300d-40f4-a967-ddfc6cdf1a58 could not be found.\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '58ee4066-8d9d-4ed3-88ad-121f145a9683', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis 1ffe182b-5775-4946-a872-75b29109e75f could not be found.\", \"debuginfo\": null}"} +DELETE: /v1/deploy_templates/CUSTOM_DT1 +GOT:Response: 204 No Content +Openstack-Request-Id: req-db85aee7-aa59-4161-8c41-dc0cb9611fa6 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 + +DELETE: /v1/deploy_templates/blah +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/deploy_templates/58ee4066-8d9d-4ed3-88ad-121f145a9683 -Openstack-Request-Id: req-d8235411-4f17-45a0-a288-044f4a80c6e0 +Openstack-Request-Id: req-e33bdaa9-a2e5-4d31-b976-9c792d417757 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template blah could not be found.\", \"debuginfo\": null}"} +DELETE: /v1/deploy_templates/CUSTOM_DT1.json +GOT:Response: 204 No Content +Openstack-Request-Id: req-c39ab662-2d56-4a00-a918-199994a40f84 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 + +DELETE: /v1/deploy_templates/6be0c01a-b0aa-44b9-b3fe-dfc11d6d17ea +GOT:Response: 204 No Content +Openstack-Request-Id: req-4b7b7ae5-7126-49dd-bf2c-50fbb6371b68 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 + +DELETE: /v1/deploy_templates/79b60bf8-5bd0-4d2f-9c5f-5f3ce1bb1c7b.json +GOT:Response: 204 No Content +Openstack-Request-Id: req-f39f6020-e241-4181-91e6-ea258a4ffb6b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "58ee4066-8d9d-4ed3-88ad-121f145a9683", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/58ee4066-8d9d-4ed3-88ad-121f145a9683", "rel": "self"}, {"href": "http://localhost/deploy_templates/58ee4066-8d9d-4ed3-88ad-121f145a9683", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -GET: /v1/deploy_templates/58ee4066-8d9d-4ed3-88ad-121f145a9683 {} -GOT:{'uuid': '58ee4066-8d9d-4ed3-88ad-121f145a9683', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/58ee4066-8d9d-4ed3-88ad-121f145a9683', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/58ee4066-8d9d-4ed3-88ad-121f145a9683', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '87b674fe-d309-489c-bbf2-483b54f50594', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'foo': [{'bar': 'baz'}]}, 'priority': 10}], 'extra': {}} + +DELETE: /v1/deploy_templates/b575e6b0-bba7-4995-a71d-3496df9b09e8 +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\"}"} +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\"}"} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '7ce1d71d-e01a-4a49-b421-fa7d109d5971', '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/87b674fe-d309-489c-bbf2-483b54f50594 -Openstack-Request-Id: req-7af0a66c-3026-49d3-9eab-440fde93939a +Location: http://localhost/v1/deploy_templates/7ce1d71d-e01a-4a49-b421-fa7d109d5971 +Openstack-Request-Id: req-ed351254-4789-4b1b-899c-e8ac26f0f577 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "87b674fe-d309-489c-bbf2-483b54f50594", "created_at": "2024-01-06T13:31:35.351505+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/87b674fe-d309-489c-bbf2-483b54f50594", "rel": "self"}, {"href": "http://localhost/deploy_templates/87b674fe-d309-489c-bbf2-483b54f50594", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"foo": [{"bar": "baz"}]}, "priority": 10}]} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '6b682d29-c6df-4fb9-b68f-b59f6dcfe8eb', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} +{"uuid": "7ce1d71d-e01a-4a49-b421-fa7d109d5971", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/7ce1d71d-e01a-4a49-b421-fa7d109d5971", "rel": "self"}, {"href": "http://localhost/deploy_templates/7ce1d71d-e01a-4a49-b421-fa7d109d5971", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +GET: /v1/deploy_templates/7ce1d71d-e01a-4a49-b421-fa7d109d5971 {} +GOT:{'uuid': '7ce1d71d-e01a-4a49-b421-fa7d109d5971', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/7ce1d71d-e01a-4a49-b421-fa7d109d5971', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/7ce1d71d-e01a-4a49-b421-fa7d109d5971', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'fb68d1dd-e00e-42a3-b1be-183fd9bce997', '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/6b682d29-c6df-4fb9-b68f-b59f6dcfe8eb -Openstack-Request-Id: req-10792489-132d-40d1-96f3-78c22db5b910 +Location: http://localhost/v1/deploy_templates/fb68d1dd-e00e-42a3-b1be-183fd9bce997 +Openstack-Request-Id: req-5bf3e442-fd58-4c9b-b2a0-a324676bc573 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6b682d29-c6df-4fb9-b68f-b59f6dcfe8eb", "created_at": "2024-01-06T13:31:35.721273+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/6b682d29-c6df-4fb9-b68f-b59f6dcfe8eb", "rel": "self"}, {"href": "http://localhost/deploy_templates/6b682d29-c6df-4fb9-b68f-b59f6dcfe8eb", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -GET: /v1/deploy_templates/6b682d29-c6df-4fb9-b68f-b59f6dcfe8eb {} -GOT:{'uuid': '6b682d29-c6df-4fb9-b68f-b59f6dcfe8eb', 'created_at': '2024-01-06T13:31:35.721273+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/6b682d29-c6df-4fb9-b68f-b59f6dcfe8eb', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/6b682d29-c6df-4fb9-b68f-b59f6dcfe8eb', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '70deeab1-e47f-49a9-9c04-9e86d50a5a52', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} -GOT:Response: 500 Internal Server Error +{"uuid": "fb68d1dd-e00e-42a3-b1be-183fd9bce997", "created_at": "2024-01-06T14:10:26.808242+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/fb68d1dd-e00e-42a3-b1be-183fd9bce997", "rel": "self"}, {"href": "http://localhost/deploy_templates/fb68d1dd-e00e-42a3-b1be-183fd9bce997", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"foo": [{"bar": "baz"}]}, "priority": 10}]} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '145d8514-bc7d-4151-b720-a2fde440d1b6', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_doesnt_contain_id +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_doesnt_contain_id ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_error +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_error ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_only_step_fail +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_only_step_fail ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_delete_port_events +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_delete_port_events ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_query_false +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_query_false ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_generate_uuid +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_generate_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_binding_host_id +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_binding_host_id ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_steps +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_steps ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_binding_vnic_type +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_binding_vnic_type ... ok +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-391c3e9e-ca8f-482c-bfb1-bb65e6ddba68 +Openstack-Request-Id: req-485f5378-5333-4c27-95e6-12d9e79be6c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Missing mandatory parameter: connector_uuid\", \"debuginfo\": null}"} +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 403 Forbidden Content-Type: application/json -Location: http://localhost/v1/deploy_templates/05c63a98-1a4a-46ab-870a-bc6983405bdd -Openstack-Request-Id: req-8eb077ff-0fa4-46a3-a418-f3bd32d7b53c +Openstack-Request-Id: req-ac6c4282-5154-407f-ad3d-2ae7823b32c5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "05c63a98-1a4a-46ab-870a-bc6983405bdd", "created_at": "2024-01-06T13:31:36.736502+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/05c63a98-1a4a-46ab-870a-bc6983405bdd", "rel": "self"}, {"href": "http://localhost/deploy_templates/05c63a98-1a4a-46ab-870a-bc6983405bdd", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -GET: /v1/deploy_templates/05c63a98-1a4a-46ab-870a-bc6983405bdd {} -GOT:{'uuid': '05c63a98-1a4a-46ab-870a-bc6983405bdd', 'created_at': '2024-01-06T13:31:36.736502+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/05c63a98-1a4a-46ab-870a-bc6983405bdd', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/05c63a98-1a4a-46ab-870a-bc6983405bdd', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '476edf1b-8da3-4175-9543-e080400db92c', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_post_nodes_subresource -ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_post_nodes_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_many -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_many ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_unknown_event_property -ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_unknown_event_property ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +GET: /v1/ports/?limit=3 {} +GOT:{'ports': [{'uuid': '2f52a140-446b-4dae-a2c6-b0b608b1cb77', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/2f52a140-446b-4dae-a2c6-b0b608b1cb77', 'rel': 'self'}, {'href': 'http://localhost/ports/2f52a140-446b-4dae-a2c6-b0b608b1cb77', 'rel': 'bookmark'}]}, {'uuid': '40cb19ba-6ba9-4064-84af-635b11049d9e', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/40cb19ba-6ba9-4064-84af-635b11049d9e', 'rel': 'self'}, {'href': 'http://localhost/ports/40cb19ba-6ba9-4064-84af-635b11049d9e', 'rel': 'bookmark'}]}, {'uuid': '11384dee-2a6a-491c-9010-b735cdd1453a', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/11384dee-2a6a-491c-9010-b735cdd1453a', 'rel': 'self'}, {'href': 'http://localhost/ports/11384dee-2a6a-491c-9010-b735cdd1453a', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=3&marker=11384dee-2a6a-491c-9010-b735cdd1453a'} +GET: /v1/ports?fields=address,uuid {} +GOT:{'ports': [{'uuid': '4a7eb6b2-e0b2-4fd0-936c-c852c0f15387', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/4a7eb6b2-e0b2-4fd0-936c-c852c0f15387', 'rel': 'self'}, {'href': 'http://localhost/ports/4a7eb6b2-e0b2-4fd0-936c-c852c0f15387', 'rel': 'bookmark'}]}, {'uuid': '9bd56384-1565-430b-bf2f-ecfab191ae5c', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/9bd56384-1565-430b-bf2f-ecfab191ae5c', 'rel': 'self'}, {'href': 'http://localhost/ports/9bd56384-1565-430b-bf2f-ecfab191ae5c', 'rel': 'bookmark'}]}, {'uuid': '400b0d99-331b-4003-9b33-d2127e614e41', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/400b0d99-331b-4003-9b33-d2127e614e41', 'rel': 'self'}, {'href': 'http://localhost/ports/400b0d99-331b-4003-9b33-d2127e614e41', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=address,uuid&limit=3&marker=400b0d99-331b-4003-9b33-d2127e614e41'} +GET: /v1/ports {} +GOT:{'ports': [{'uuid': 'd772c4f6-fe1a-489c-8a91-99755c53094c', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/d772c4f6-fe1a-489c-8a91-99755c53094c', 'rel': 'self'}, {'href': 'http://localhost/ports/d772c4f6-fe1a-489c-8a91-99755c53094c', 'rel': 'bookmark'}]}, {'uuid': '712e86d3-6553-438c-a8cb-9ed9faf5f389', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/712e86d3-6553-438c-a8cb-9ed9faf5f389', 'rel': 'self'}, {'href': 'http://localhost/ports/712e86d3-6553-438c-a8cb-9ed9faf5f389', 'rel': 'bookmark'}]}, {'uuid': '950c3391-eb60-4c91-833b-bba850897016', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/950c3391-eb60-4c91-833b-bba850897016', 'rel': 'self'}, {'href': 'http://localhost/ports/950c3391-eb60-4c91-833b-bba850897016', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=3&marker=950c3391-eb60-4c91-833b-bba850897016'} +GET: /v1/ports/detail {} +GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:26.434603+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'}]} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781/detail {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-e2b140a5-da32-4ec0-baba-fd23c2ae0685 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/ports/detail?node=test-node {} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-c859e030-d8c9-423f-98aa-20fab06df4b9 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/ports/detail?node=test-node {} +GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:26.910650+00:00', 'updated_at': None, '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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/ports?detail=True {} +GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:27.124787+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'}]} +GET: /v1/ports {} +GOT:{'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 {} +GOT:{'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?sort_key=pxe_enabled {} +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_sort_key_allowed +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_sort_key_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_uuid +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_sort_key_not_allowed +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_sort_key_not_allowed ... ok ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_empty_steps ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_empty_steps ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_cached -ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_cached ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_device_id +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_device_id ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_and_fields +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_and_fields ... ok ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_extra ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_extra ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_cannot_load -ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_cannot_load ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_fake -ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_fake ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_duplicate_step +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_duplicate_step ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_false_and_fields +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_false_and_fields ... ok ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_foo ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_foo ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_by_node_name -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_by_node_name ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_chassis_not_found -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_chassis_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_hw_type -ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_hw_type ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_empty_step_list_fail +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_empty_step_list_fail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_old_version +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_old_version ... ok ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_name ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_conductor_unavailable -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_conductor_unavailable ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_invalid_driver_name -ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_invalid_driver_name ... ok -GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T13:31:35.821100+00:00', 'updated_at': None, '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?fields=extra,description {} -GOT:{'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'}]} -GET: /v1/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c {} -GOT:{'uuid': 'c9c8844c-784e-40c6-85e7-32cb1f57976c', 'created_at': '2024-01-06T13:31:36.569362+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c', 'rel': 'self'}, {'href': 'http://localhost/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c/nodes', 'rel': 'bookmark'}]]} -GET: /v1/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c {} -GOT:{'uuid': 'c9c8844c-784e-40c6-85e7-32cb1f57976c', 'created_at': '2024-01-06T13:31:36.569362+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c', 'rel': 'self'}, {'href': 'http://localhost/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c/nodes', 'rel': 'bookmark'}]]} -GET: /chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c {} -GOT:{'uuid': 'c9c8844c-784e-40c6-85e7-32cb1f57976c', 'created_at': '2024-01-06T13:31:36.569362+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {}, 'links': [{'href': 'http://localhost/v1/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c', 'rel': 'self'}, {'href': 'http://localhost/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://localhost/v1/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c/nodes', 'rel': 'self'}, {'href': 'http://localhost/chassis/c9c8844c-784e-40c6-85e7-32cb1f57976c/nodes', 'rel': 'bookmark'}]]} -GET: /v1/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd {} -GOT:{'uuid': '04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd', 'created_at': '2024-01-06T13:31:36.992878+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {}, 'links': [{'href': 'http://foo/v1/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd', 'rel': 'self'}, {'href': 'http://foo/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://foo/v1/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd/nodes', 'rel': 'self'}, {'href': 'http://foo/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd/nodes', 'rel': 'bookmark'}]]} -GET: /v1/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd {} -GOT:{'uuid': '04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd', 'created_at': '2024-01-06T13:31:36.992878+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {}, 'links': [{'href': 'http://foo/v1/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd', 'rel': 'self'}, {'href': 'http://foo/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://foo/v1/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd/nodes', 'rel': 'self'}, {'href': 'http://foo/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd/nodes', 'rel': 'bookmark'}]]} -GET: /chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd {} -GOT:{'uuid': '04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd', 'created_at': '2024-01-06T13:31:36.992878+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {}, 'links': [{'href': 'http://foo/v1/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd', 'rel': 'self'}, {'href': 'http://foo/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd', 'rel': 'bookmark'}], 'nodes': [[{'href': 'http://foo/v1/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd/nodes', 'rel': 'self'}, {'href': 'http://foo/chassis/04a38809-6ded-4c7e-8f9e-dcc7f45f1bcd/nodes', 'rel': 'bookmark'}]]} -GET: /v1/chassis {} -GOT:{'chassis': [{'uuid': '284a3392-36bb-4f69-9542-65fa48fef3d4', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/284a3392-36bb-4f69-9542-65fa48fef3d4', 'rel': 'self'}, {'href': 'http://localhost/chassis/284a3392-36bb-4f69-9542-65fa48fef3d4', 'rel': 'bookmark'}]}, {'uuid': '8e005a0f-b186-4d3f-be95-ad2adc6932f9', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/8e005a0f-b186-4d3f-be95-ad2adc6932f9', 'rel': 'self'}, {'href': 'http://localhost/chassis/8e005a0f-b186-4d3f-be95-ad2adc6932f9', 'rel': 'bookmark'}]}, {'uuid': 'c2d7da96-fbd2-4ef4-a9de-1fbfbcc4bdb2', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/c2d7da96-fbd2-4ef4-a9de-1fbfbcc4bdb2', 'rel': 'self'}, {'href': 'http://localhost/chassis/c2d7da96-fbd2-4ef4-a9de-1fbfbcc4bdb2', 'rel': 'bookmark'}]}, {'uuid': 'b4a7bac1-57e6-4ed3-8f27-3c8b8d8e2daf', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/b4a7bac1-57e6-4ed3-8f27-3c8b8d8e2daf', 'rel': 'self'}, {'href': 'http://localhost/chassis/b4a7bac1-57e6-4ed3-8f27-3c8b8d8e2daf', 'rel': 'bookmark'}]}, {'uuid': 'c4fee6df-cdda-4af0-a9cf-637d5fddb0b7', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/c4fee6df-cdda-4af0-a9cf-637d5fddb0b7', 'rel': 'self'}, {'href': 'http://localhost/chassis/c4fee6df-cdda-4af0-a9cf-637d5fddb0b7', 'rel': 'bookmark'}]}]} -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes {} -GOT:{'nodes': [{'uuid': '46d250a2-ce8d-44cf-81b5-70e0704651ca', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/46d250a2-ce8d-44cf-81b5-70e0704651ca', 'rel': 'self'}, {'href': 'http://localhost/nodes/46d250a2-ce8d-44cf-81b5-70e0704651ca', 'rel': 'bookmark'}]}, {'uuid': '94225e3e-f2b1-4fcd-90fd-d1953ad41ad2', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/94225e3e-f2b1-4fcd-90fd-d1953ad41ad2', 'rel': 'self'}, {'href': 'http://localhost/nodes/94225e3e-f2b1-4fcd-90fd-d1953ad41ad2', 'rel': 'bookmark'}]}]} -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes?limit=1 {} -GOT:{'nodes': [{'uuid': '46d250a2-ce8d-44cf-81b5-70e0704651ca', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/46d250a2-ce8d-44cf-81b5-70e0704651ca', 'rel': 'self'}, {'href': 'http://localhost/nodes/46d250a2-ce8d-44cf-81b5-70e0704651ca', '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=46d250a2-ce8d-44cf-81b5-70e0704651ca'} -GET: /v1/chassis/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/nodes {} -GOT:Response: 404 Not Found +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_with_incorrect_api_usage +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_with_incorrect_api_usage ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_name_none +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_name_none ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_none +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_none ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_empty +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_empty ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_mac_address +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_mac_address ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_steps +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_steps ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_port_id +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_port_id ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_args1 +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_args1 ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_non_admin +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_non_admin ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_status +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_status ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_non_admin_no_match +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_non_admin_no_match ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-0fc61b3c-74d7-45ec-a91c-4fda1f1b4ba1 +Location: http://localhost/v1/deploy_templates/145d8514-bc7d-4151-b720-a2fde440d1b6 +Openstack-Request-Id: req-5f327426-ddd1-4461-bc20-02cb58294370 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_link -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_link ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_name_none -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_name_none ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_invalid_vif_id -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_invalid_vif_id ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_no_uuid -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_no_uuid ... ok -GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T13:31:34.962046+00:00', 'updated_at': None, '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'}]]} -POST: /v1/chassis {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 'data-center-1-chassis'} +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "145d8514-bc7d-4151-b720-a2fde440d1b6", "created_at": "2024-01-06T14:10:26.978447+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/145d8514-bc7d-4151-b720-a2fde440d1b6", "rel": "self"}, {"href": "http://localhost/deploy_templates/145d8514-bc7d-4151-b720-a2fde440d1b6", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +GET: /v1/deploy_templates/145d8514-bc7d-4151-b720-a2fde440d1b6 {} +GOT:{'uuid': '145d8514-bc7d-4151-b720-a2fde440d1b6', 'created_at': '2024-01-06T14:10:26.978447+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/145d8514-bc7d-4151-b720-a2fde440d1b6', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/145d8514-bc7d-4151-b720-a2fde440d1b6', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '8d341a62-6422-41cb-bec0-be1f4e59129c', '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-5c44d50a-bdc4-44a9-819f-dfe4add78946 +Openstack-Request-Id: req-7161ee5c-324b-4b19-a6ea-f137e27dc756 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} -POST: /v1/chassis {'extra': {}, 'description': 'data-center-1-chassis'} +POST: /v1/deploy_templates {'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/chassis/8a6d5294-baab-472e-ad5c-fa0b49521370 -Openstack-Request-Id: req-2ea505e5-7326-43f6-8a73-9322c0cefa7a +Location: http://localhost/v1/deploy_templates/8804e59b-3756-46c4-aded-152dfaed6425 +Openstack-Request-Id: req-e730b889-5bb0-4102-af05-14cc4b81e345 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "8a6d5294-baab-472e-ad5c-fa0b49521370", "created_at": "2024-01-06T13:31:35.516463+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/8a6d5294-baab-472e-ad5c-fa0b49521370", "rel": "self"}, {"href": "http://localhost/chassis/8a6d5294-baab-472e-ad5c-fa0b49521370", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/8a6d5294-baab-472e-ad5c-fa0b49521370/nodes", "rel": "self"}, {"href": "http://localhost/chassis/8a6d5294-baab-472e-ad5c-fa0b49521370/nodes", "rel": "bookmark"}]]} -GET: /v1/chassis {} -GOT:{'chassis': [{'uuid': '8a6d5294-baab-472e-ad5c-fa0b49521370', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/8a6d5294-baab-472e-ad5c-fa0b49521370', 'rel': 'self'}, {'href': 'http://localhost/chassis/8a6d5294-baab-472e-ad5c-fa0b49521370', 'rel': 'bookmark'}]}]} -POST: /v1/chassis {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 1334} +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "8804e59b-3756-46c4-aded-152dfaed6425", "created_at": "2024-01-06T14:10:27.378857+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/8804e59b-3756-46c4-aded-152dfaed6425", "rel": "self"}, {"href": "http://localhost/deploy_templates/8804e59b-3756-46c4-aded-152dfaed6425", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +GET: /v1/deploy_templates/8804e59b-3756-46c4-aded-152dfaed6425 {} +GOT:{'uuid': '8804e59b-3756-46c4-aded-152dfaed6425', 'created_at': '2024-01-06T14:10:27.378857+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/8804e59b-3756-46c4-aded-152dfaed6425', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/8804e59b-3756-46c4-aded-152dfaed6425', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'bd5180e6-fb2e-42b4-b02f-0f2a919fb322', '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\"}"} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'aaab9d0f-7d92-418b-bff9-d846dd9bc1ef', 'steps': [], 'extra': {}} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-117dfbba-43eb-4441-9401-2e3517ce8b1e +Openstack-Request-Id: req-aa96f54a-e16c-45ff-9ed1-6f7bb031bfb2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/chassis {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: [] is too short\", \"debuginfo\": null}"} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'dac7f881-1a5c-4c53-ad0d-7a611af82915', '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-5a5271c8-dee9-45ad-9fc8-c5b9738d6d38 +Openstack-Request-Id: req-95a125a6-900c-4472-83a6-7bc86bbc11f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/chassis {'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 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 42 is not of type 'object', 'null'\", \"debuginfo\": null}"} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'c5107f8c-c2cc-4b64-bd1c-17f665d05ca3', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}, 'foo': 'bar'} +GOT:Response: 400 Bad Request Content-Type: application/json -Location: http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -Openstack-Request-Id: req-535b5787-f569-405e-9382-8219449616b5 +Openstack-Request-Id: req-9847ef28-8beb-4a6d-9afd-80f3b90e26e2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:31:36.635177+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 {} -GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T13:31:36.635177+00:00', 'updated_at': None, 'description': 'data-center-1-chassis', 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, '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'}]]} -POST: /v1/chassis/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -GOT:Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: Additional properties are not allowed ('foo' was unexpected)\", \"debuginfo\": null}"} +POST: /v1/deploy_templates {'name': 42, 'uuid': 'baafb157-08ea-4f06-92a9-081c13184032', '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-e922ac58-e7e0-464c-9a59-97ed9b285686 +Openstack-Request-Id: req-c0883c5d-878e-49bf-8c1a-12779621a8cb X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/drivers/manual-management/properties {} -GOT:{'prop1': 'Property 1. Required.'} -GET: /v1/drivers/manual-management/properties {} -GOT:{'prop1': 'Property 1. Required.'} -GET: /v1/drivers/manual-management/properties {} -GOT:{'prop1': 'Property 1. Required.'} -GET: /v1/drivers/driver/properties {} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 42 is not of type 'string'\", \"debuginfo\": null}"} +POST: /v1/deploy_templates {'name': None, 'uuid': 'd3339c7d-a9e3-47c5-9fbc-462b038e9d92', '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-256c24c2-8352-4265-90c3-e59cdf7da205 +Openstack-Request-Id: req-213dd945-74ab-4a46-a23c-a80e9f25c36e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/drivers/test/properties {} -GOT:{'prop1': 'Property 1. Required.'} -GET: /v1/drivers/manual-management/properties {} -GOT:{'prop1': 'Property 1. Required.'} -GET: /v1/drivers/bad_driver/properties {} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: None is not of type 'string'\", \"debuginfo\": null}"} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '10a26fed-2a0f-4dbd-85c3-372cf2d9117f', 'steps': {}, 'extra': {}} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-91216755-e928-4d51-ba1a-e335007a1fa0 +Openstack-Request-Id: req-d6ca3e25-8cf9-4a33-9fc7-36f623accd39 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/drivers/fake-hardware-type {} -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_properties_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_properties_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_steps -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_steps ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_one -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_one ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_no_vif_id -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_no_vif_id ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_type_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_type_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_sort_key -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_sort_key ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_args1 -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_args1 ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_node_locked -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_node_locked ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_async -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_async ... ok +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: {} is not of type 'array'\", \"debuginfo\": null}"} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'd29926e0-fc8f-4dfc-ae19-ddfcacf81864', '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-5e8ae9ba-78f8-41a1-86ef-b5f18cb6e6d4 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'not a dict' is not of type 'object'\", \"debuginfo\": null}"} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_args2 ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_args2 ... ok -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_sort_key_invalid -ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_sort_key_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_delete -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_delete ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_node_not_found -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_node_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_unbind_port_events +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_unbind_port_events ... ok ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_foo ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_foo ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_driver_not_found -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_driver_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_port_uuid_and_portgroup_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_port_uuid_and_portgroup_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_interface1 -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_interface1 ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_get -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_get ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links_custom_fields -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_port_uuid_and_portgroup_uuid_old -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_port_uuid_and_portgroup_uuid_old ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_method_not_found -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_method_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_interface2 -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_interface2 ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links_default_limit -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links_default_limit ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_methods -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_methods ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_negative_priority -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_negative_priority ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_empty -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_empty ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_put -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_put ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_collection_custom_fields -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_collection_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_sync -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_sync ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_not_supported +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_not_supported ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_not_a_trait +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_not_a_trait ... ok +POST: /v1/events {'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-ab898736-11ba-4ed9-a748-e9860f05069a +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +POST: /v1/events {'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-c1cf9827-832e-4fec-8609-89e55c22ef21 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 + +POST: /v1/events {'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-f563cd62-e345-4222-9dab-be66a49bf453 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 + +POST: /v1/events {'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-e11679d7-2962-4107-b8a9-d0edaca080f4 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 + +POST: /v1/events {'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-1c7fc118-e4ad-4590-87ce-f86265cf1cd1 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +POST: /v1/events {'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-3350fb64-e392-4abf-876b-ff4cdd234d42 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['binding:vnic_type', 'SHOULD', 'BE', 'TEXT'] is not of type 'string', 'null'\", \"debuginfo\": null}"} POST: /v1/events {'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-acd1e60e-36ee-4dba-a37f-0918b9434ec3 +Openstack-Request-Id: req-6d0509d0-5a7d-4598-8b30-e4775ec015d2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -7469,7 +7977,7 @@ POST: /v1/events {'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-ffc0c1a6-9479-4d74-8c01-9be2dc0927bc +Openstack-Request-Id: req-a83eed74-ba7d-47a4-b542-012668ad28e1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -7477,7 +7985,7 @@ POST: /v1/events {'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-67d140ec-e8fc-4cc2-b73c-9a111069e621 +Openstack-Request-Id: req-645df543-1221-4147-b5cf-443e6844034c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -7485,929 +7993,855 @@ POST: /v1/events {'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-40cab4d1-5605-4348-a7a9-197b0b580fe6 +Openstack-Request-Id: req-9f054731-d3a3-4634-b460-ba610b434c3e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['status', 'SHOULD', 'BE', 'TEXT'] is not of type 'string'\", \"debuginfo\": null}"} POST: /v1/events {'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-9f9aa4e5-7271-4ff7-a020-453cceba4382 +Openstack-Request-Id: req-e04d4b56-31cb-4b11-aaa7-0c2413ca8a9a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 POST: /v1/events {'events': [{'event': 'network.unbind_port', 'UNKNOWN': 'EVENT_PROPERTY'}]} -GOT:Response: 400 Bad Request +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_unknown_event_property +ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_unknown_event_property ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_interface1 +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_interface1 ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_ok ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_interface2 +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_interface2 ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history_returns_detail +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history_returns_detail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_uuid_and_name +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_uuid_and_name ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_too_long +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_too_long ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_negative_priority +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_negative_priority ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history_returns_entries +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history_returns_entries ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_name +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_name ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_priority +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_priority ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_old_version +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_old_version ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_step +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_step ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f16f5060-ff62-4fcd-ba43-a8821ccd2c8a +Openstack-Request-Id: req-db0847cc-e3e7-450f-b226-c83304e8d41b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'port_id' is a required property\", \"debuginfo\": null}"} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': '985808f3-2ca2-48ff-9a9f-0adcccbd30b0'} -GOT:Response: 204 No Content -Openstack-Request-Id: req-072d0fc8-5f8f-45a6-b9dc-0685f6b662fb -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.28 - -POST: /v1/nodes/node-39/vifs {'id': '6be84cec-a713-4fde-b8d3-84c36c892ecc'} -GOT:Response: 204 No Content -Openstack-Request-Id: req-e957cfd0-3465-4c4f-b71b-8bf147318887 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.28 - -POST: /v1/nodes/node-39/vifs {'id': '2d024d8f-7ad0-4f2c-a2a2-e7055b0ee77a'} +{"uuid": "5cf91322-2487-456a-9f30-3fdacf527d3c", "created_at": "2024-01-06T14:10:26.372402+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/5cf91322-2487-456a-9f30-3fdacf527d3c", "rel": "self"}, {"href": "http://localhost/deploy_templates/5cf91322-2487-456a-9f30-3fdacf527d3c", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration0", "args": {}, "priority": 10}, {"interface": "raid", "step": "create_configuration2", "args": {}, "priority": 10}]} +PATCH: /v1/deploy_templates/90e57478-4046-4b02-aa25-c37db6ea5fee [{'path': '/name', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-995a2556-9dff-4eb7-bbd8-b3c769903f45 +Openstack-Request-Id: req-be815286-3279-4626-b79c-1c80d0f884a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.28 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"boom\", \"debuginfo\": null}"} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'invalid%id^'} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'name' is a required property\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/a353927c-5f34-4371-8b61-715d9a263a3a [{'path': '/non-existent', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-33224896-6b96-40ae-ab19-b97e91b17b9a +Openstack-Request-Id: req-ae72e74b-bd06-4a99-9ddd-9d670f349e82 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'bad_id': '31ea47a7-8a56-42c6-9c15-e0f1b0999061'} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /non-existent. Only the following can be updated: extra, name, steps, description\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/32db0f67-4b4e-474b-bd4d-88180c50bea8 [{'path': '/steps/1', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-9f396135-9c75-4b58-83cf-fcc506991421 +Openstack-Request-Id: req-408d497c-aea4-4f39-a087-e70d68cabb02 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'a9c28852-dfb9-4e7a-8f28-1b526d7f76fd'} -GOT:Response: 409 Conflict +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/steps/1', 'op': 'remove'}'. Reason: can't remove a non-existent object '1'\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/e32f772b-1bec-4677-8266-e0f118b9bc7c [{'path': '/steps/0/non-existent', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-6f0df846-1343-485f-82a6-ac3006f9db0b +Openstack-Request-Id: req-970df146-9833-4ddd-85ac-de4989a292ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes/doesntexist/vifs {'id': 'ab47eefd-aadb-4136-8160-c703aabf7ec6'} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/steps/0/non-existent', 'op': 'remove'}'. Reason: can't remove a non-existent object 'non-existent'\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/fcc75e1d-fe50-4294-a621-703f013ffd2d [{'path': '/steps/0', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b4d4086c-454e-4f46-81a6-786733b40904 +Openstack-Request-Id: req-869a5473-611c-4f18-934b-4fdf4b6c99b5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': '3082d811-1701-4ea4-b000-35a5ef6e05f2', 'port_uuid': 'port-uuid', 'portgroup_uuid': 'portgroup-uuid'} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: [] is too short\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/14e06059-b3c6-4939-9e84-783c9c9de73c [{'path': '/steps', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-cc157a37-2598-48df-9e3e-1a5efee2db96 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': '5508d9d8-9ff6-4c82-9a95-af24a930dec9', 'port_uuid': 'port-uuid', 'portgroup_uuid': 'portgroup-uuid'} -GOT:Response: 204 No Content -Openstack-Request-Id: req-08bb38af-2d7f-4b48-8086-47bccbf5d603 +Openstack-Request-Id: req-729d2bc9-fec7-4d8f-b84e-01c618e174f3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.28 - -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/273e0e5e-0378-488d-9953-e31141118939 -GOT:Response: 204 No Content -Openstack-Request-Id: req-f34ffa5d-12e0-4695-9bed-74faf155ef57 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'steps' is a required property\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/9204e232-d317-4419-8459-470f3718aeb0 [{'path': '/uuid', 'op': 'remove'}] +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-06940193-2f0e-4bf2-8b23-6d421052c89a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.28 - -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_by_node_name -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_by_node_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_node_locked -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_node_locked ... ok -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\"}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '346eb12d-f28d-47b8-9814-eef0f5e0828b', 'steps': [], 'extra': {}} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: extra, name, steps, description\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/5e0ad155-17cc-4ca0-a00c-49887a679de8 [{'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-48832d25-f450-4a39-9d29-d9ed7a6d1dd6 +Openstack-Request-Id: req-8305ba57-a600-4fd4-b7d3-f733c60ad409 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: [] is too short\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '24cf3cad-2707-4fc6-98ef-e6b4dea7f0ca', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': 42} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template invalid: Duplicate deploy steps. A deploy template cannot have multiple deploy steps with the same interface and step. Duplicates: interface: raid, step: create_configuration.\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/9def1e49-d95c-4621-ae47-57788d57f670 [{'path': '/steps', 'op': 'replace', 'value': []}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-445091b9-d56e-4a66-ad17-a2c62bdf26cc +Openstack-Request-Id: req-f21292ce-c5e0-49e2-b388-ad3fb5385d02 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 42 is not of type 'object', 'null'\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'ffd74e9a-e2da-4582-b63f-38d123fa775c', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}, 'foo': 'bar'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: [] is too short\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/5b519803-d9e8-4725-99c0-460011f0ff65 [{'path': '/name', 'op': 'replace', 'value': None}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-a7b9d0c5-2213-4abd-8414-74496802fdcd +Openstack-Request-Id: req-bca2a262-f4c2-4be8-8766-a4aebf28b390 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: Additional properties are not allowed ('foo' was unexpected)\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 42, 'uuid': '24cf4934-f5e9-407f-b32f-d1c470c1bc67', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: None is not of type 'string'\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/e1f1ad68-c899-40c6-9b11-925f49d5ccee [{'path': '/name', 'op': 'replace', 'value': 'not-a-trait'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-34c14f62-b91c-4a46-8aec-96f164ab684b +Openstack-Request-Id: req-bb1691a9-1f92-4de9-b063-1770de61ed85 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 42 is not of type 'string'\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': None, 'uuid': '1307ffa5-bd46-4d45-a0d2-5be9fa0bf82d', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} +{"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}"} +PATCH: /v1/deploy_templates/1ed02eae-7a0c-4dd1-bc79-5e66e78e8951 [{'path': '/name', 'op': 'replace', 'value': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-6442cf27-65f2-450b-a041-c4966ca9185d +Openstack-Request-Id: req-0f06a5f4-648b-44b1-86b1-4dd636914830 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: None is not of type 'string'\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '0ef72d40-2552-4fb9-92ab-6560c8b64d16', 'steps': {}, 'extra': {}} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' is too long\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/37b09a28-941b-4c28-bfb4-5b2a7d91c85e [{'path': '/steps/0', 'op': 'replace', 'value': {'interface': 'foo', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'priority': 42}}] +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_step_interface_fail +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_step_interface_fail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_multi +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_multi ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_long_name +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_long_name ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_pagination +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_pagination ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_and_node_uuid +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_and_node_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_name_invalid_not_a_trait +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_name_invalid_not_a_trait ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_name_already_exist +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_name_already_exist ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item_not_found +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_non_existent_step_fail +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_non_existent_step_fail ... ok +GOT:{'ports': [{'uuid': '4ade3faf-d88b-4d4a-a8af-ddae51897505', 'created_at': '2024-01-06T14:10:27.464998+00:00', 'updated_at': None, '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': None, 'pxe_enabled': False, 'links': [{'href': 'http://localhost/v1/ports/4ade3faf-d88b-4d4a-a8af-ddae51897505', 'rel': 'self'}, {'href': 'http://localhost/ports/4ade3faf-d88b-4d4a-a8af-ddae51897505', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None}, {'uuid': '94f3de89-fe1f-4160-a780-86732ce3ba44', 'created_at': '2024-01-06T14:10:27.468959+00:00', 'updated_at': None, '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': None, 'pxe_enabled': True, 'links': [{'href': 'http://localhost/v1/ports/94f3de89-fe1f-4160-a780-86732ce3ba44', 'rel': 'self'}, {'href': 'http://localhost/ports/94f3de89-fe1f-4160-a780-86732ce3ba44', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None}]} +GET: /v1/ports/detail?sort_key=pxe_enabled {} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-7debc768-ab9c-4ddf-b65b-5ab97b30b9d7 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/ports?detail=True&fields=name {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-00cda864-714b-4c33-af48-582c59711951 +Openstack-Request-Id: req-49d0190d-0cf6-43eb-9e10-2d6f56f03a55 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: {} is not of type 'array'\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '8da35934-8a30-4729-a28b-fefe28b1456c', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': 'not a dict', 'priority': 10}], 'extra': {}} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} +GET: /v1/ports?detail=False&fields=internal_info {} +GOT:{'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'}]}]} +GET: /v1/ports?detail=True {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-a4400740-a03e-44e7-8b4b-cd6b8e67d842 +Openstack-Request-Id: req-ff23b1b4-a616-4531-8768-fd6c313d94ac X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'not a dict' is not of type 'object'\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '8a4875be-45fc-4742-ad56-448c0b9471f6', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': [], 'priority': 10}], 'extra': {}} +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid query parameter ?detail=True received.\", \"debuginfo\": null}"} +GET: /v1/ports/detail?node=test-node&node_uuid=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:{'ports': []} +GET: /v1/ports {} +GOT:{'ports': []} +GET: /v1/ports?node=test-node {} +GOT:{'ports': [{'uuid': 'c80d802e-0f5d-47c1-b064-64a5e130d9eb', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/c80d802e-0f5d-47c1-b064-64a5e130d9eb', 'rel': 'self'}, {'href': 'http://localhost/ports/c80d802e-0f5d-47c1-b064-64a5e130d9eb', 'rel': 'bookmark'}]}, {'uuid': 'ca1969ac-8e74-4943-8676-27b8fab1a4d8', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/ca1969ac-8e74-4943-8676-27b8fab1a4d8', 'rel': 'self'}, {'href': 'http://localhost/ports/ca1969ac-8e74-4943-8676-27b8fab1a4d8', 'rel': 'bookmark'}]}, {'uuid': 'da708b62-355f-4195-b4e8-9e48123e1a98', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/da708b62-355f-4195-b4e8-9e48123e1a98', 'rel': 'self'}, {'href': 'http://localhost/ports/da708b62-355f-4195-b4e8-9e48123e1a98', 'rel': 'bookmark'}]}]} +GET: /v1/ports?node=test-node {} +GOT:{'ports': []} +GET: /v1/ports?node=test-node {} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-479d8521-c72f-4150-894f-b7287bce1d98 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/ports?node=test-node {} +GOT:{'ports': [{'uuid': 'b9efdfbc-ebc6-4c4e-9519-b26c6dc657e0', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/b9efdfbc-ebc6-4c4e-9519-b26c6dc657e0', 'rel': 'self'}, {'href': 'http://localhost/ports/b9efdfbc-ebc6-4c4e-9519-b26c6dc657e0', 'rel': 'bookmark'}]}, {'uuid': '3459e9f4-dd90-492b-a3bb-ed08014c9401', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/3459e9f4-dd90-492b-a3bb-ed08014c9401', 'rel': 'self'}, {'href': 'http://localhost/ports/3459e9f4-dd90-492b-a3bb-ed08014c9401', 'rel': 'bookmark'}]}, {'uuid': 'a3b7384c-0d35-4275-a15e-4a132fd5d9b4', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/a3b7384c-0d35-4275-a15e-4a132fd5d9b4', 'rel': 'self'}, {'href': 'http://localhost/ports/a3b7384c-0d35-4275-a15e-4a132fd5d9b4', 'rel': 'bookmark'}]}]} +GET: /v1/ports/detail?node_uuid=1be26c0b-03f2-4d2e-ae87-c02d7f33c123&node=node-name {} +GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:29.017212+00:00', 'updated_at': None, '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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/ports/detail?portgroup=fooname {} +GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:29.148978+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'}]} +GET: /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:29.375693+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'}]} +GET: /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4&node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-5025a536-31a4-4be0-b6ec-9e9a8857d319 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_non_admin +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_non_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item_old_version +ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item_old_version ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_non_admin_no_match +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_non_admin_no_match ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_step_invalid_interface +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_step_invalid_interface ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test__update_changed_fields_lowers_conductor_group +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test__update_changed_fields_lowers_conductor_group ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_name_invalid_too_long +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_name_invalid_too_long ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_id +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_id ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test__update_changed_fields_remove_chassis_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test__update_changed_fields_remove_chassis_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_id_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_id_invalid_api_version ... ok +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '01b6e99b-da04-4a7f-9dab-50768381da48', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': [], 'priority': 10}], 'extra': {}} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-67c9fdfd-37c5-4374-b1d7-567ca4cfb0d9 +Openstack-Request-Id: req-d621df77-17ca-4cb5-a324-7af89c697991 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: [] is not of type 'object'\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'd4241af9-4e49-436f-a04a-d020b6b7108d', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10, 'foo': 'bar'}], 'extra': {}} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '28e4f0d6-0f96-401e-a12e-047dee48a6a5', '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-208ecaef-6724-4f0b-8266-16455553b231 +Openstack-Request-Id: req-964bab7a-2cdc-4623-b6b4-1bdccc7d2266 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: Additional properties are not allowed ('foo' was unexpected)\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '2e8cf9b1-ef5a-4f8a-9c14-268a58b460a8', 'steps': [{'interface': [3], 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'ff190b2e-de73-4fd3-8d71-f2f572ced0be', '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-d20c391b-7459-46ae-ae33-c82a9cbaaf86 +Openstack-Request-Id: req-fc2e060f-4856-4d4a-9749-dfc25761678f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: [3] is not of type 'string'\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '2767ddc7-6a18-43c1-9980-1ecc02aa5d60', 'steps': [{'interface': 'foo', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '4896f2ad-c4f1-45cf-9e90-df9fa499dec0', '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-b29b8b7a-f4f8-48b9-998d-0829d78ba080 +Openstack-Request-Id: req-334a9b5a-03a2-4edb-b243-b60ec0cd62ee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'foo' is not one of ['power', 'management', 'deploy', 'bios', 'raid']\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'd4305b86-4eac-411e-a736-fa2b6f0dad70', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': -1}], 'extra': {}} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '0dd19c97-4231-4ae7-91b0-870ccf3de565', '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-46658d64-a32c-488f-9ac1-cdfe4f33659d +Openstack-Request-Id: req-06ba4388-4175-43e0-8271-4ac51278d009 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: -1 is less than the minimum of 0\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '534753a8-b09e-4d84-a893-9cd4b000ebcb', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 'not a number'}], 'extra': {}} -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_priority -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_priority ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_step -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_step ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_custom_fields_invalid_fields -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_custom_fields_invalid_fields ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_node_not_found -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_node_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_long_name -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_long_name ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_conductor_offline -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_conductor_offline ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_list -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_list ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_name_invalid_not_a_trait -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_name_invalid_not_a_trait ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_subcontroller_old_version -ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_subcontroller_old_version ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_name_invalid_too_long -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_name_invalid_too_long ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields_with_detail_false -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields_with_detail_false ... ok -GOT:{'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'created_at': '2024-01-06T13:31:38.688591+00:00', 'updated_at': None, '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/nodes {} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'dd6d672b-4557-4434-a188-22895d50e8b7', '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-89afe8c0-a398-4294-b61c-205bbd0dc3c1 +Openstack-Request-Id: req-abeea8a8-9766-433a-99b0-69aca8ea2f7e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/chassis {} -GOT:{'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?sort_key=uuid {} -GOT:{'chassis': [{'uuid': '215463e7-2538-423c-be2d-0fe1f5f3b824', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/215463e7-2538-423c-be2d-0fe1f5f3b824', 'rel': 'self'}, {'href': 'http://localhost/chassis/215463e7-2538-423c-be2d-0fe1f5f3b824', 'rel': 'bookmark'}]}, {'uuid': '6cd41395-02e6-4721-9a86-c74cb76e7f70', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/6cd41395-02e6-4721-9a86-c74cb76e7f70', 'rel': 'self'}, {'href': 'http://localhost/chassis/6cd41395-02e6-4721-9a86-c74cb76e7f70', 'rel': 'bookmark'}]}, {'uuid': 'bc7dfd56-1e80-4039-bb4a-7e66348cb1b6', 'description': 'data-center-1-chassis', 'links': [{'href': 'http://localhost/v1/chassis/bc7dfd56-1e80-4039-bb4a-7e66348cb1b6', 'rel': 'self'}, {'href': 'http://localhost/chassis/bc7dfd56-1e80-4039-bb4a-7e66348cb1b6', 'rel': 'bookmark'}]}]} -GET: /v1/chassis?sort_key=foo {} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'not a number' does not match '^[0-9]+$'\", \"debuginfo\": null}"} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '339a6fe7-4df9-4dc2-9805-fba0bbb80bb6', 'steps': [{'interface': 'raid', 'step': 42, 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-52d011c0-da81-4ad8-9b7a-adeb40087465 +Openstack-Request-Id: req-3187404c-284e-47d4-a33c-a76de18c6b6d X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 42 is not of type 'string'\", \"debuginfo\": null}"} +POST: /v1/deploy_templates {'name': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'uuid': 'fe80d85b-53a4-4ed7-9171-36913fe59f29', '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/fe80d85b-53a4-4ed7-9171-36913fe59f29 +Openstack-Request-Id: req-7c562ebf-c6e1-48f0-88ae-0aba2669bff6 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "fe80d85b-53a4-4ed7-9171-36913fe59f29", "created_at": "2024-01-06T14:10:29.443779+00:00", "updated_at": null, "name": "CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/fe80d85b-53a4-4ed7-9171-36913fe59f29", "rel": "self"}, {"href": "http://localhost/deploy_templates/fe80d85b-53a4-4ed7-9171-36913fe59f29", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +POST: /v1/deploy_templates {'name': 'not-a-trait', 'uuid': '7d4e85c1-df46-41e7-a7ce-a0e141b056bd', '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-f27ad118-f55e-47fb-a7c7-a3768174e591 +Openstack-Request-Id: req-287e9b58-461b-4634-9bb9-1f756dd861d1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/conductors/?limit=3 {} -GOT:{'conductors': [{'hostname': 'ead71e2c-9ab7-410a-8d42-92bd22205f39', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/ead71e2c-9ab7-410a-8d42-92bd22205f39', 'rel': 'self'}, {'href': 'http://localhost/conductors/ead71e2c-9ab7-410a-8d42-92bd22205f39', 'rel': 'bookmark'}], 'alive': True}, {'hostname': '0cfaae7a-2447-4ea7-b4e9-6de8cd953b63', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/0cfaae7a-2447-4ea7-b4e9-6de8cd953b63', 'rel': 'self'}, {'href': 'http://localhost/conductors/0cfaae7a-2447-4ea7-b4e9-6de8cd953b63', 'rel': 'bookmark'}], 'alive': True}, {'hostname': '1abeed30-5e5f-434b-9c88-8934240f302c', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/1abeed30-5e5f-434b-9c88-8934240f302c', 'rel': 'self'}, {'href': 'http://localhost/conductors/1abeed30-5e5f-434b-9c88-8934240f302c', 'rel': 'bookmark'}], 'alive': True}], 'next': 'http://localhost/v1/conductors?sort_key=id&sort_dir=asc&fields=hostname,conductor_group,alive&limit=3&marker=1abeed30-5e5f-434b-9c88-8934240f302c'} -GET: /v1/conductors?fields=hostname,alive {} -GOT:{'conductors': [{'hostname': 'e59b2d3c-19cf-495f-81c2-41243fb177d6', 'links': [{'href': 'http://localhost/v1/conductors/e59b2d3c-19cf-495f-81c2-41243fb177d6', 'rel': 'self'}, {'href': 'http://localhost/conductors/e59b2d3c-19cf-495f-81c2-41243fb177d6', 'rel': 'bookmark'}], 'alive': True}, {'hostname': '9a26ccf1-7070-4672-865b-2246666d77b9', 'links': [{'href': 'http://localhost/v1/conductors/9a26ccf1-7070-4672-865b-2246666d77b9', 'rel': 'self'}, {'href': 'http://localhost/conductors/9a26ccf1-7070-4672-865b-2246666d77b9', 'rel': 'bookmark'}], 'alive': True}, {'hostname': '2ea558d9-71bb-410e-9b7f-1817960e0afc', 'links': [{'href': 'http://localhost/v1/conductors/2ea558d9-71bb-410e-9b7f-1817960e0afc', 'rel': 'self'}, {'href': 'http://localhost/conductors/2ea558d9-71bb-410e-9b7f-1817960e0afc', 'rel': 'bookmark'}], 'alive': True}], 'next': 'http://localhost/v1/conductors?sort_key=id&sort_dir=asc&fields=hostname,alive&limit=3&marker=2ea558d9-71bb-410e-9b7f-1817960e0afc'} -GET: /v1/conductors {} -GOT:{'conductors': [{'hostname': '39ea4772-46e2-458c-ae9a-884b1b1fb462', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/39ea4772-46e2-458c-ae9a-884b1b1fb462', 'rel': 'self'}, {'href': 'http://localhost/conductors/39ea4772-46e2-458c-ae9a-884b1b1fb462', 'rel': 'bookmark'}], 'alive': True}, {'hostname': 'e95f4ee7-98ff-425e-a2a2-241677cb16b8', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/e95f4ee7-98ff-425e-a2a2-241677cb16b8', 'rel': 'self'}, {'href': 'http://localhost/conductors/e95f4ee7-98ff-425e-a2a2-241677cb16b8', 'rel': 'bookmark'}], 'alive': True}, {'hostname': '176cdec1-b6ac-4fd9-83ea-9c59f60f7139', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/176cdec1-b6ac-4fd9-83ea-9c59f60f7139', 'rel': 'self'}, {'href': 'http://localhost/conductors/176cdec1-b6ac-4fd9-83ea-9c59f60f7139', 'rel': 'bookmark'}], 'alive': True}], 'next': 'http://localhost/v1/conductors?sort_key=id&sort_dir=asc&fields=hostname,conductor_group,alive&limit=3&marker=176cdec1-b6ac-4fd9-83ea-9c59f60f7139'} -GET: /v1/conductors {} -GOT:{'conductors': []} -GET: /v1/conductors?fields=hostname,alive {} -GOT:{'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}]} -GET: /v1/conductors/rocky.rocks?fields=hostname,spongebob {} +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +POST: /v1/deploy_templates {'name': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'uuid': '18094e2f-dbb5-4080-8b57-c00154aa843f', '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-a22896ed-d6f4-4c84-b9fc-10bb627c1895 +Openstack-Request-Id: req-38897977-73f4-4160-9f58-1ffad69d00bc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} -GET: /v1/conductors/rocky.rocks {} -GOT:{'created_at': '2024-01-06T13:31:42.255399+00:00', 'updated_at': '2024-01-06T13:31:42.254674+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 {} -GOT:{'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} -GET: /v1/conductors/rocky.rocks?fields=hostname,alive {} -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_custom_fields -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_with_invalid_api -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_with_invalid_api ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields_with_detail_true -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields_with_detail_true ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' is too long\", \"debuginfo\": null}"} +POST: /v1/deploy_templates {'uuid': '9e683336-879a-4178-8e6f-4e38e1d78ebc', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_field_name ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_field_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_links -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_links ... ok ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_field_steps ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_field_steps ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_invalid_custom_fields -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_invalid_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history_returns_detail -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history_returns_detail ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_links_public_url -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_links_public_url ... ok ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_args ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_args ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_detail_bad_version -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_detail_bad_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history_returns_entries -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history_returns_entries ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_detail_bad_version_false -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_detail_bad_version_false ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_chassis_id +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_chassis_id ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_older_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_older_api_version ... ok ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_interface ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_interface ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_old_version -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_old_version ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list_with_detail -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list_with_detail ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_not_found -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name ... ok ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_priority ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_priority ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list_with_invalid_api -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list_with_invalid_api ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name_old_api_version +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name_old_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_collection_custom_fields +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_collection_custom_fields ... ok ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_step ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_step ... ok -GOT:{'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 {} -GOT:{'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'}]} -POST: /v1/drivers/fake-hardware-type/vendor_passthru/do_test {'test_key': 'test_value'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-85cd290e-b434-412e-9c1b-39ec1321854e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 - -DELETE: /v1/drivers/fake-hardware-type/vendor_passthru/do_test -GOT:Response: 202 Accepted -Openstack-Request-Id: req-5061d2fa-34d5-4211-a996-40bbe7e9d839 +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_collection_next_marker_no_uuid +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_collection_next_marker_no_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name_with_json +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name_with_json ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_standard_trait_name +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_standard_trait_name ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_invalid_api_version ... ok +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-f3d1668c-d593-4b40-a363-e76111c9f5be X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 - -POST: /v1/drivers/fake-hardware-type/vendor_passthru/do_test {'test_key': 'test_value'} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'port_id' is a required property\", \"debuginfo\": null}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +GOT:{'history': []} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?detail=true {} +GOT:{'history': [{'uuid': '2b05e42d-0241-4505-8a16-304f1c2b4cd2', 'created_at': '2024-01-06T14:10:28.978234+00:00', 'severity': None, 'event_type': None, 'event': 'meow', 'conductor': 'cat-tree1', 'user': 'peaches', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/2b05e42d-0241-4505-8a16-304f1c2b4cd2', 'rel': 'self'}]}, {'uuid': 'af99ac2d-cfc0-4026-89cb-839b557ff260', 'created_at': '2024-01-06T14:10:28.982537+00:00', 'severity': None, 'event_type': None, 'event': 'purr', 'conductor': 'cat-tree2', 'user': 'sage', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/af99ac2d-cfc0-4026-89cb-839b557ff260', 'rel': 'self'}]}, {'uuid': '56063637-88a8-40fb-a045-dcf0afe85bd6', 'created_at': '2024-01-06T14:10:28.986038+00:00', 'severity': None, 'event_type': None, 'event': 'grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr!', 'conductor': 'cat-tree3', 'user': 'bella', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/56063637-88a8-40fb-a045-dcf0afe85bd6', 'rel': 'self'}]}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +GOT:{'history': [{'uuid': 'd6b645c8-0492-4015-98f1-1baaadc31610', 'created_at': '2024-01-06T14:10:29.129407+00:00', 'severity': None, 'event': 'meow', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/d6b645c8-0492-4015-98f1-1baaadc31610', 'rel': 'self'}]}, {'uuid': 'c1c56077-42e1-4fb8-8b0d-a4d68b668649', 'created_at': '2024-01-06T14:10:29.133005+00:00', 'severity': None, 'event': 'purr', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/c1c56077-42e1-4fb8-8b0d-a4d68b668649', 'rel': 'self'}]}, {'uuid': '11d47150-cbe0-4fef-a552-cb8078013f0c', 'created_at': '2024-01-06T14:10:29.136324+00:00', 'severity': None, 'event': 'grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/11d47150-cbe0-4fef-a552-cb8078013f0c', 'rel': 'self'}]}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-055f8274-e3e8-4c0f-bcae-3e35db5e21b7 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -GET: /v1/drivers/fake-hardware-type/vendor_passthru/do_test {} -GOT:foo -POST: /v1/drivers/fake-hardware-type/vendor_passthru {'test_key': 'test_value'} -GOT:Response: 400 Bad Request +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?limit=1 {} +GOT:{'history': [{'uuid': '4cc56877-1208-49ba-932d-01592abdd9fa', 'created_at': '2024-01-06T14:10:29.387874+00:00', 'severity': None, 'event': 'meow', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4cc56877-1208-49ba-932d-01592abdd9fa', 'rel': 'self'}]}], 'next': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?marker=None&fields=uuid,created_at,severity,event&limit=1&marker=4cc56877-1208-49ba-932d-01592abdd9fa'} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?limit=1&marker=4cc56877-1208-49ba-932d-01592abdd9fa {} +GOT:{'history': [{'uuid': '689ba84f-9cba-46b9-8d8b-70a4b89c7ca7', 'created_at': '2024-01-06T14:10:29.391503+00:00', 'severity': None, 'event': 'purr', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/689ba84f-9cba-46b9-8d8b-70a4b89c7ca7', 'rel': 'self'}]}], 'next': "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?marker=NodeHistory(conductor='cat-tree1',created_at=2024-01-06T14:10:29Z,event='meow',event_type=None,id=1,node_id=1,severity=None,updated_at=None,user='peaches',uuid=4cc56877-1208-49ba-932d-01592abdd9fa)&fields=uuid,created_at,severity,event&limit=1&marker=689ba84f-9cba-46b9-8d8b-70a4b89c7ca7"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?limit=1&marker=689ba84f-9cba-46b9-8d8b-70a4b89c7ca7 {} +GOT:{'history': [{'uuid': '5c54841f-7d64-4119-8520-3f8b41c889af', 'created_at': '2024-01-06T14:10:29.394859+00:00', 'severity': None, 'event': 'grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/5c54841f-7d64-4119-8520-3f8b41c889af', 'rel': 'self'}]}], 'next': "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?marker=NodeHistory(conductor='cat-tree2',created_at=2024-01-06T14:10:29Z,event='purr',event_type=None,id=2,node_id=1,severity=None,updated_at=None,user='sage',uuid=689ba84f-9cba-46b9-8d8b-70a4b89c7ca7)&fields=uuid,created_at,severity,event&limit=1&marker=5c54841f-7d64-4119-8520-3f8b41c889af"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/0b2814f7-768d-4089-8832-3284a1b055e8 {} +GOT:{'uuid': '0b2814f7-768d-4089-8832-3284a1b055e8', 'created_at': '2024-01-06T14:10:29.600580+00:00', 'severity': None, 'event_type': None, 'event': 'meow', 'conductor': 'cat-tree1', 'user': 'peaches', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/0b2814f7-768d-4089-8832-3284a1b055e8', 'rel': 'self'}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/52949728-59fc-4651-84c8-b0a16b469372 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-105d38d1-10b2-4c5b-a895-5b071d4e8599 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -GET: /v1/drivers/fake-hardware-type/vendor_passthru/methods {} -GOT:{'foo': 'bar'} -GET: /v1/drivers/fake-hardware-type/vendor_passthru/methods {} -GOT:{'foo': 'bar'} -PUT: /v1/drivers/fake-hardware-type/vendor_passthru/do_test {'test_key': 'test_value'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-6a792ae0-e91f-466c-a30f-8f5ee10a7515 +Openstack-Request-Id: req-f341e24b-303b-40cb-acfa-cafc0e7ae078 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 - -POST: /v1/drivers/fake-hardware-type/vendor_passthru/do_test {'test_key': 'test_value'} -GOT:Response: 200 OK +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}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/1234 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f1d4aa34-6b51-4e6e-a1b2-f4f3ee5eec4f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"return_key": "return_value"} -GET: /v1/drivers {} -GOT:{'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 {} -GOT:{'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 {} -GOT:{'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 {} -GOT:{'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 {} -GOT:{'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?fields=name,hosts {} -GOT:{'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?fields=name,hosts&detail=false {} -GOT:{'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?detail=true&fields=name,hosts {} +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_id', 'value': '1', 'op': 'add'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-84a4c5bb-1700-407d-81a0-9a0f68625ede +Openstack-Request-Id: req-cb931ddb-41e2-44d5-ba72-88090081342f X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/drivers?fields=name,invalid {} +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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_uuid', 'value': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_chassis_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_chassis_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_invalid_name +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_invalid_name ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_step_string_priority +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_step_string_priority ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_invalid_fields +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_invalid_fields ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_steps_invalid_duplicate +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_steps_invalid_duplicate ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_ok ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_is_smartnic +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_is_smartnic ... ok GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-3596996f-fe8b-4301-8fd8-0e9e45157df6 +Openstack-Request-Id: req-b2e613e2-7d90-4c81-9949-925002bbe797 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/drivers?detail=True {} -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'foo' is not one of ['power', 'management', 'deploy', 'bios', 'raid']\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/69632075-4be1-46fc-a9b1-16b5f1ac5efc [{'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-b83687c5-d404-4750-92fd-cfe9a83eb73d +Openstack-Request-Id: req-a3bf1dbf-7dd3-4fbc-b71d-1d3d8e5bb89a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/drivers?detail=False {} -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "69632075-4be1-46fc-a9b1-16b5f1ac5efc", "created_at": "2024-01-06T14:10:29.321859+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/69632075-4be1-46fc-a9b1-16b5f1ac5efc", "rel": "self"}, {"href": "http://localhost/deploy_templates/69632075-4be1-46fc-a9b1-16b5f1ac5efc", "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}]} +PATCH: /v1/deploy_templates/f448dc0d-6458-42ba-9cd1-e6a939aa72ac [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'replace'}] +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-6aeca6e0-dca5-4ba7-b27f-f4465ab5f56d +Openstack-Request-Id: req-df6b081f-207a-4a0b-a049-e7d2c472f6d1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/drivers/nope {} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A deploy template with UUID f448dc0d-6458-42ba-9cd1-e6a939aa72ac already exists.\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/e5c0b686-3b32-4e5b-9bed-3c3d5f6bb8e5 [{'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-50e1075c-a70d-49ef-a06d-fbdff1a6b700 +Openstack-Request-Id: req-cac430e5-8d14-44a4-9bea-07f3b28122a3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/drivers/fake-hardware-type {} -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_ok_dynamic_base_interfaces -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_ok_dynamic_base_interfaces ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_pagination -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_pagination ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_sort_key -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_sort_key ... ok -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_sort_key_invalid -ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_sort_key_invalid ... ok +X-Openstack-Ironic-Api-Version: 1.80 +{"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: can't replace outside of list\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/d8d1e460-586c-4993-988d-19fccc0b0764 [{'path': '/steps/0/interface', 'op': 'replace', 'value': 'foo'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-3654012c-94f4-47bf-af5a-9c650a978111 +Openstack-Request-Id: req-44e571e0-74c1-4722-a616-2cb8f9c69e03 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'not a number' does not match '^[0-9]+$'\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'febca2e4-9e65-4da9-b620-cea983c115dc', 'steps': [{'interface': 'raid', 'step': 42, 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'foo' is not one of ['power', 'management', 'deploy', 'bios', 'raid']\", \"debuginfo\": null}"} +PATCH: /v1/deploy_templates/b7825ce4-f1b0-4d28-8d15-1630869fa808 [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c2682d75-a3f8-4e02-b46b-2c64edca4a15 +Openstack-Request-Id: req-5e3c5168-d238-47c1-8745-49c8a6587dee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 42 is not of type 'string'\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'uuid': 'dd3e5b9c-dd24-4e05-ba48-537721c04b7d', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} -GOT:Response: 201 Created +{"uuid": "b7825ce4-f1b0-4d28-8d15-1630869fa808", "created_at": "2024-01-06T14:10:30.061235+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/b7825ce4-f1b0-4d28-8d15-1630869fa808", "rel": "self"}, {"href": "http://localhost/deploy_templates/b7825ce4-f1b0-4d28-8d15-1630869fa808", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +PATCH: /v1/deploy_templates/8e37b543-3f94-4e20-b1ae-a39edd778a68 [{'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\"}"} +PATCH: /v1/deploy_templates/CUSTOM_DT1 [{'path': '/steps', 'value': [{'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'priority': 42}], 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/deploy_templates/dd3e5b9c-dd24-4e05-ba48-537721c04b7d -Openstack-Request-Id: req-13a9d3b0-7199-4845-9c20-302fa157527a +Openstack-Request-Id: req-c82b0643-57c4-4399-aab0-6ee9889a9ec0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "dd3e5b9c-dd24-4e05-ba48-537721c04b7d", "created_at": "2024-01-06T13:31:42.331756+00:00", "updated_at": null, "name": "CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/dd3e5b9c-dd24-4e05-ba48-537721c04b7d", "rel": "self"}, {"href": "http://localhost/deploy_templates/dd3e5b9c-dd24-4e05-ba48-537721c04b7d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -POST: /v1/deploy_templates {'name': 'not-a-trait', 'uuid': '8c04b5d1-b2cd-465e-8df3-1d14ea6088c0', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} -GOT:Response: 400 Bad Request +{"uuid": "111d6ddf-c731-43d3-930a-f6e37d450fc4", "created_at": "2024-01-06T14:10:30.421554+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/111d6ddf-c731-43d3-930a-f6e37d450fc4", "rel": "self"}, {"href": "http://localhost/deploy_templates/111d6ddf-c731-43d3-930a-f6e37d450fc4", "rel": "bookmark"}], "steps": [{"interface": "bios", "step": "apply_configuration", "args": {"foo": "bar"}, "priority": 42}]} +PATCH: /v1/deploy_templates/CUSTOM_DT1 [{'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\"}"} +PATCH: /v1/deploy_templates/CUSTOM_DT1.json [{'path': '/steps/0/interface', 'value': 'bios', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1acbd484-b86c-4eb8-9842-781ad04f4638 +Openstack-Request-Id: req-3e4014de-1582-4db9-a6d9-c56f7c763233 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'uuid': 'd9e941ad-9238-4893-aef3-15830a2ed153', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} +{"uuid": "f7fd7d3a-cc89-4036-af16-8f35272b3dcb", "created_at": "2024-01-06T14:10:30.716100+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/f7fd7d3a-cc89-4036-af16-8f35272b3dcb", "rel": "self"}, {"href": "http://localhost/deploy_templates/f7fd7d3a-cc89-4036-af16-8f35272b3dcb", "rel": "bookmark"}], "steps": [{"interface": "bios", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +PATCH: /v1/deploy_templates/aacebe4b-8359-4f20-bacd-1b465046c716 [{'path': '/name', 'value': 'aa:bb_cc', 'op': 'replace'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-ffefc0e0-541a-4dd4-813d-c7316d572d3f +Openstack-Request-Id: req-4ae220e8-6e4a-4d23-a01f-725dfdda5146 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' is too long\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'uuid': '84b5646f-e096-45cf-88e4-df51274033f2', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} +{"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}"} +PATCH: /v1/deploy_templates/68007103-60af-4b25-9c62-e0f727136645 [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_name_custom_trait +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_name_custom_trait ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_associated_nodes_error +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_associated_nodes_error ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_name_standard_trait +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_name_standard_trait ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_physical_network +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_physical_network ... ok +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_not_found +ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_root +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_root ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_physical_network_upgrade +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_physical_network_upgrade ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_properties_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_properties_hidden_in_lower_version ... ok GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b561fcc3-0924-4036-b4e5-730122daa686 +Openstack-Request-Id: req-d751751a-5e2a-43a9-9200-aba8e54c08e5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'name' is a required property\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'd6b39601-5c8f-466c-ab53-adcfdc4377b3', 'extra': {}} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '216076c2-527e-427d-9da0-36f5ab00960e', 'extra': {}} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-f8649aa4-c263-45db-9ffb-aa9bcc9185ea +Openstack-Request-Id: req-302dc498-d5df-4f17-b36a-18389f0ff5ba X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'steps' is a required property\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '8c00c196-b9ba-4d86-9150-8bacbb408755', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'priority': 10}], 'extra': {}} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '3336fdc4-125e-4621-939c-c5757bab8717', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'priority': 10}], 'extra': {}} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-222275be-7aea-4961-964f-492273054b66 +Openstack-Request-Id: req-4b6000dc-0aef-4385-b17d-b105f39c84f9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'args' is a required property\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'a83accf1-5b36-4f58-9013-d7627af8b9c8', 'steps': [{'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'e99bc54c-0a72-4c17-aa24-a6d60fa17831', 'steps': [{'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-0c01779e-cab1-4d18-b7a8-8d2f43a345cd +Openstack-Request-Id: req-3d122fb2-5e8d-4412-96af-366c8852a77d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'interface' is a required property\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '7c313855-4650-452a-8a4f-a3754122d532', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}}], 'extra': {}} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '6a8bd995-d0f0-48ef-b25a-03e68f48ecb3', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}}], 'extra': {}} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-75ef8f93-b9b7-48d1-abba-25ca1ed3b9eb +Openstack-Request-Id: req-7bf196f5-d783-489d-85be-6e48ef14c62e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'priority' is a required property\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'd74f3ab2-9a71-4f76-8999-10beb38d5e20', 'steps': [{'interface': 'raid', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '548ee875-81ee-48fa-82bb-7544b2931141', 'steps': [{'interface': 'raid', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-6ea495b0-6f16-469c-9edd-9a430764b5ea +Openstack-Request-Id: req-f79b25da-08a9-4579-ae4d-fd5c88f0be0c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'step' is a required property\", \"debuginfo\": null}"} -POST: /v1/deploy_templates {'name': 'HW_CPU_X86_VMX', 'uuid': 'dda7a205-b6f7-4333-b911-6f0d2c0567f2', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_standard_trait_name -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_standard_trait_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_step_string_priority -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_step_string_priority ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_ok_dynamic_latest_interfaces -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_ok_dynamic_latest_interfaces ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_steps_invalid_duplicate -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_steps_invalid_duplicate ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item_not_found -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_no_active_conductor -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_no_active_conductor ... ok -GOT:{'hostname': 'rocky.rocks', '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 {} -GOT:Response: 404 Not Found +POST: /v1/deploy_templates {'name': 'HW_CPU_X86_VMX', 'uuid': '5419c5fc-c14b-4849-8e84-1df7b398b75a', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-16cf5d59-b59a-4177-b608-75f75dab5a4a +Location: http://localhost/v1/deploy_templates/5419c5fc-c14b-4849-8e84-1df7b398b75a +Openstack-Request-Id: req-222e7f38-be81-4af2-878d-b9305795510c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/conductors/rocky.rocks {} -GOT:{'created_at': '2024-01-06T13:31:43.435293+00:00', 'updated_at': '2024-01-06T13:31:43.434553+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 {} -GOT:{'created_at': '2024-01-06T13:31:43.435293+00:00', 'updated_at': '2024-01-06T13:31:43.434553+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 {} -GOT:{'created_at': '2024-01-06T13:31:43.435293+00:00', 'updated_at': '2024-01-06T13:31:43.434553+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 {} -GOT:{'created_at': '2024-01-06T13:31:43.862312+00:00', 'updated_at': '2024-01-06T13:31:43.861563+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 {} -GOT:{'created_at': '2024-01-06T13:31:43.862312+00:00', 'updated_at': '2024-01-06T13:31:43.861563+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 {} -GOT:{'created_at': '2024-01-06T13:31:43.862312+00:00', 'updated_at': '2024-01-06T13:31:43.861563+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 {} -GOT:{'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}]} -GET: /v1/conductors?detail=true {} -GOT:{'conductors': [{'created_at': '2024-01-06T13:31:44.622230+00:00', 'updated_at': '2024-01-06T13:31:44.613436+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': '2024-01-06T13:31:44.628069+00:00', 'updated_at': '2024-01-06T13:31:44.627453+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}]} -GET: /v1/conductors {} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "5419c5fc-c14b-4849-8e84-1df7b398b75a", "created_at": "2024-01-06T14:10:30.862168+00:00", "updated_at": null, "name": "HW_CPU_X86_VMX", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/5419c5fc-c14b-4849-8e84-1df7b398b75a", "rel": "self"}, {"href": "http://localhost/deploy_templates/5419c5fc-c14b-4849-8e84-1df7b398b75a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '078b0ae1-4244-49aa-8ae8-bf909c4739d9', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': '42'}], 'extra': {}} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-c95ac6eb-5758-434d-bf69-e2f983add522 +Location: http://localhost/v1/deploy_templates/078b0ae1-4244-49aa-8ae8-bf909c4739d9 +Openstack-Request-Id: req-c6f04f74-304b-4edf-ae20-d9a1b9a6233d X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/conductors?sort_key=hostname {} -GOT:{'conductors': [{'hostname': '0c8488e9-c32a-4642-b79e-fa8a9c0f22de', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/0c8488e9-c32a-4642-b79e-fa8a9c0f22de', 'rel': 'self'}, {'href': 'http://localhost/conductors/0c8488e9-c32a-4642-b79e-fa8a9c0f22de', 'rel': 'bookmark'}], 'alive': True}, {'hostname': '35d2971c-4e66-44b8-a234-80cf55a2390c', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/35d2971c-4e66-44b8-a234-80cf55a2390c', 'rel': 'self'}, {'href': 'http://localhost/conductors/35d2971c-4e66-44b8-a234-80cf55a2390c', 'rel': 'bookmark'}], 'alive': True}, {'hostname': '4beaa744-d51d-4576-a567-cf8047cdd60e', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/4beaa744-d51d-4576-a567-cf8047cdd60e', 'rel': 'self'}, {'href': 'http://localhost/conductors/4beaa744-d51d-4576-a567-cf8047cdd60e', 'rel': 'bookmark'}], 'alive': True}, {'hostname': '715312bc-08a8-42d2-9e1d-18a480cea2cf', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/715312bc-08a8-42d2-9e1d-18a480cea2cf', 'rel': 'self'}, {'href': 'http://localhost/conductors/715312bc-08a8-42d2-9e1d-18a480cea2cf', 'rel': 'bookmark'}], 'alive': True}, {'hostname': 'f40e5ec6-2fd9-4e86-bd35-278ff3d4f335', 'conductor_group': '', 'links': [{'href': 'http://localhost/v1/conductors/f40e5ec6-2fd9-4e86-bd35-278ff3d4f335', 'rel': 'self'}, {'href': 'http://localhost/conductors/f40e5ec6-2fd9-4e86-bd35-278ff3d4f335', 'rel': 'bookmark'}], 'alive': True}]} -GET: /v1/conductors?sort_key=alive {} +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "078b0ae1-4244-49aa-8ae8-bf909c4739d9", "created_at": "2024-01-06T14:10:31.009416+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/078b0ae1-4244-49aa-8ae8-bf909c4739d9", "rel": "self"}, {"href": "http://localhost/deploy_templates/078b0ae1-4244-49aa-8ae8-bf909c4739d9", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": "42"}]} +POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'a8903881-967d-4845-899a-4ea1ebb11db5', '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-2d5ff752-1172-4a6d-8839-0f0dc506ef02 +Openstack-Request-Id: req-b209b70d-1ff8-4eb5-8b3f-f0cb6be95eae X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value alive is an invalid field for sorting\", \"debuginfo\": null}"} -GET: /v1/conductors?sort_key=drivers {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template invalid: Duplicate deploy steps. A deploy template cannot have multiple deploy steps with the same interface and step. Duplicates: interface: raid, step: create_configuration.\", \"debuginfo\": null}"} +GET: /v1/nodes?associated=blah {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-40122447-d96d-4107-acc5-6afd310db12f +Openstack-Request-Id: req-6e2a46b4-1305-40df-8517-63f267c03af8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value drivers is an invalid field for sorting\", \"debuginfo\": null}"} -GET: /v1/deploy_templates/?limit=3 {} -GOT:{'deploy_templates': [{'uuid': '4af9d696-c549-4361-a460-e43c6238df8c', 'name': 'CUSTOM_DT0', 'links': [{'href': 'http://localhost/v1/deploy_templates/4af9d696-c549-4361-a460-e43c6238df8c', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/4af9d696-c549-4361-a460-e43c6238df8c', 'rel': 'bookmark'}]}, {'uuid': '1ead13eb-000a-4a03-bebe-e757bd40a8fb', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/1ead13eb-000a-4a03-bebe-e757bd40a8fb', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/1ead13eb-000a-4a03-bebe-e757bd40a8fb', 'rel': 'bookmark'}]}, {'uuid': '114210b2-502f-43bc-b7e7-6bc022f62789', 'name': 'CUSTOM_DT2', 'links': [{'href': 'http://localhost/v1/deploy_templates/114210b2-502f-43bc-b7e7-6bc022f62789', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/114210b2-502f-43bc-b7e7-6bc022f62789', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=uuid,name&limit=3&marker=114210b2-502f-43bc-b7e7-6bc022f62789'} -GET: /v1/deploy_templates?fields=uuid,steps {} -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links_custom_fields -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item_old_version -ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item_old_version ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_bad_value -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_bad_value ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_associated_nodes_error -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_associated_nodes_error ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_bad_version -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_bad_version ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links_default_limit -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links_default_limit ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_query -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_query ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_classic -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_classic ... ok -DELETE: /v1/nodes/node-39/vifs/4be8458c-d2be-42e7-9cfa-6fc0678e54e9 -GOT:Response: 204 No Content -Openstack-Request-Id: req-5df1b5f7-a214-4a9a-9803-bfd26c40f407 +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}"} +GET: /v1/nodes?associated=true {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_associated_nodes_insensitive +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_associated_nodes_insensitive ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_root_non_existent +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_root_non_existent ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_type_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_type_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_state_in_cleaning +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_state_in_cleaning ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one_custom_fields +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_async +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_async ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one_portgroup_is_none +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one_portgroup_is_none ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_custom_fields +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_delete +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_delete ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_state_in_deployfail +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_state_in_deployfail ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_driver_not_found +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_driver_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_default_limit +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_default_limit ... ok +GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:29.652000+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'}]} +GET: /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +GOT:{'ports': []} +GET: /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-51c56c3b-a9be-46da-bf2a-9f48db19f1d2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.28 - -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/86dde549-5f25-409c-acee-115b9c5d35e0 -GOT:Response: 409 Conflict +X-Openstack-Ironic-Api-Version: 1.14 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +GET: /v1/ports?fields=uuid,extra {} +GOT:{'ports': [{'uuid': '8cdec471-2b16-498c-91d5-53268e3d5a5b', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/8cdec471-2b16-498c-91d5-53268e3d5a5b', 'rel': 'self'}, {'href': 'http://localhost/ports/8cdec471-2b16-498c-91d5-53268e3d5a5b', 'rel': 'bookmark'}]}, {'uuid': '4e709bf9-930d-4932-a128-9c28f2e157f7', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/4e709bf9-930d-4932-a128-9c28f2e157f7', 'rel': 'self'}, {'href': 'http://localhost/ports/4e709bf9-930d-4932-a128-9c28f2e157f7', 'rel': 'bookmark'}]}, {'uuid': '76a6ec60-45e9-4b80-b542-479a1fdca47e', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/76a6ec60-45e9-4b80-b542-479a1fdca47e', 'rel': 'self'}, {'href': 'http://localhost/ports/76a6ec60-45e9-4b80-b542-479a1fdca47e', 'rel': 'bookmark'}]}]} +GET: /v1/ports?fields=address&limit=2 {} +GOT:{'ports': [{'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/81c26d45-4b6d-4ccf-9f0b-2187a648cbe6', 'rel': 'self'}, {'href': 'http://localhost/ports/81c26d45-4b6d-4ccf-9f0b-2187a648cbe6', 'rel': 'bookmark'}]}, {'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/a07100ab-a526-412d-827c-815554768e30', 'rel': 'self'}, {'href': 'http://localhost/ports/a07100ab-a526-412d-827c-815554768e30', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=address&limit=2&marker=a07100ab-a526-412d-827c-815554768e30'} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,extra {} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-1302c109-5d9d-476f-979e-20e014675136 +Openstack-Request-Id: req-089822d2-9e1c-4787-b07f-e7ccca45805f X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/nodes/doesntexist/vifs/344bd28b-0fab-48d4-8258-2d10447e46f1 -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,spongebob {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-40d69099-d9bb-416b-b96c-5c131bc87ecc +Openstack-Request-Id: req-b8808756-d1f2-4eed-b48c-1d720d352784 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -GOT:{'vifs': []} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} -GOT:{'history': []} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?detail=true {} -GOT:{'history': [{'uuid': '04897039-160a-4675-87a6-abdac861417c', 'created_at': '2024-01-06T13:31:43.739585+00:00', 'severity': None, 'event_type': None, 'event': 'meow', 'conductor': 'cat-tree1', 'user': 'peaches', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/04897039-160a-4675-87a6-abdac861417c', 'rel': 'self'}]}, {'uuid': '741c7a45-442b-4e17-b295-bac344ac45af', 'created_at': '2024-01-06T13:31:43.753763+00:00', 'severity': None, 'event_type': None, 'event': 'purr', 'conductor': 'cat-tree2', 'user': 'sage', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/741c7a45-442b-4e17-b295-bac344ac45af', 'rel': 'self'}]}, {'uuid': '98c4cb83-d8c7-40e7-94e4-1a7ba2c9e6d3', 'created_at': '2024-01-06T13:31:43.774760+00:00', 'severity': None, 'event_type': None, 'event': 'grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr!', 'conductor': 'cat-tree3', 'user': 'bella', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/98c4cb83-d8c7-40e7-94e4-1a7ba2c9e6d3', 'rel': 'self'}]}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} -GOT:{'history': [{'uuid': '373ab60b-0e7a-47b9-9dee-fe9527e9c50b', 'created_at': '2024-01-06T13:31:44.083577+00:00', 'severity': None, 'event': 'meow', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/373ab60b-0e7a-47b9-9dee-fe9527e9c50b', 'rel': 'self'}]}, {'uuid': 'eaf2d76a-56b0-459c-b45d-5444ae0f83e0', 'created_at': '2024-01-06T13:31:44.096382+00:00', 'severity': None, 'event': 'purr', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/eaf2d76a-56b0-459c-b45d-5444ae0f83e0', 'rel': 'self'}]}, {'uuid': 'a1ef7d7b-6922-489c-8f23-97d7576be9f0', 'created_at': '2024-01-06T13:31:44.104900+00:00', 'severity': None, 'event': 'grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/a1ef7d7b-6922-489c-8f23-97d7576be9f0', 'rel': 'self'}]}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?limit=1 {} -GOT:{'history': [{'uuid': '4521f913-ec4a-4ddd-a071-b3f00c5c6f04', 'created_at': '2024-01-06T13:31:44.959762+00:00', 'severity': None, 'event': 'meow', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4521f913-ec4a-4ddd-a071-b3f00c5c6f04', 'rel': 'self'}]}], 'next': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?marker=None&fields=uuid,created_at,severity,event&limit=1&marker=4521f913-ec4a-4ddd-a071-b3f00c5c6f04'} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?limit=1&marker=4521f913-ec4a-4ddd-a071-b3f00c5c6f04 {} -GOT:{'history': [{'uuid': 'e882a8b1-db73-4119-9caa-44d81aff4fa8', 'created_at': '2024-01-06T13:31:44.968364+00:00', 'severity': None, 'event': 'purr', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/e882a8b1-db73-4119-9caa-44d81aff4fa8', 'rel': 'self'}]}], 'next': "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?marker=NodeHistory(conductor='cat-tree1',created_at=2024-01-06T13:31:44Z,event='meow',event_type=None,id=1,node_id=1,severity=None,updated_at=None,user='peaches',uuid=4521f913-ec4a-4ddd-a071-b3f00c5c6f04)&fields=uuid,created_at,severity,event&limit=1&marker=e882a8b1-db73-4119-9caa-44d81aff4fa8"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?limit=1&marker=e882a8b1-db73-4119-9caa-44d81aff4fa8 {} -GOT:{'history': [{'uuid': '946e7977-6baa-4d58-98e0-cc976be5f1c3', 'created_at': '2024-01-06T13:31:44.980443+00:00', 'severity': None, 'event': 'grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/946e7977-6baa-4d58-98e0-cc976be5f1c3', 'rel': 'self'}]}], 'next': "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?marker=NodeHistory(conductor='cat-tree2',created_at=2024-01-06T13:31:44Z,event='purr',event_type=None,id=2,node_id=1,severity=None,updated_at=None,user='sage',uuid=e882a8b1-db73-4119-9caa-44d81aff4fa8)&fields=uuid,created_at,severity,event&limit=1&marker=946e7977-6baa-4d58-98e0-cc976be5f1c3"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4a712a4e-ed61-4a94-8090-2dfecd38272a {} -GOT:{'uuid': '4a712a4e-ed61-4a94-8090-2dfecd38272a', 'created_at': '2024-01-06T13:31:45.772984+00:00', 'severity': None, 'event_type': None, 'event': 'meow', 'conductor': 'cat-tree1', 'user': 'peaches', 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4a712a4e-ed61-4a94-8090-2dfecd38272a', 'rel': 'self'}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/52949728-59fc-4651-84c8-b0a16b469372 {} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,is_smartnic {} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-6436a642-c3cb-4684-b823-a6de4be8925d +Openstack-Request-Id: req-b4b2b210-12cd-4640-b048-f13a4138e95e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/1234 {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -PUT: /v1/nodes/node-39/traits/CUSTOM_3 {} -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_associated_nodes_insensitive -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_associated_nodes_insensitive ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_dynamic -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_dynamic ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_query_false -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_query_false ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_sort_key_allowed -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_sort_key_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_using_query_and_fields -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_using_query_and_fields ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_using_query_false_and_fields -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_using_query_false_and_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_if_node_locked -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_if_node_locked ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_empty -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_empty ... ok -GOT:{'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_power_interface': None, 'enabled_power_interfaces': [], 'default_boot_interface': None, 'enabled_boot_interfaces': [], 'default_vendor_interface': None, 'enabled_vendor_interfaces': [], 'default_network_interface': None, 'enabled_network_interfaces': [], 'default_management_interface': None, 'enabled_management_interfaces': [], 'default_inspect_interface': None, 'enabled_inspect_interfaces': [], 'default_deploy_interface': 'direct', 'enabled_deploy_interfaces': ['direct', 'ansible'], 'default_raid_interface': None, 'enabled_raid_interfaces': [], 'default_console_interface': None, 'enabled_console_interfaces': []} -GET: /v1/drivers/fake-hardware-type {} -GOT:{'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 {} -GOT:{'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/properties {} -GET: /drivers/fake-hardware-type/properties {} -GET: /v1/drivers/fake-hardware-type {} -GOT:{'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_power_interface': None, 'enabled_power_interfaces': [], 'default_storage_interface': None, 'enabled_storage_interfaces': [], 'default_boot_interface': None, 'enabled_boot_interfaces': [], 'default_vendor_interface': None, 'enabled_vendor_interfaces': [], 'default_network_interface': None, 'enabled_network_interfaces': [], 'default_management_interface': None, 'enabled_management_interfaces': [], 'default_inspect_interface': None, 'enabled_inspect_interfaces': [], 'default_deploy_interface': 'direct', 'enabled_deploy_interfaces': ['direct', 'ansible'], 'default_raid_interface': None, 'enabled_raid_interfaces': [], 'default_rescue_interface': None, 'enabled_rescue_interfaces': [], 'default_bios_interface': None, 'enabled_bios_interfaces': [], 'default_console_interface': None, 'enabled_console_interfaces': []} -GET: /v1/drivers/fake-hardware-type {} -GOT:{'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 {} -GOT:{'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/properties {} -GET: /drivers/fake-hardware-type/properties {} -GET: /v1/drivers {} -GOT:{'drivers': []} -GET: /v1/drivers?type=working {} -GOT:Response: 400 Bad Request +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 {} +GOT:{'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'}]} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,physical_network {} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-80b6d914-5c86-491b-9a42-2856070a6333 +Openstack-Request-Id: req-59f3cae8-5e11-439c-bd36-11aa619bd369 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/drivers?type=classic {} +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 {} +GOT:{'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'}]} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,physical_network {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-c50bead7-26f5-4e70-a69b-ddcea9f56063 +Openstack-Request-Id: req-c18b1475-2ede-45e7-9239-9bed4b8ab8d1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/drivers?type=classic {} -GOT:{'drivers': []} -GET: /v1/drivers?type=dynamic {} -GOT:{'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 {} -GOT:{'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 {} -GOT:{'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 {} -GOT:{'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 {} -GOT:{'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 {} -GOT:{'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?detail=True {} -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic_detailed -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic_detailed ... ok -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.34 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:31.740272+00:00', 'updated_at': None, '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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=address,extra {} +GOT:{'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'}]} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:32.012035+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:32.152386+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, '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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_advanced_net +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_advanced_net ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_empty_invalid +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_empty_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_internal_info +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_internal_info ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_get +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_get ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_method_not_found +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_method_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_instance_uuid_param +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_instance_uuid_param ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_is_smartnic +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_is_smartnic ... ok +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/deploy_templates/dda7a205-b6f7-4333-b911-6f0d2c0567f2 -Openstack-Request-Id: req-3824e96f-e92e-4b6b-ae3a-0302201443e1 +Openstack-Request-Id: req-5ba85c49-9de0-4a98-9f49-421197a564bf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "dda7a205-b6f7-4333-b911-6f0d2c0567f2", "created_at": "2024-01-06T13:31:45.510421+00:00", "updated_at": null, "name": "HW_CPU_X86_VMX", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/dda7a205-b6f7-4333-b911-6f0d2c0567f2", "rel": "self"}, {"href": "http://localhost/deploy_templates/dda7a205-b6f7-4333-b911-6f0d2c0567f2", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': 'e1fb5ca2-c5e2-4ff8-af14-7242a2dfe3d0', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': '42'}], 'extra': {}} -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:30.548966+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/deploy_templates/e1fb5ca2-c5e2-4ff8-af14-7242a2dfe3d0 -Openstack-Request-Id: req-896cb7d5-907d-4bd7-9eb8-e43cd16f7096 +Openstack-Request-Id: req-155e2024-7981-4e4b-8f5f-357d8086ab7e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e1fb5ca2-c5e2-4ff8-af14-7242a2dfe3d0", "created_at": "2024-01-06T13:31:45.884987+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/e1fb5ca2-c5e2-4ff8-af14-7242a2dfe3d0", "rel": "self"}, {"href": "http://localhost/deploy_templates/e1fb5ca2-c5e2-4ff8-af14-7242a2dfe3d0", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": "42"}]} -POST: /v1/deploy_templates {'name': 'CUSTOM_DT1', 'uuid': '948a9cf8-63bd-4741-9069-6ddc962b559b', '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 +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:30.972698+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-238a0ff7-5160-4e65-8c68-8aa8b4154ddd +Openstack-Request-Id: req-5a2aba60-b95d-4eea-a8eb-35e400e959f0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template invalid: Duplicate deploy steps. A deploy template cannot have multiple deploy steps with the same interface and step. Duplicates: interface: raid, step: create_configuration.\", \"debuginfo\": null}"} -GET: /v1/nodes?associated=blah {} +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:31.284496+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-547db355-972f-4e1f-a8da-02e53431bd33 +Openstack-Request-Id: req-a525b2ec-815b-49bd-a116-a20afa523746 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes?associated=true {} -GOT:{'nodes': [{'uuid': 'b22d5575-18e4-4881-871b-0624a61671f5', 'instance_uuid': '209cb6be-c2fc-4232-a510-c3043adcff1b', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/b22d5575-18e4-4881-871b-0624a61671f5', 'rel': 'self'}, {'href': 'http://localhost/nodes/b22d5575-18e4-4881-871b-0624a61671f5', 'rel': 'bookmark'}]}, {'uuid': 'd415d3c9-c222-44f6-9ec8-ca53a21fd7f6', 'instance_uuid': '80855b28-9da8-483c-9968-9fe1f849b1c0', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/d415d3c9-c222-44f6-9ec8-ca53a21fd7f6', 'rel': 'self'}, {'href': 'http://localhost/nodes/d415d3c9-c222-44f6-9ec8-ca53a21fd7f6', 'rel': 'bookmark'}]}, {'uuid': 'c5791ac8-f8b0-4dd4-9263-a3297d81862d', 'instance_uuid': 'e03a0d4b-6df5-4bee-ac68-da9e9c3b1128', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/c5791ac8-f8b0-4dd4-9263-a3297d81862d', 'rel': 'self'}, {'href': 'http://localhost/nodes/c5791ac8-f8b0-4dd4-9263-a3297d81862d', 'rel': 'bookmark'}]}, {'uuid': '7f082795-bfd7-4580-9a09-e087db56e10d', 'instance_uuid': '237c6b9a-f6f1-4e33-adab-ef3cf8e686c8', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/7f082795-bfd7-4580-9a09-e087db56e10d', 'rel': 'self'}, {'href': 'http://localhost/nodes/7f082795-bfd7-4580-9a09-e087db56e10d', 'rel': 'bookmark'}]}]} -GET: /v1/nodes?associated=True {} -GOT:{'nodes': [{'uuid': 'b22d5575-18e4-4881-871b-0624a61671f5', 'instance_uuid': '209cb6be-c2fc-4232-a510-c3043adcff1b', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/b22d5575-18e4-4881-871b-0624a61671f5', 'rel': 'self'}, {'href': 'http://localhost/nodes/b22d5575-18e4-4881-871b-0624a61671f5', 'rel': 'bookmark'}]}, {'uuid': 'd415d3c9-c222-44f6-9ec8-ca53a21fd7f6', 'instance_uuid': '80855b28-9da8-483c-9968-9fe1f849b1c0', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/d415d3c9-c222-44f6-9ec8-ca53a21fd7f6', 'rel': 'self'}, {'href': 'http://localhost/nodes/d415d3c9-c222-44f6-9ec8-ca53a21fd7f6', 'rel': 'bookmark'}]}, {'uuid': 'c5791ac8-f8b0-4dd4-9263-a3297d81862d', 'instance_uuid': 'e03a0d4b-6df5-4bee-ac68-da9e9c3b1128', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/c5791ac8-f8b0-4dd4-9263-a3297d81862d', 'rel': 'self'}, {'href': 'http://localhost/nodes/c5791ac8-f8b0-4dd4-9263-a3297d81862d', 'rel': 'bookmark'}]}, {'uuid': '7f082795-bfd7-4580-9a09-e087db56e10d', 'instance_uuid': '237c6b9a-f6f1-4e33-adab-ef3cf8e686c8', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/7f082795-bfd7-4580-9a09-e087db56e10d', 'rel': 'self'}, {'href': 'http://localhost/nodes/7f082795-bfd7-4580-9a09-e087db56e10d', 'rel': 'bookmark'}]}]} -GET: /v1/nodes/?limit=3 {} -GOT:{'nodes': [{'uuid': '4ea4bb61-f067-42d1-b079-5cdc84f98956', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/4ea4bb61-f067-42d1-b079-5cdc84f98956', 'rel': 'self'}, {'href': 'http://localhost/nodes/4ea4bb61-f067-42d1-b079-5cdc84f98956', 'rel': 'bookmark'}]}, {'uuid': '8e4b7b8b-0677-4587-81b2-c94d74a627a7', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/8e4b7b8b-0677-4587-81b2-c94d74a627a7', 'rel': 'self'}, {'href': 'http://localhost/nodes/8e4b7b8b-0677-4587-81b2-c94d74a627a7', 'rel': 'bookmark'}]}, {'uuid': '2838e72e-d089-4a81-89c9-35fb4c8db9e1', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/2838e72e-d089-4a81-89c9-35fb4c8db9e1', 'rel': 'self'}, {'href': 'http://localhost/nodes/2838e72e-d089-4a81-89c9-35fb4c8db9e1', '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=2838e72e-d089-4a81-89c9-35fb4c8db9e1'} -GET: /v1/nodes?fields=driver_info,uuid {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_custom_fields -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_all_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_all_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_if_node_not_found -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_if_node_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_default_limit -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_default_limit ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic_detailed_storage_interface -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic_detailed_storage_interface ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_max_trait_limit -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_max_trait_limit ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_custom_fields_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_custom_fields_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_instance_uuid_param -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_instance_uuid_param ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_with_bad_version -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_with_bad_version ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_one_custom_fields -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_one_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_rejects_bad_trait -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_rejects_bad_trait ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_collection_custom_fields -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_collection_custom_fields ... ok -GOT:{'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_power_interface': None, 'enabled_power_interfaces': [], 'default_boot_interface': None, 'enabled_boot_interfaces': [], 'default_vendor_interface': None, 'enabled_vendor_interfaces': [], 'default_network_interface': None, 'enabled_network_interfaces': [], 'default_management_interface': None, 'enabled_management_interfaces': [], 'default_inspect_interface': None, 'enabled_inspect_interfaces': [], 'default_deploy_interface': 'direct', 'enabled_deploy_interfaces': ['direct', 'ansible'], 'default_raid_interface': None, 'enabled_raid_interfaces': [], 'default_console_interface': None, 'enabled_console_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_power_interface': None, 'enabled_power_interfaces': [], 'default_boot_interface': None, 'enabled_boot_interfaces': [], 'default_vendor_interface': None, 'enabled_vendor_interfaces': [], 'default_network_interface': None, 'enabled_network_interfaces': [], 'default_management_interface': None, 'enabled_management_interfaces': [], 'default_inspect_interface': None, 'enabled_inspect_interfaces': [], 'default_deploy_interface': None, 'enabled_deploy_interfaces': [], 'default_raid_interface': None, 'enabled_raid_interfaces': [], 'default_console_interface': None, 'enabled_console_interfaces': []}]} -GET: /v1/drivers/fake-hardware-type {} -GOT:{'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 {} -GOT:{'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 {} -GOT:{'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 {} -GOT:{'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?detail=True {} -GOT:{'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_power_interface': None, 'enabled_power_interfaces': [], 'default_storage_interface': None, 'enabled_storage_interfaces': [], 'default_boot_interface': None, 'enabled_boot_interfaces': [], 'default_vendor_interface': None, 'enabled_vendor_interfaces': [], 'default_network_interface': None, 'enabled_network_interfaces': [], 'default_management_interface': None, 'enabled_management_interfaces': [], 'default_inspect_interface': None, 'enabled_inspect_interfaces': [], 'default_deploy_interface': 'direct', 'enabled_deploy_interfaces': ['direct', 'ansible'], 'default_raid_interface': None, 'enabled_raid_interfaces': [], 'default_rescue_interface': None, 'enabled_rescue_interfaces': [], 'default_bios_interface': None, 'enabled_bios_interfaces': [], 'default_console_interface': None, 'enabled_console_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_power_interface': None, 'enabled_power_interfaces': [], 'default_storage_interface': None, 'enabled_storage_interfaces': [], 'default_boot_interface': None, 'enabled_boot_interfaces': [], 'default_vendor_interface': None, 'enabled_vendor_interfaces': [], 'default_network_interface': None, 'enabled_network_interfaces': [], 'default_management_interface': None, 'enabled_management_interfaces': [], 'default_inspect_interface': None, 'enabled_inspect_interfaces': [], 'default_deploy_interface': None, 'enabled_deploy_interfaces': [], 'default_raid_interface': None, 'enabled_raid_interfaces': [], 'default_rescue_interface': None, 'enabled_rescue_interfaces': [], 'default_bios_interface': None, 'enabled_bios_interfaces': [], 'default_console_interface': None, 'enabled_console_interfaces': []}]} -GET: /v1/drivers/fake-hardware-type {} -GOT:{'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 {} -GOT:{'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 {} -GOT:{'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 {} -GOT:{'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?fields=name,hosts {} -GOT:Response: 406 Not Acceptable +{"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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/762f95f7-b175-47a6-bdf6-6fe1e2748709 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-a74fa5f6-c9f0-4883-83e7-0a11d0f3a521 +Openstack-Request-Id: req-70a4b291-6cd9-47a7-b65b-a7b0645f2864 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {} -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 762f95f7-b175-47a6-bdf6-6fe1e2748709 can not be updated while a state transition is in progress.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/d3f2ae9d-3090-44f6-ac09-73fe7b6441a4 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e3e05722-7a98-416d-912d-a7fb15c4667b +Openstack-Request-Id: req-567b952a-48f2-47bf-9845-353467487236 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {} -GOT:{'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?fields=name,invalid {} -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_one_invalid_custom_fields -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_one_invalid_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_rejects_too_long_trait -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_rejects_too_long_trait ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_links -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_links ... ok -GOT:{'deploy_templates': [{'uuid': '40432fa9-9238-4cc2-ad7a-fd843121c5e4', 'links': [{'href': 'http://localhost/v1/deploy_templates/40432fa9-9238-4cc2-ad7a-fd843121c5e4', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/40432fa9-9238-4cc2-ad7a-fd843121c5e4', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}, {'uuid': '52644535-862d-4516-9b8a-8ac57ecd0092', 'links': [{'href': 'http://localhost/v1/deploy_templates/52644535-862d-4516-9b8a-8ac57ecd0092', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/52644535-862d-4516-9b8a-8ac57ecd0092', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}, {'uuid': 'fb66691c-8b7f-47c1-8b2c-43b5ddeab971', 'links': [{'href': 'http://localhost/v1/deploy_templates/fb66691c-8b7f-47c1-8b2c-43b5ddeab971', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/fb66691c-8b7f-47c1-8b2c-43b5ddeab971', '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=fb66691c-8b7f-47c1-8b2c-43b5ddeab971'} -GET: /v1/deploy_templates {} -GOT:{'deploy_templates': [{'uuid': '4874e03d-2c42-4969-b634-d7b22680894f', 'name': 'CUSTOM_DT0', 'links': [{'href': 'http://localhost/v1/deploy_templates/4874e03d-2c42-4969-b634-d7b22680894f', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/4874e03d-2c42-4969-b634-d7b22680894f', 'rel': 'bookmark'}]}, {'uuid': '994f9c7a-5686-4024-8b9f-801d859bd8eb', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/994f9c7a-5686-4024-8b9f-801d859bd8eb', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/994f9c7a-5686-4024-8b9f-801d859bd8eb', 'rel': 'bookmark'}]}, {'uuid': 'f077549a-7afe-46c8-805f-84070516365c', 'name': 'CUSTOM_DT2', 'links': [{'href': 'http://localhost/v1/deploy_templates/f077549a-7afe-46c8-805f-84070516365c', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/f077549a-7afe-46c8-805f-84070516365c', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=uuid,name&limit=3&marker=f077549a-7afe-46c8-805f-84070516365c'} -GET: /v1/deploy_templates?detail=True {} -GOT:{'deploy_templates': [{'uuid': '05fea601-4a3e-4460-992e-c78526855a35', 'created_at': '2024-01-06T13:31:47.115290+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/05fea601-4a3e-4460-992e-c78526855a35', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/05fea601-4a3e-4460-992e-c78526855a35', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}]} -GET: /v1/deploy_templates {} -GOT:{'deploy_templates': [{'uuid': '3bd55b04-dbbb-48b6-889b-8ac1a465a68a', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/3bd55b04-dbbb-48b6-889b-8ac1a465a68a', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/3bd55b04-dbbb-48b6-889b-8ac1a465a68a', 'rel': 'bookmark'}]}]} -GET: /v1/deploy_templates?detail=False {} -GOT:{'deploy_templates': [{'uuid': '3bd55b04-dbbb-48b6-889b-8ac1a465a68a', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/3bd55b04-dbbb-48b6-889b-8ac1a465a68a', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/3bd55b04-dbbb-48b6-889b-8ac1a465a68a', 'rel': 'bookmark'}]}]} -GET: /v1/deploy_templates?sort_key=name&detail=True {} -GOT:{'deploy_templates': [{'uuid': 'b1b4a685-8f17-4c82-a88c-b9a91f056c59', 'created_at': '2024-01-06T13:31:47.676313+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/b1b4a685-8f17-4c82-a88c-b9a91f056c59', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/b1b4a685-8f17-4c82-a88c-b9a91f056c59', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}, {'uuid': '03a7486b-b899-4691-8d05-33579505c02e', 'created_at': '2024-01-06T13:31:47.661277+00:00', 'updated_at': None, 'name': 'CUSTOM_DT2', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/03a7486b-b899-4691-8d05-33579505c02e', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/03a7486b-b899-4691-8d05-33579505c02e', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}, {'uuid': '47c85e8c-1d60-46df-aa7d-c7908dbeb34d', 'created_at': '2024-01-06T13:31:47.645735+00:00', 'updated_at': None, 'name': 'CUSTOM_DT3', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/47c85e8c-1d60-46df-aa7d-c7908dbeb34d', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/47c85e8c-1d60-46df-aa7d-c7908dbeb34d', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}]} -GET: /v1/deploy_templates?detail=True&fields=name {} +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "d3f2ae9d-3090-44f6-ac09-73fe7b6441a4", "created_at": "2024-01-06T14:10:31.988833+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", "cpus": "8", "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/d3f2ae9d-3090-44f6-ac09-73fe7b6441a4", "rel": "self"}, {"href": "http://localhost/nodes/d3f2ae9d-3090-44f6-ac09-73fe7b6441a4", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d3f2ae9d-3090-44f6-ac09-73fe7b6441a4/ports", "rel": "self"}, {"href": "http://localhost/nodes/d3f2ae9d-3090-44f6-ac09-73fe7b6441a4/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/deadbeef-0000-1111-2222-333333333333 [{'path': '/name', 'op': 'add', 'value': ''}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-ef55744f-6f68-408d-a47b-9e6e1f57fcc4 +Openstack-Request-Id: req-71abc09c-e32d-4f02-840e-e8ca5afbca05 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} -GET: /v1/deploy_templates?detail=False&fields=steps {} -GOT:{'deploy_templates': [{'links': [{'href': 'http://localhost/v1/deploy_templates/927e6eee-9f58-4eaa-a538-038fbfdfcb29', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/927e6eee-9f58-4eaa-a538-038fbfdfcb29', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}]} -GET: /v1/deploy_templates {} -GOT:{'deploy_templates': []} -GET: /v1/deploy_templates {} -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\"}"} -GET: /v1/deploy_templates?fields=uuid,steps {} -GOT:{'deploy_templates': [{'uuid': 'b429930a-9698-4b2c-b012-c3551bbd6449', 'links': [{'href': 'http://localhost/v1/deploy_templates/b429930a-9698-4b2c-b012-c3551bbd6449', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/b429930a-9698-4b2c-b012-c3551bbd6449', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}, {'uuid': 'fdfbd113-1d0a-44c0-af53-f9ccf2066953', 'links': [{'href': 'http://localhost/v1/deploy_templates/fdfbd113-1d0a-44c0-af53-f9ccf2066953', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/fdfbd113-1d0a-44c0-af53-f9ccf2066953', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}, {'uuid': 'fd8f76bb-b058-44fb-8167-495265cbe5d9', 'links': [{'href': 'http://localhost/v1/deploy_templates/fd8f76bb-b058-44fb-8167-495265cbe5d9', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/fd8f76bb-b058-44fb-8167-495265cbe5d9', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]}]} -GET: /v1/deploy_templates?fields=name&limit=2 {} -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_collection_pagination_no_uuid -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_collection_pagination_no_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_custom_fields_invalid_fields -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_custom_fields_invalid_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits_fails_with_bad_version -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits_fails_with_bad_version ... ok +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}"} +PATCH: /v1/nodes/deadbeef-0000-1111-2222-333333333333 [{'path': '/name', 'op': 'add', 'value': ''}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_empty_not_acceptable +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_empty_not_acceptable ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_physical_network +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_physical_network ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_methods +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_methods ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_invalid +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_invalid ... ok +GOT:{'nodes': [{'uuid': 'b487979a-157f-4e39-b0d5-132cd964fbf9', 'instance_uuid': '1fbd9eb7-ce43-482d-a1d7-12c81fdfa02f', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/b487979a-157f-4e39-b0d5-132cd964fbf9', 'rel': 'self'}, {'href': 'http://localhost/nodes/b487979a-157f-4e39-b0d5-132cd964fbf9', 'rel': 'bookmark'}]}, {'uuid': 'ff4d08cf-d4be-400e-8973-ce719d383ac1', 'instance_uuid': 'dee7e6f9-99c0-4cea-8a64-1774d0002965', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/ff4d08cf-d4be-400e-8973-ce719d383ac1', 'rel': 'self'}, {'href': 'http://localhost/nodes/ff4d08cf-d4be-400e-8973-ce719d383ac1', 'rel': 'bookmark'}]}, {'uuid': '12a17681-6fa5-4bc6-9687-b1aacdc084e7', 'instance_uuid': 'b1d13aa9-da7d-4719-b9c4-08c37fcbd0c1', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/12a17681-6fa5-4bc6-9687-b1aacdc084e7', 'rel': 'self'}, {'href': 'http://localhost/nodes/12a17681-6fa5-4bc6-9687-b1aacdc084e7', 'rel': 'bookmark'}]}, {'uuid': 'ff65fe17-f639-4592-b02b-b089f1e19c5c', 'instance_uuid': '14f7077c-1a95-431e-b140-09af3214113c', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/ff65fe17-f639-4592-b02b-b089f1e19c5c', 'rel': 'self'}, {'href': 'http://localhost/nodes/ff65fe17-f639-4592-b02b-b089f1e19c5c', 'rel': 'bookmark'}]}]} +GET: /v1/nodes?associated=True {} +GOT:{'nodes': [{'uuid': 'b487979a-157f-4e39-b0d5-132cd964fbf9', 'instance_uuid': '1fbd9eb7-ce43-482d-a1d7-12c81fdfa02f', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/b487979a-157f-4e39-b0d5-132cd964fbf9', 'rel': 'self'}, {'href': 'http://localhost/nodes/b487979a-157f-4e39-b0d5-132cd964fbf9', 'rel': 'bookmark'}]}, {'uuid': 'ff4d08cf-d4be-400e-8973-ce719d383ac1', 'instance_uuid': 'dee7e6f9-99c0-4cea-8a64-1774d0002965', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/ff4d08cf-d4be-400e-8973-ce719d383ac1', 'rel': 'self'}, {'href': 'http://localhost/nodes/ff4d08cf-d4be-400e-8973-ce719d383ac1', 'rel': 'bookmark'}]}, {'uuid': '12a17681-6fa5-4bc6-9687-b1aacdc084e7', 'instance_uuid': 'b1d13aa9-da7d-4719-b9c4-08c37fcbd0c1', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/12a17681-6fa5-4bc6-9687-b1aacdc084e7', 'rel': 'self'}, {'href': 'http://localhost/nodes/12a17681-6fa5-4bc6-9687-b1aacdc084e7', 'rel': 'bookmark'}]}, {'uuid': 'ff65fe17-f639-4592-b02b-b089f1e19c5c', 'instance_uuid': '14f7077c-1a95-431e-b140-09af3214113c', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/ff65fe17-f639-4592-b02b-b089f1e19c5c', 'rel': 'self'}, {'href': 'http://localhost/nodes/ff65fe17-f639-4592-b02b-b089f1e19c5c', 'rel': 'bookmark'}]}]} +GET: /v1/nodes/?limit=3 {} +GOT:{'nodes': [{'uuid': 'd299218d-d98b-4cc4-b333-e86f28279203', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/d299218d-d98b-4cc4-b333-e86f28279203', 'rel': 'self'}, {'href': 'http://localhost/nodes/d299218d-d98b-4cc4-b333-e86f28279203', 'rel': 'bookmark'}]}, {'uuid': '1789681c-56b8-46ca-857c-b877b757bac1', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/1789681c-56b8-46ca-857c-b877b757bac1', 'rel': 'self'}, {'href': 'http://localhost/nodes/1789681c-56b8-46ca-857c-b877b757bac1', 'rel': 'bookmark'}]}, {'uuid': '9a7c01c0-6d44-4c4a-a5b7-bcedb7064a07', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/9a7c01c0-6d44-4c4a-a5b7-bcedb7064a07', 'rel': 'self'}, {'href': 'http://localhost/nodes/9a7c01c0-6d44-4c4a-a5b7-bcedb7064a07', '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=9a7c01c0-6d44-4c4a-a5b7-bcedb7064a07'} +GET: /v1/nodes?fields=driver_info,uuid {} +GOT:{'nodes': [{'uuid': 'f31dad77-c41c-42e9-87b1-d3c8812930dc', 'driver_info': {'fake': 'value'}, 'links': [{'href': 'http://localhost/v1/nodes/f31dad77-c41c-42e9-87b1-d3c8812930dc', 'rel': 'self'}, {'href': 'http://localhost/nodes/f31dad77-c41c-42e9-87b1-d3c8812930dc', 'rel': 'bookmark'}]}, {'uuid': '88fd41ef-db56-4864-aa15-e4f7a0aa6f84', 'driver_info': {'fake': 'value'}, 'links': [{'href': 'http://localhost/v1/nodes/88fd41ef-db56-4864-aa15-e4f7a0aa6f84', 'rel': 'self'}, {'href': 'http://localhost/nodes/88fd41ef-db56-4864-aa15-e4f7a0aa6f84', 'rel': 'bookmark'}]}, {'uuid': '17ce7de2-f514-47a7-a8c9-7454ffa7ae14', 'driver_info': {'fake': 'value'}, 'links': [{'href': 'http://localhost/v1/nodes/17ce7de2-f514-47a7-a8c9-7454ffa7ae14', 'rel': 'self'}, {'href': 'http://localhost/nodes/17ce7de2-f514-47a7-a8c9-7454ffa7ae14', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/nodes?sort_key=id&sort_dir=asc&fields=driver_info,uuid&limit=3&marker=17ce7de2-f514-47a7-a8c9-7454ffa7ae14'} +GET: /v1/nodes {} +GOT:{'nodes': [{'uuid': '5fe78396-0a48-4a17-bec4-fe81eca0b689', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/5fe78396-0a48-4a17-bec4-fe81eca0b689', 'rel': 'self'}, {'href': 'http://localhost/nodes/5fe78396-0a48-4a17-bec4-fe81eca0b689', 'rel': 'bookmark'}]}, {'uuid': '3462d325-8890-4eb9-bb2f-eb7b8bc0f3ba', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/3462d325-8890-4eb9-bb2f-eb7b8bc0f3ba', 'rel': 'self'}, {'href': 'http://localhost/nodes/3462d325-8890-4eb9-bb2f-eb7b8bc0f3ba', 'rel': 'bookmark'}]}, {'uuid': '6d1bae38-265b-4d35-bfe5-c5c1b1a4605a', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/6d1bae38-265b-4d35-bfe5-c5c1b1a4605a', 'rel': 'self'}, {'href': 'http://localhost/nodes/6d1bae38-265b-4d35-bfe5-c5c1b1a4605a', '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=6d1bae38-265b-4d35-bfe5-c5c1b1a4605a'} +GET: /v1/nodes?instance_uuid=c9126f27-b2bf-4a15-b25e-a61a88b2f6b3 {} +GOT:{'nodes': [{'uuid': 'c375b1a5-1829-4302-b8d5-e7ac4744405f', 'instance_uuid': 'c9126f27-b2bf-4a15-b25e-a61a88b2f6b3', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/c375b1a5-1829-4302-b8d5-e7ac4744405f', 'rel': 'self'}, {'href': 'http://localhost/nodes/c375b1a5-1829-4302-b8d5-e7ac4744405f', 'rel': 'bookmark'}]}]} +GET: /v1/nodes/detail {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_physical_network_upgrade +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_physical_network_upgrade ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_put +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_put ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_against_single ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_against_single ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_custom_fields -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_portgroup_uuid +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_portgroup_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_sync +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_sync ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_ok ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_forbidden ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits_with_chassis -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits_with_chassis ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_json -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_json ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_links_public_url -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_links_public_url ... ok -GOT:{'nodes': [{'uuid': 'afe9a217-110f-4f9c-8ed3-14fb3d252199', 'driver_info': {'fake': 'value'}, 'links': [{'href': 'http://localhost/v1/nodes/afe9a217-110f-4f9c-8ed3-14fb3d252199', 'rel': 'self'}, {'href': 'http://localhost/nodes/afe9a217-110f-4f9c-8ed3-14fb3d252199', 'rel': 'bookmark'}]}, {'uuid': '942539da-b438-4696-9a03-474757d91d4b', 'driver_info': {'fake': 'value'}, 'links': [{'href': 'http://localhost/v1/nodes/942539da-b438-4696-9a03-474757d91d4b', 'rel': 'self'}, {'href': 'http://localhost/nodes/942539da-b438-4696-9a03-474757d91d4b', 'rel': 'bookmark'}]}, {'uuid': 'aae50e4f-ff47-4901-936b-050152fdc274', 'driver_info': {'fake': 'value'}, 'links': [{'href': 'http://localhost/v1/nodes/aae50e4f-ff47-4901-936b-050152fdc274', 'rel': 'self'}, {'href': 'http://localhost/nodes/aae50e4f-ff47-4901-936b-050152fdc274', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/nodes?sort_key=id&sort_dir=asc&fields=driver_info,uuid&limit=3&marker=aae50e4f-ff47-4901-936b-050152fdc274'} -GET: /v1/nodes {} -GOT:{'nodes': [{'uuid': 'd6a8d6b7-acc9-45be-8c4f-ba96a84cf84d', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/d6a8d6b7-acc9-45be-8c4f-ba96a84cf84d', 'rel': 'self'}, {'href': 'http://localhost/nodes/d6a8d6b7-acc9-45be-8c4f-ba96a84cf84d', 'rel': 'bookmark'}]}, {'uuid': 'aabb2d56-6e69-4fc7-ab0e-f00f49aa4fb6', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/aabb2d56-6e69-4fc7-ab0e-f00f49aa4fb6', 'rel': 'self'}, {'href': 'http://localhost/nodes/aabb2d56-6e69-4fc7-ab0e-f00f49aa4fb6', 'rel': 'bookmark'}]}, {'uuid': '617e7fba-539e-455f-a2c3-8e2d87ec9bd1', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/617e7fba-539e-455f-a2c3-8e2d87ec9bd1', 'rel': 'self'}, {'href': 'http://localhost/nodes/617e7fba-539e-455f-a2c3-8e2d87ec9bd1', '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=617e7fba-539e-455f-a2c3-8e2d87ec9bd1'} -GET: /v1/nodes?instance_uuid=01d367a1-4987-4046-a7df-92f68ed14a26 {} -GOT:{'nodes': [{'uuid': '03983d09-150f-41f4-ac87-6c5ec79407fa', 'instance_uuid': '01d367a1-4987-4046-a7df-92f68ed14a26', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/03983d09-150f-41f4-ac87-6c5ec79407fa', 'rel': 'self'}, {'href': 'http://localhost/nodes/03983d09-150f-41f4-ac87-6c5ec79407fa', 'rel': 'bookmark'}]}]} -GET: /v1/nodes/detail {} -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:31:49.516960+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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'}]}]} +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_links +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_links ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_instance_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_instance_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_reserved +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_reserved ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:32.152386+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:32.320993+00:00', 'updated_at': None, '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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:32.320993+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'foo': 'bar'}, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:32.480440+00:00', 'updated_at': None, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:32.480440+00:00', 'updated_at': None, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:32.628954+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:32.628954+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:32.787329+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:32.926621+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:32.926621+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GET: /v1/ports/bc97747f-5b90-4365-aef1-87bc45cc2d67 {} +GOT:{'uuid': 'bc97747f-5b90-4365-aef1-87bc45cc2d67', 'created_at': '2024-01-06T14:10:33.074632+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/bc97747f-5b90-4365-aef1-87bc45cc2d67', 'rel': 'self'}, {'href': 'http://localhost/ports/bc97747f-5b90-4365-aef1-87bc45cc2d67', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/ports/bc97747f-5b90-4365-aef1-87bc45cc2d67 {} +GOT:{'uuid': 'bc97747f-5b90-4365-aef1-87bc45cc2d67', 'created_at': '2024-01-06T14:10:33.074632+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/bc97747f-5b90-4365-aef1-87bc45cc2d67', 'rel': 'self'}, {'href': 'http://localhost/ports/bc97747f-5b90-4365-aef1-87bc45cc2d67', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /ports/bc97747f-5b90-4365-aef1-87bc45cc2d67 {} +GOT:{'uuid': 'bc97747f-5b90-4365-aef1-87bc45cc2d67', 'created_at': '2024-01-06T14:10:33.074632+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/bc97747f-5b90-4365-aef1-87bc45cc2d67', 'rel': 'self'}, {'href': 'http://localhost/ports/bc97747f-5b90-4365-aef1-87bc45cc2d67', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/ports/f56cc116-0aee-4da2-b035-373fd672e5e7 {} +GOT:{'uuid': 'f56cc116-0aee-4da2-b035-373fd672e5e7', 'created_at': '2024-01-06T14:10:33.240453+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'links': [{'href': 'http://foo/v1/ports/f56cc116-0aee-4da2-b035-373fd672e5e7', 'rel': 'self'}, {'href': 'http://foo/ports/f56cc116-0aee-4da2-b035-373fd672e5e7', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_links_public_url +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_links_public_url ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_replace_invalid +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_replace_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_detailed_with_deleted_node +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_detailed_with_deleted_node ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields_with_detail_false +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields_with_detail_false ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_non_admin_forbidden +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_non_admin_forbidden ... ok +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:32.615133+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-63a42875-e450-445d-8eb2-9c068b7c783d +Openstack-Request-Id: req-24d2b734-f884-47c5-9bda-eea3cdb4e01b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -8415,301 +8849,276 @@ GET: /v1/nodes/detail {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-68c65d25-cf05-4339-a7df-4f1527478aee +Openstack-Request-Id: req-8b5ea48c-ebc5-4cd9-abed-c18ee66c8e0e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} GET: /v1/nodes/detail?instance_uuid=6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_instance_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_instance_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_suffix -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_suffix ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties ... ok +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:33.162064+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': '6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d', 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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?instance_uuid=6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_instance_uuid_project_match ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_instance_uuid_project_match ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_node_locked -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_node_locked ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_links -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_links ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_cached -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_cached ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_node_not_found -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_node_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_allocation_forbidden +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_allocation_forbidden ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_instance_uuid_project_not_match ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_instance_uuid_project_not_match ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_many -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_many ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_trait_not_found -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_trait_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_iface_not_supported -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_iface_not_supported ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_one -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_one ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_non_admin_forbidden_no_project +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_non_admin_forbidden_no_project ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbid_project_mismatch ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbid_project_mismatch ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_with_bad_version -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_with_bad_version ... ok -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_older_version -ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_older_version ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sensitive_data_masked -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sensitive_data_masked ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_event_missing_madatory_field -ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_event_missing_madatory_field ... ok -GOT:{'deploy_templates': [{'name': 'CUSTOM_DT0', 'links': [{'href': 'http://localhost/v1/deploy_templates/08b73fd4-371a-4c15-995d-d883de23d7cd', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/08b73fd4-371a-4c15-995d-d883de23d7cd', 'rel': 'bookmark'}]}, {'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/4dae9661-6933-46b0-ab08-238697e9c7bf', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/4dae9661-6933-46b0-ab08-238697e9c7bf', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=name&limit=2&marker=4dae9661-6933-46b0-ab08-238697e9c7bf'} -GET: /v1/deploy_templates/59d5f1ad-34e9-4136-a882-df2d7fded695?fields=uuid,spongebob {} -GOT:Response: 400 Bad Request +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_with_deleted_node +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_with_deleted_node ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a1a7ba9a-681f-4182-8197-107cde2c5194 +Openstack-Request-Id: req-9ccc1c95-49c5-4541-ab79-1020aa133a2d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} -GET: /v1/deploy_templates/89af2d8a-2c0f-4748-9814-d1859ec2d2ca {} -GOT:{'uuid': '89af2d8a-2c0f-4748-9814-d1859ec2d2ca', 'created_at': '2024-01-06T13:31:50.538902+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/89af2d8a-2c0f-4748-9814-d1859ec2d2ca', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/89af2d8a-2c0f-4748-9814-d1859ec2d2ca', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} -GET: /v1/deploy_templates/474feaf0-18d5-443a-9d70-84d0baeef616?fields=name,steps {} -GOT:{'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/474feaf0-18d5-443a-9d70-84d0baeef616', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/474feaf0-18d5-443a-9d70-84d0baeef616', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} -GET: /v1/deploy_templates/bf95711d-8668-44c4-ab4d-c0f0563f1be1 {} -GOT:Response: 404 Not Found +{"uuid": "68007103-60af-4b25-9c62-e0f727136645", "created_at": "2024-01-06T14:10:31.092022+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/68007103-60af-4b25-9c62-e0f727136645", "rel": "self"}, {"href": "http://localhost/deploy_templates/68007103-60af-4b25-9c62-e0f727136645", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +PATCH: /v1/deploy_templates/8b136f2a-d945-4556-ac06-feeaded561fd [{'path': '/name', 'value': 'HW_CPU_X86_VMX', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow deploy templates\"}"} -GET: /v1/deploy_templates/6329c8b0-f515-4eaf-996c-df8032b8c61d.json {} -GOT:{'uuid': '6329c8b0-f515-4eaf-996c-df8032b8c61d', 'created_at': '2024-01-06T13:31:51.226666+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/6329c8b0-f515-4eaf-996c-df8032b8c61d', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/6329c8b0-f515-4eaf-996c-df8032b8c61d', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} -GET: /v1/deploy_templates/0053e94f-dc1b-4c78-a295-1f46f3de149c {} -GOT:{'uuid': '0053e94f-dc1b-4c78-a295-1f46f3de149c', 'created_at': '2024-01-06T13:31:51.497867+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/0053e94f-dc1b-4c78-a295-1f46f3de149c', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/0053e94f-dc1b-4c78-a295-1f46f3de149c', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} -GET: /v1/deploy_templates/51ad4c77-f077-43d8-a535-6e8ce1f5a96c {} -GOT:{'uuid': '51ad4c77-f077-43d8-a535-6e8ce1f5a96c', 'created_at': '2024-01-06T13:31:51.833599+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/51ad4c77-f077-43d8-a535-6e8ce1f5a96c', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/51ad4c77-f077-43d8-a535-6e8ce1f5a96c', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} -GET: /v1/deploy_templates/51ad4c77-f077-43d8-a535-6e8ce1f5a96c {} -GOT:{'uuid': '51ad4c77-f077-43d8-a535-6e8ce1f5a96c', 'created_at': '2024-01-06T13:31:51.833599+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/51ad4c77-f077-43d8-a535-6e8ce1f5a96c', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/51ad4c77-f077-43d8-a535-6e8ce1f5a96c', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} -GET: /deploy_templates/51ad4c77-f077-43d8-a535-6e8ce1f5a96c {} -GOT:{'uuid': '51ad4c77-f077-43d8-a535-6e8ce1f5a96c', 'created_at': '2024-01-06T13:31:51.833599+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/51ad4c77-f077-43d8-a535-6e8ce1f5a96c', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/51ad4c77-f077-43d8-a535-6e8ce1f5a96c', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}]} -GET: /v1/deploy_templates {} -GOT:{'deploy_templates': [{'uuid': 'eba6063f-7c3a-44b9-a19c-c89ad92cb844', 'name': 'CUSTOM_DT0', 'links': [{'href': 'http://localhost/v1/deploy_templates/eba6063f-7c3a-44b9-a19c-c89ad92cb844', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/eba6063f-7c3a-44b9-a19c-c89ad92cb844', 'rel': 'bookmark'}]}, {'uuid': '4bd94c2f-d96b-4e27-b8d9-b48b236a03cf', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/4bd94c2f-d96b-4e27-b8d9-b48b236a03cf', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/4bd94c2f-d96b-4e27-b8d9-b48b236a03cf', 'rel': 'bookmark'}]}, {'uuid': 'b6c3d601-9bb4-4f72-a639-198e015a066e', 'name': 'CUSTOM_DT2', 'links': [{'href': 'http://localhost/v1/deploy_templates/b6c3d601-9bb4-4f72-a639-198e015a066e', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/b6c3d601-9bb4-4f72-a639-198e015a066e', 'rel': 'bookmark'}]}, {'uuid': '31483b91-ce48-4bd8-9de6-b519f054f278', 'name': 'CUSTOM_DT3', 'links': [{'href': 'http://localhost/v1/deploy_templates/31483b91-ce48-4bd8-9de6-b519f054f278', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/31483b91-ce48-4bd8-9de6-b519f054f278', 'rel': 'bookmark'}]}, {'uuid': '3ad57bc5-c9fa-4b42-bf3f-96e44babd58d', 'name': 'CUSTOM_DT4', 'links': [{'href': 'http://localhost/v1/deploy_templates/3ad57bc5-c9fa-4b42-bf3f-96e44babd58d', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/3ad57bc5-c9fa-4b42-bf3f-96e44babd58d', 'rel': 'bookmark'}]}]} -GET: /v1/deploy_templates {} -GOT:{'deploy_templates': [{'uuid': 'f77216fa-a18d-48cb-930a-55a563a2d629', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/f77216fa-a18d-48cb-930a-55a563a2d629', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/f77216fa-a18d-48cb-930a-55a563a2d629', 'rel': 'bookmark'}]}]} -GET: /v1/deploy_templates/71293611-d071-4672-a8c7-1c846c06e681 {} -GOT:{'uuid': '71293611-d071-4672-a8c7-1c846c06e681', 'created_at': '2024-01-06T13:31:53.157605+00:00', 'updated_at': None, 'name': 'CUSTOM_DT1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/deploy_templates/71293611-d071-4672-a8c7-1c846c06e681', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/71293611-d071-4672-a8c7-1c846c06e681', 'rel': 'bookmark'}], 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': [], 'password': '******'}, 'priority': 10}]} -GET: /v1/deploy_templates?sort_key=uuid {} -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_invalid_event_type -ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_invalid_event_type ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits_fails_with_bad_version -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits_fails_with_bad_version ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_invalid_mac_network_port_event -ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_invalid_mac_network_port_event ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key_allowed -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits_fails_with_node_not_found -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits_fails_with_node_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_missing_mandatory_fields_network_port_event -ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_missing_mandatory_fields_network_port_event ... ok -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key_invalid -ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_simple_event_type -ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_simple_event_type ... ok -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:31:51.286333+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': '6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d', 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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?instance_uuid=6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d {} -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:31:51.779190+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': '6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d', 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': '46c0bf8a-846d-49a5-9724-5a61a5efa6bf', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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?instance_uuid=6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d {} -GOT:{'nodes': []} -GET: /v1/nodes/detail?project=54321 {} -GOT:Response: 403 Forbidden +Openstack-Request-Id: req-b518cef7-f8ff-469e-bd71-6746c1ee596c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "8b136f2a-d945-4556-ac06-feeaded561fd", "created_at": "2024-01-06T14:10:31.276375+00:00", "updated_at": null, "name": "HW_CPU_X86_VMX", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/8b136f2a-d945-4556-ac06-feeaded561fd", "rel": "self"}, {"href": "http://localhost/deploy_templates/8b136f2a-d945-4556-ac06-feeaded561fd", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +PATCH: /v1/deploy_templates/b3a28953-c237-4114-beb9-1e9d334f7b52 [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ddbb6280-b537-48c4-a7e2-b5e82af26b6b +Openstack-Request-Id: req-04f24aa0-f6f9-4f3e-9d60-4e3047eb37b8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes/detail {} -GOT:{'nodes': [{'uuid': 'becc17b2-7688-4e6e-aeb9-e7e88c0644c9', 'created_at': '2024-01-06T13:31:53.208630+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': '12345', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/becc17b2-7688-4e6e-aeb9-e7e88c0644c9', 'rel': 'self'}, {'href': 'http://localhost/nodes/becc17b2-7688-4e6e-aeb9-e7e88c0644c9', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/becc17b2-7688-4e6e-aeb9-e7e88c0644c9/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/becc17b2-7688-4e6e-aeb9-e7e88c0644c9/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/becc17b2-7688-4e6e-aeb9-e7e88c0644c9/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/becc17b2-7688-4e6e-aeb9-e7e88c0644c9/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/becc17b2-7688-4e6e-aeb9-e7e88c0644c9/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/becc17b2-7688-4e6e-aeb9-e7e88c0644c9/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/becc17b2-7688-4e6e-aeb9-e7e88c0644c9/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/becc17b2-7688-4e6e-aeb9-e7e88c0644c9/volume', 'rel': 'bookmark'}]}, {'uuid': '291298c4-e072-4e3e-a336-4227822391f5', 'created_at': '2024-01-06T13:31:53.238752+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': '12345', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/291298c4-e072-4e3e-a336-4227822391f5', 'rel': 'self'}, {'href': 'http://localhost/nodes/291298c4-e072-4e3e-a336-4227822391f5', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/291298c4-e072-4e3e-a336-4227822391f5/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/291298c4-e072-4e3e-a336-4227822391f5/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/291298c4-e072-4e3e-a336-4227822391f5/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/291298c4-e072-4e3e-a336-4227822391f5/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/291298c4-e072-4e3e-a336-4227822391f5/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/291298c4-e072-4e3e-a336-4227822391f5/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/291298c4-e072-4e3e-a336-4227822391f5/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/291298c4-e072-4e3e-a336-4227822391f5/volume', 'rel': 'bookmark'}]}, {'uuid': 'ca914b83-992f-45ca-b876-a6fe1aff3d0e', 'created_at': '2024-01-06T13:31:53.267207+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': '12345', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/ca914b83-992f-45ca-b876-a6fe1aff3d0e', 'rel': 'self'}, {'href': 'http://localhost/nodes/ca914b83-992f-45ca-b876-a6fe1aff3d0e', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/ca914b83-992f-45ca-b876-a6fe1aff3d0e/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/ca914b83-992f-45ca-b876-a6fe1aff3d0e/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/ca914b83-992f-45ca-b876-a6fe1aff3d0e/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/ca914b83-992f-45ca-b876-a6fe1aff3d0e/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/ca914b83-992f-45ca-b876-a6fe1aff3d0e/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/ca914b83-992f-45ca-b876-a6fe1aff3d0e/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/ca914b83-992f-45ca-b876-a6fe1aff3d0e/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/ca914b83-992f-45ca-b876-a6fe1aff3d0e/volume', 'rel': 'bookmark'}]}, {'uuid': '9d87f60d-35ff-4c0c-b7a4-9c855da0e357', 'created_at': '2024-01-06T13:31:53.287779+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': '12345', 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/9d87f60d-35ff-4c0c-b7a4-9c855da0e357', 'rel': 'self'}, {'href': 'http://localhost/nodes/9d87f60d-35ff-4c0c-b7a4-9c855da0e357', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/9d87f60d-35ff-4c0c-b7a4-9c855da0e357/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/9d87f60d-35ff-4c0c-b7a4-9c855da0e357/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/9d87f60d-35ff-4c0c-b7a4-9c855da0e357/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/9d87f60d-35ff-4c0c-b7a4-9c855da0e357/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/9d87f60d-35ff-4c0c-b7a4-9c855da0e357/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/9d87f60d-35ff-4c0c-b7a4-9c855da0e357/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/9d87f60d-35ff-4c0c-b7a4-9c855da0e357/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/9d87f60d-35ff-4c0c-b7a4-9c855da0e357/volume', 'rel': 'bookmark'}]}, {'uuid': 'b4df08fa-e41d-490f-9dc5-9a1891b1f9cf', 'created_at': '2024-01-06T13:31:53.312636+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': '12345', 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/b4df08fa-e41d-490f-9dc5-9a1891b1f9cf', 'rel': 'self'}, {'href': 'http://localhost/nodes/b4df08fa-e41d-490f-9dc5-9a1891b1f9cf', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/b4df08fa-e41d-490f-9dc5-9a1891b1f9cf/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/b4df08fa-e41d-490f-9dc5-9a1891b1f9cf/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/b4df08fa-e41d-490f-9dc5-9a1891b1f9cf/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/b4df08fa-e41d-490f-9dc5-9a1891b1f9cf/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/b4df08fa-e41d-490f-9dc5-9a1891b1f9cf/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/b4df08fa-e41d-490f-9dc5-9a1891b1f9cf/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/b4df08fa-e41d-490f-9dc5-9a1891b1f9cf/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/b4df08fa-e41d-490f-9dc5-9a1891b1f9cf/volume', 'rel': 'bookmark'}]}, {'uuid': 'd009fcdb-8c77-4538-ace8-e3706da7c907', 'created_at': '2024-01-06T13:31:53.337445+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': '12345', 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/d009fcdb-8c77-4538-ace8-e3706da7c907', 'rel': 'self'}, {'href': 'http://localhost/nodes/d009fcdb-8c77-4538-ace8-e3706da7c907', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/d009fcdb-8c77-4538-ace8-e3706da7c907/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/d009fcdb-8c77-4538-ace8-e3706da7c907/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/d009fcdb-8c77-4538-ace8-e3706da7c907/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/d009fcdb-8c77-4538-ace8-e3706da7c907/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/d009fcdb-8c77-4538-ace8-e3706da7c907/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/d009fcdb-8c77-4538-ace8-e3706da7c907/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/d009fcdb-8c77-4538-ace8-e3706da7c907/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/d009fcdb-8c77-4538-ace8-e3706da7c907/volume', 'rel': 'bookmark'}]}]}ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbidden -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbidden_no_project -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbidden_no_project ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_no_add_single_trait_via_body -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_no_add_single_trait_via_body ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_query_false -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_query_false ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_does_not_contain_event -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_does_not_contain_event ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_detail_false -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_detail_false ... ok -GOT:Response: 204 No Content -Location: http://localhost/v1/nodes/node-39/traits/CUSTOM_3 -Openstack-Request-Id: req-903b0f92-ad51-4cc5-aef4-a996fdca2296 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template b3a28953-c237-4114-beb9-1e9d334f7b52 could not be found.\", \"debuginfo\": null}"} +GET: /v1/drivers/fake-hardware-type {} +GOT:{'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 {} +GOT:{'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'}]} +POST: /v1/drivers/fake-hardware-type/vendor_passthru/do_test {'test_key': 'test_value'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-8886773b-1caf-4502-bef2-2581e8f2f662 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.37 +X-Openstack-Ironic-Api-Version: 1.1 -PUT: /v1/nodes/node-39/traits/CUSTOM_3 {} -GOT:Response: 409 Conflict -Content-Type: application/json -Openstack-Request-Id: req-1d82f976-ba82-44ea-a0b0-6ad2894ac562 +DELETE: /v1/drivers/fake-hardware-type/vendor_passthru/do_test +GOT:Response: 202 Accepted +Openstack-Request-Id: req-54dcb287-a1cc-4981-a429-edff2867e040 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/node-39/traits/CUSTOM_3 {} +X-Openstack-Ironic-Api-Version: 1.1 + +POST: /v1/drivers/fake-hardware-type/vendor_passthru/do_test {'test_key': 'test_value'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d7b93f56-c6f3-4352-8e18-7e2e5e7bad82 +Openstack-Request-Id: req-1a0c7017-486e-4078-90b5-e8b17895ddba X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/node-39/traits/CUSTOM_3 {} +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +GET: /v1/drivers/fake-hardware-type/vendor_passthru/do_test {} +GOT:foo +POST: /v1/drivers/fake-hardware-type/vendor_passthru {'test_key': 'test_value'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-64cbd5c9-72a5-4cb8-b753-db55afbdcbe5 +Openstack-Request-Id: req-111cb780-cee7-4ff6-a973-bb09e818a431 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT1 {} -GOT:Response: 405 Method Not Allowed -Allow: DELETE, GET, PATCH, POST -Content-Type: application/json -{"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} -PUT: /v1/nodes/node-39/traits/bad_trait {} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-3afcced7-bd6f-4d24-abdb-94f7d94398e9 +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Missing mandatory parameter: method\", \"debuginfo\": null}"} +GET: /v1/drivers/fake-hardware-type/vendor_passthru/methods {} +GOT:{'foo': 'bar'} +GET: /v1/drivers/fake-hardware-type/vendor_passthru/methods {} +GOT:{'foo': 'bar'} +PUT: /v1/drivers/fake-hardware-type/vendor_passthru/do_test {'test_key': 'test_value'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-6e46a489-6b8b-4b3f-af47-4073c03e368a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/node-39/traits/CUSTOM_TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT {} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.1 + +POST: /v1/drivers/fake-hardware-type/vendor_passthru/do_test {'test_key': 'test_value'} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-da364f44-bb94-46eb-ad8d-61f7090fa889 +Openstack-Request-Id: req-305cd83d-2dd0-4916-8adf-2b18714f6798 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/nodes/node-39/traits -GOT:Response: 204 No Content -Openstack-Request-Id: req-b93d9db4-b8e0-4f3b-bb7b-0230a3b252e1 +X-Openstack-Ironic-Api-Version: 1.1 +{"return_key": "return_value"} +GET: /v1/drivers {} +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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?fields=name,hosts {} +GOT:{'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?fields=name,hosts&detail=false {} +GOT:{'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?detail=true&fields=name,hosts {} +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields_with_detail_true +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields_with_detail_true ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_invalid_custom_fields +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_invalid_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_with_deleted_port_group +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_with_deleted_port_group ... ok +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-33fcbf36-03b4-4e0e-a58e-d21a3ed71963 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.37 - -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/deadbeef-0000-1111-2222-333333333333 [{'path': '/name', 'op': 'add', 'value': 'i am invalid'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-e1e33ad8-5a55-43e6-819d-705111a54080 +Openstack-Request-Id: req-a9724184-03ed-4594-baf4-61cd1bac2871 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/nodes/node-39/traits -GOT:Response: 204 No Content -Openstack-Request-Id: req-2d951b30-841b-47d3-a268-0dca8aa8af5e +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}"} +PATCH: /v1/nodes/deadbeef-0000-1111-2222-333333333333 [{'path': '/name', 'op': 'add', 'value': 'guido-van-rossum'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-f304b10e-d71b-4f40-84a6-389e1c98357a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.37 - -DELETE: /v1/nodes/node-39/traits/CUSTOM_1 -GOT:Response: 204 No Content -Openstack-Request-Id: req-e902064a-95bd-4720-994d-9b405f029832 +X-Openstack-Ironic-Api-Version: 1.5 +{"uuid": "deadbeef-0000-1111-2222-333333333333", "created_at": "2024-01-06T14:10:32.802795+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/deadbeef-0000-1111-2222-333333333333 [{'path': '/name', 'op': 'add', 'value': 'maintenance'}] +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-23c3b815-886d-453a-9690-cf0482de5e8f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.37 - -DELETE: /v1/nodes/node-39/traits/CUSTOM_1 -GOT:Response: 409 Conflict +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 [{'path': '/name', 'op': 'add', 'value': 'management'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-a9857087-e587-4924-aac1-6f7f32fc5171 +Openstack-Request-Id: req-b7605ebd-293b-4a70-841f-35c400b0fa38 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/nodes/node-39/traits/CUSTOM_1 -GOT:Response: 404 Not Found +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 [{'path': '/name', 'op': 'add', 'value': 'states'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b76e0150-3ecd-4be5-a0ef-daf4871fe41e +Openstack-Request-Id: req-89a8a3e2-0f3f-44df-9cca-85c0227982a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/nodes/node-39/traits/CUSTOM_12 -GOT:Response: 404 Not Found +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 [{'path': '/name', 'op': 'add', 'value': 'vendor_passthru'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d2e76af2-a78c-4740-97c8-f0fc1a856958 +Openstack-Request-Id: req-4eb8c4c9-40ca-48d9-adc0-8a335dbc2655 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT1 -GOT:Response: 404 Not Found +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 [{'path': '/name', 'op': 'add', 'value': 'detail'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-9db09196-8a3b-403d-ba23-414b32af8b0e +Openstack-Request-Id: req-d7584f4b-aac8-4df0-9400-fa1025a1251e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} -GOT:{'traits': ['CUSTOM_1', 'CUSTOM_2']} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} -GOT:Response: 406 Not Acceptable +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 [{'path': '/name', 'op': 'add', 'value': 'validate'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c9aa16cf-83a5-4669-b779-9cf5e9f9679a +Openstack-Request-Id: req-817d5150-6b16-4ebe-be38-61d7498d90cf X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes/badname/traits {} -GOT:Response: 404 Not Found +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}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/name', 'op': 'replace', 'value': 'Guido Van Error'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-29fc50fc-d7d4-436e-a45d-865668ba0504 +Openstack-Request-Id: req-059ce281-0aaa-4936-940c-f14eaf9ed4b4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/node-39/traits {'trait': 'CUSTOM_3'} +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}"} +PATCH: /v1/nodes/fe72da82-7cfc-442f-883d-b721b639cd84 [{'path': '/allocation_uuid', 'op': 'replace', 'value': '48e08aa3-7816-44d9-ad4d-938aaa7e7c43'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-1d04d7da-719e-41cc-850e-042a2aaef012 +Openstack-Request-Id: req-5d4de37c-74ec-4a02-9677-4cce277f7fb2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/node-39/traits/CUSTOM_3 {'traits': ['CUSTOM_3']} -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_no_add_single_trait_via_body_2 -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_no_add_single_trait_via_body_2 ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_invalid_event -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_invalid_event ... ok +X-Openstack-Ironic-Api-Version: 1.80 +{"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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/5469fed8-a652-4ce1-8d49-817fb95cad6d [{'path': '/allocation_uuid', 'op': 'replace', 'value': '1990ad13-acfd-4625-8633-8df4b9111011'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_allocation_uuid_forbidden +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_allocation_uuid_forbidden ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_detail_bad_version +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_detail_bad_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_conductor_forbidden +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_conductor_forbidden ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_many +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_many ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_detail_bad_version_false +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_detail_bad_version_false ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_not_found +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_deploy_step_forbidden +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_deploy_step_forbidden ... ok +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:33.416651+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': '6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d', 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': '46c0bf8a-846d-49a5-9724-5a61a5efa6bf', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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?instance_uuid=6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d {} +GOT:{'nodes': []} +GET: /v1/nodes/detail?project=54321 {} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-2d1f5d28-6658-4e13-b256-d0086891958a +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/nodes/detail {} +GOT:{'nodes': [{'uuid': 'f6471b54-4312-44ee-8f77-51e177a3a9e0', 'created_at': '2024-01-06T14:10:33.938210+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': '12345', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/f6471b54-4312-44ee-8f77-51e177a3a9e0', 'rel': 'self'}, {'href': 'http://localhost/nodes/f6471b54-4312-44ee-8f77-51e177a3a9e0', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/f6471b54-4312-44ee-8f77-51e177a3a9e0/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/f6471b54-4312-44ee-8f77-51e177a3a9e0/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/f6471b54-4312-44ee-8f77-51e177a3a9e0/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/f6471b54-4312-44ee-8f77-51e177a3a9e0/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/f6471b54-4312-44ee-8f77-51e177a3a9e0/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/f6471b54-4312-44ee-8f77-51e177a3a9e0/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/f6471b54-4312-44ee-8f77-51e177a3a9e0/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/f6471b54-4312-44ee-8f77-51e177a3a9e0/volume', 'rel': 'bookmark'}]}, {'uuid': '4b672d34-0def-4f16-ae28-e8626d1776f6', 'created_at': '2024-01-06T14:10:33.950757+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': '12345', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/4b672d34-0def-4f16-ae28-e8626d1776f6', 'rel': 'self'}, {'href': 'http://localhost/nodes/4b672d34-0def-4f16-ae28-e8626d1776f6', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/4b672d34-0def-4f16-ae28-e8626d1776f6/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/4b672d34-0def-4f16-ae28-e8626d1776f6/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/4b672d34-0def-4f16-ae28-e8626d1776f6/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/4b672d34-0def-4f16-ae28-e8626d1776f6/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/4b672d34-0def-4f16-ae28-e8626d1776f6/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/4b672d34-0def-4f16-ae28-e8626d1776f6/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/4b672d34-0def-4f16-ae28-e8626d1776f6/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/4b672d34-0def-4f16-ae28-e8626d1776f6/volume', 'rel': 'bookmark'}]}, {'uuid': 'daef9fa1-890f-4fa6-a3c0-2d7618568360', 'created_at': '2024-01-06T14:10:33.961872+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': '12345', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/daef9fa1-890f-4fa6-a3c0-2d7618568360', 'rel': 'self'}, {'href': 'http://localhost/nodes/daef9fa1-890f-4fa6-a3c0-2d7618568360', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/daef9fa1-890f-4fa6-a3c0-2d7618568360/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/daef9fa1-890f-4fa6-a3c0-2d7618568360/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/daef9fa1-890f-4fa6-a3c0-2d7618568360/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/daef9fa1-890f-4fa6-a3c0-2d7618568360/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/daef9fa1-890f-4fa6-a3c0-2d7618568360/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/daef9fa1-890f-4fa6-a3c0-2d7618568360/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/daef9fa1-890f-4fa6-a3c0-2d7618568360/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/daef9fa1-890f-4fa6-a3c0-2d7618568360/volume', 'rel': 'bookmark'}]}, {'uuid': '73abe61c-ce64-4dc7-b9fb-c072a25bc95c', 'created_at': '2024-01-06T14:10:33.972797+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': '12345', 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/73abe61c-ce64-4dc7-b9fb-c072a25bc95c', 'rel': 'self'}, {'href': 'http://localhost/nodes/73abe61c-ce64-4dc7-b9fb-c072a25bc95c', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/73abe61c-ce64-4dc7-b9fb-c072a25bc95c/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/73abe61c-ce64-4dc7-b9fb-c072a25bc95c/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/73abe61c-ce64-4dc7-b9fb-c072a25bc95c/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/73abe61c-ce64-4dc7-b9fb-c072a25bc95c/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/73abe61c-ce64-4dc7-b9fb-c072a25bc95c/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/73abe61c-ce64-4dc7-b9fb-c072a25bc95c/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/73abe61c-ce64-4dc7-b9fb-c072a25bc95c/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/73abe61c-ce64-4dc7-b9fb-c072a25bc95c/volume', 'rel': 'bookmark'}]}, {'uuid': '383b187b-24bb-4011-80cf-2fea7e9c8334', 'created_at': '2024-01-06T14:10:33.983646+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': '12345', 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/383b187b-24bb-4011-80cf-2fea7e9c8334', 'rel': 'self'}, {'href': 'http://localhost/nodes/383b187b-24bb-4011-80cf-2fea7e9c8334', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/383b187b-24bb-4011-80cf-2fea7e9c8334/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/383b187b-24bb-4011-80cf-2fea7e9c8334/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/383b187b-24bb-4011-80cf-2fea7e9c8334/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/383b187b-24bb-4011-80cf-2fea7e9c8334/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/383b187b-24bb-4011-80cf-2fea7e9c8334/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/383b187b-24bb-4011-80cf-2fea7e9c8334/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/383b187b-24bb-4011-80cf-2fea7e9c8334/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/383b187b-24bb-4011-80cf-2fea7e9c8334/volume', 'rel': 'bookmark'}]}, {'uuid': 'ebb43314-815d-46b1-b441-747249708c2b', 'created_at': '2024-01-06T14:10:33.994602+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': '12345', 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/ebb43314-815d-46b1-b441-747249708c2b', 'rel': 'self'}, {'href': 'http://localhost/nodes/ebb43314-815d-46b1-b441-747249708c2b', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/ebb43314-815d-46b1-b441-747249708c2b/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/ebb43314-815d-46b1-b441-747249708c2b/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/ebb43314-815d-46b1-b441-747249708c2b/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/ebb43314-815d-46b1-b441-747249708c2b/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/ebb43314-815d-46b1-b441-747249708c2b/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/ebb43314-815d-46b1-b441-747249708c2b/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/ebb43314-815d-46b1-b441-747249708c2b/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/ebb43314-815d-46b1-b441-747249708c2b/volume', 'rel': 'bookmark'}]}]}ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbidden +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbidden ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbidden_no_project +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbidden_no_project ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_many_non_admin +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_many_non_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_query_false +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_query_false ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_ok_dynamic_base_interfaces +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_ok_dynamic_base_interfaces ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_one +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_one ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_duplicate_name +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_duplicate_name ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_sort_key_allowed ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_sort_key_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_detail_old_version -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_detail_old_version ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_unsupported_api_version -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_unsupported_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_ok_dynamic_latest_interfaces +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_ok_dynamic_latest_interfaces ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_sort_key_not_allowed ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_sort_key_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_fails_with_bad_version -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_fails_with_bad_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_empty -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_empty ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_multiple_events -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_multiple_events ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_fails_with_bad_version -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_fails_with_bad_version ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_no_active_conductor +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_no_active_conductor ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_fault_forbidden +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_fault_forbidden ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_invalid_address_format +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_invalid_address_format ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_bad_value +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_bad_value ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_bad_version +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_bad_version ... ok GET: /v1/nodes/detail {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-767d5360-737d-4fca-bbfe-bd8a6f75dd18 +Openstack-Request-Id: req-aaa374da-873f-4924-83ba-260fd863c96c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 @@ -8719,11 +9128,11 @@ GET: /v1/nodes?detail=False {} GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, '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?sort_key=resource_class {} -GOT:{'nodes': [{'uuid': '4ed3ad72-65f0-4eaa-86a0-2ad629ed0a76', 'created_at': '2024-01-06T13:31:54.896895+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'rc_1', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'links': [{'href': 'http://localhost/v1/nodes/4ed3ad72-65f0-4eaa-86a0-2ad629ed0a76', 'rel': 'self'}, {'href': 'http://localhost/nodes/4ed3ad72-65f0-4eaa-86a0-2ad629ed0a76', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/4ed3ad72-65f0-4eaa-86a0-2ad629ed0a76/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/4ed3ad72-65f0-4eaa-86a0-2ad629ed0a76/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/4ed3ad72-65f0-4eaa-86a0-2ad629ed0a76/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/4ed3ad72-65f0-4eaa-86a0-2ad629ed0a76/states', 'rel': 'bookmark'}]}, {'uuid': '2e0462b7-5d57-461f-8555-a7e3d874d57b', 'created_at': '2024-01-06T13:31:54.864821+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'rc_2', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'links': [{'href': 'http://localhost/v1/nodes/2e0462b7-5d57-461f-8555-a7e3d874d57b', 'rel': 'self'}, {'href': 'http://localhost/nodes/2e0462b7-5d57-461f-8555-a7e3d874d57b', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/2e0462b7-5d57-461f-8555-a7e3d874d57b/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/2e0462b7-5d57-461f-8555-a7e3d874d57b/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/2e0462b7-5d57-461f-8555-a7e3d874d57b/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/2e0462b7-5d57-461f-8555-a7e3d874d57b/states', 'rel': 'bookmark'}]}, {'uuid': 'eafaa03a-2ac6-42b1-8fc0-dae73e8780bd', 'created_at': '2024-01-06T13:31:54.833871+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'rc_3', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'links': [{'href': 'http://localhost/v1/nodes/eafaa03a-2ac6-42b1-8fc0-dae73e8780bd', 'rel': 'self'}, {'href': 'http://localhost/nodes/eafaa03a-2ac6-42b1-8fc0-dae73e8780bd', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/eafaa03a-2ac6-42b1-8fc0-dae73e8780bd/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/eafaa03a-2ac6-42b1-8fc0-dae73e8780bd/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/eafaa03a-2ac6-42b1-8fc0-dae73e8780bd/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/eafaa03a-2ac6-42b1-8fc0-dae73e8780bd/states', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'a293ffc5-96d4-434e-946d-d481d6335738', 'created_at': '2024-01-06T14:10:34.639815+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'rc_1', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'links': [{'href': 'http://localhost/v1/nodes/a293ffc5-96d4-434e-946d-d481d6335738', 'rel': 'self'}, {'href': 'http://localhost/nodes/a293ffc5-96d4-434e-946d-d481d6335738', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/a293ffc5-96d4-434e-946d-d481d6335738/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/a293ffc5-96d4-434e-946d-d481d6335738/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/a293ffc5-96d4-434e-946d-d481d6335738/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/a293ffc5-96d4-434e-946d-d481d6335738/states', 'rel': 'bookmark'}]}, {'uuid': '781d4bf4-32a4-470c-ade1-55bf51345c6f', 'created_at': '2024-01-06T14:10:34.628759+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'rc_2', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'links': [{'href': 'http://localhost/v1/nodes/781d4bf4-32a4-470c-ade1-55bf51345c6f', 'rel': 'self'}, {'href': 'http://localhost/nodes/781d4bf4-32a4-470c-ade1-55bf51345c6f', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/781d4bf4-32a4-470c-ade1-55bf51345c6f/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/781d4bf4-32a4-470c-ade1-55bf51345c6f/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/781d4bf4-32a4-470c-ade1-55bf51345c6f/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/781d4bf4-32a4-470c-ade1-55bf51345c6f/states', 'rel': 'bookmark'}]}, {'uuid': '2ecc7e79-e819-4994-8e26-e90a74f388fe', 'created_at': '2024-01-06T14:10:34.617701+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'rc_3', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'links': [{'href': 'http://localhost/v1/nodes/2ecc7e79-e819-4994-8e26-e90a74f388fe', 'rel': 'self'}, {'href': 'http://localhost/nodes/2ecc7e79-e819-4994-8e26-e90a74f388fe', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/2ecc7e79-e819-4994-8e26-e90a74f388fe/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/2ecc7e79-e819-4994-8e26-e90a74f388fe/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/2ecc7e79-e819-4994-8e26-e90a74f388fe/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/2ecc7e79-e819-4994-8e26-e90a74f388fe/states', 'rel': 'bookmark'}]}]} GET: /v1/nodes/detail?sort_key=resource_class {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-3eab7d53-8b42-455f-9c00-06198939b3f6 +Openstack-Request-Id: req-ff839d51-3c50-4665-a11d-64213c7fdd90 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.20 @@ -8731,418 +9140,340 @@ GET: /v1/nodes?detail=True {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_with_detail -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_with_detail ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_bind_port_events -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_bind_port_events ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query_and_fields ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query_and_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_bad_trait -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_bad_trait ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_detail_and_fields -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_detail_and_fields ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_delete_port_events -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_delete_port_events ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_admin +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_name_remove_ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_name_remove_ok ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_classic +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_classic ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_admin_no_match +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_admin_no_match ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query_false_and_fields ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query_false_and_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_no_body -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_no_body ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_fields -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_fields_old_version -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_fields_old_version ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_dynamic +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_dynamic ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query_old_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query_old_version ... ok -GOT:{'deploy_templates': [{'uuid': '21e88979-20a7-4ebd-87bb-a938dc442d2b', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/21e88979-20a7-4ebd-87bb-a938dc442d2b', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/21e88979-20a7-4ebd-87bb-a938dc442d2b', 'rel': 'bookmark'}]}, {'uuid': '4fd7c7fd-5379-440c-98f7-de3ac694a45e', 'name': 'CUSTOM_DT0', 'links': [{'href': 'http://localhost/v1/deploy_templates/4fd7c7fd-5379-440c-98f7-de3ac694a45e', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/4fd7c7fd-5379-440c-98f7-de3ac694a45e', 'rel': 'bookmark'}]}, {'uuid': '9694a5b0-48ba-4e63-96a2-c5962538094c', 'name': 'CUSTOM_DT2', 'links': [{'href': 'http://localhost/v1/deploy_templates/9694a5b0-48ba-4e63-96a2-c5962538094c', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/9694a5b0-48ba-4e63-96a2-c5962538094c', 'rel': 'bookmark'}]}]} -GET: /v1/deploy_templates?sort_key=name&detail=False {} -GOT:{'deploy_templates': [{'uuid': 'e723ee8f-c72e-4547-b829-a6ac347d0ccb', 'name': 'CUSTOM_DT1', 'links': [{'href': 'http://localhost/v1/deploy_templates/e723ee8f-c72e-4547-b829-a6ac347d0ccb', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/e723ee8f-c72e-4547-b829-a6ac347d0ccb', 'rel': 'bookmark'}]}, {'uuid': '920d6c20-27cd-4cd3-a428-762e529912a7', 'name': 'CUSTOM_DT2', 'links': [{'href': 'http://localhost/v1/deploy_templates/920d6c20-27cd-4cd3-a428-762e529912a7', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/920d6c20-27cd-4cd3-a428-762e529912a7', 'rel': 'bookmark'}]}, {'uuid': 'd863c461-a036-4ba0-a3b8-c17e725895c9', 'name': 'CUSTOM_DT3', 'links': [{'href': 'http://localhost/v1/deploy_templates/d863c461-a036-4ba0-a3b8-c17e725895c9', 'rel': 'self'}, {'href': 'http://localhost/deploy_templates/d863c461-a036-4ba0-a3b8-c17e725895c9', 'rel': 'bookmark'}]}]} -GET: /v1/deploy_templates?sort_key=extra {} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-aade3d1c-b290-41ba-b39e-47ed8f456556 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_existent_address +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_existent_address ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_name_replace_ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_name_replace_ok ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_portgroups_subresource_invalid_ident +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_portgroups_subresource_invalid_ident ... ok GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-f9bb8edf-aa85-4fae-af31-ad022d6342d4 +Openstack-Request-Id: req-3d022af6-09ae-4a0f-8f90-6bd9e4ba1e85 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} +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}"} +GET: /v1/drivers?fields=name,invalid {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-7d524eab-4710-4e3b-8a1f-a669d6899af7 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value steps is an invalid field for sorting\", \"debuginfo\": null}"} -POST: /v1/events {'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-205c5631-fe87-4959-9c9b-c1bac8c026c3 +Openstack-Request-Id: req-f648b9cb-999a-4758-97a9-dcd39cda1f49 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/events {'events': [{'INVALID': 'fake.event'}]} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.77 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"invalid\\\" are not valid\", \"debuginfo\": null}"} +GET: /v1/drivers?detail=True {} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-ca691ea4-003a-47d3-b7d1-3131bb35dc33 +Openstack-Request-Id: req-bb1d0d3e-2d89-4f48-a2b6-55867af17e48 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'event' is a required property\", \"debuginfo\": null}"} -POST: /v1/events {'events': [{'event': 'invalid.event'}]} -GOT:Response: 400 Bad Request +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}"} +GET: /v1/drivers?detail=False {} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-c7e8de68-fa5d-40ed-b023-ce4c884a0407 +Openstack-Request-Id: req-bee4a74f-1a04-40af-9c0c-03c9910000cc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -POST: /v1/events {'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'}]} +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}"} +GET: /v1/drivers/nope {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-699a7e70-6753-430c-bfd4-84335d1ef662 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -POST: /v1/events {'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-d95351fb-4aca-4a26-92fb-d59327602859 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/events {'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-675d5ae1-6e51-485c-94f2-5ff3608e9c2b -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/events {'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-901104d3-a6f4-4751-8a87-e6226f9466a2 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/events {'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'}]} -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_binding_host_id -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_binding_host_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_too_long_trait -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_too_long_trait ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_binding_vnic_type -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_binding_vnic_type ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_device_id -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_device_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_with_chassis -ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_with_chassis ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_with_association_filter -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_with_association_filter ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_fails_if_not_found -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_fails_if_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_mac_address -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_mac_address ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_with_instance_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_with_instance_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_port_id -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_port_id ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_local_link_connection_network_type -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_local_link_connection_network_type ... ok -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-87f49c0c-bfa8-407d-9e35-60cc61d9333f +Openstack-Request-Id: req-8230024f-ffbb-46e9-ac3f-a863c46d82cc X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} +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}"} GET: /v1/drivers/fake-hardware-type {} -GOT:{'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'}]} +GOT:{'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': None, 'enabled_network_interfaces': [], 'default_raid_interface': None, 'enabled_raid_interfaces': [], 'default_boot_interface': None, 'enabled_boot_interfaces': [], 'default_power_interface': None, 'enabled_power_interfaces': [], 'default_vendor_interface': None, 'enabled_vendor_interfaces': [], 'default_deploy_interface': 'direct', 'enabled_deploy_interfaces': ['direct', 'ansible'], 'default_console_interface': None, 'enabled_console_interfaces': [], 'default_inspect_interface': None, 'enabled_inspect_interfaces': [], 'default_management_interface': None, 'enabled_management_interfaces': []} GET: /v1/drivers/fake-hardware-type {} GOT:{'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 {} GOT:{'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/properties {} +GET: /drivers/fake-hardware-type/properties {} GET: /v1/drivers/fake-hardware-type {} -GOT:{'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'}]} +GOT:{'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_rescue_interface': None, 'enabled_rescue_interfaces': [], 'default_bios_interface': None, 'enabled_bios_interfaces': [], 'default_storage_interface': None, 'enabled_storage_interfaces': [], 'default_network_interface': None, 'enabled_network_interfaces': [], 'default_raid_interface': None, 'enabled_raid_interfaces': [], 'default_boot_interface': None, 'enabled_boot_interfaces': [], 'default_power_interface': None, 'enabled_power_interfaces': [], 'default_vendor_interface': None, 'enabled_vendor_interfaces': [], 'default_deploy_interface': 'direct', 'enabled_deploy_interfaces': ['direct', 'ansible'], 'default_console_interface': None, 'enabled_console_interfaces': [], 'default_inspect_interface': None, 'enabled_inspect_interfaces': [], 'default_management_interface': None, 'enabled_management_interfaces': []} GET: /v1/drivers/fake-hardware-type {} -GOT:{'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'}]} +GOT:{'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 {} -GOT:{'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/raid/logical_disk_properties {} -GOT:{'foo': 'description of foo'} -GET: /v1/drivers/fake-hardware-type/raid/logical_disk_properties {} -GOT:{'foo': 'description of foo'} -GET: /v1/drivers/fake-hardware-type/raid/logical_disk_properties {} -GOT:{'foo': 'description of foo'} -GET: /v1/drivers/fake-hardware-type/raid/logical_disk_properties {} -GOT:{'foo': 'description of foo'} -GET: /v1/drivers/fake-hardware-type/raid/logical_disk_properties {} -GOT:Response: 404 Not Found +GOT:{'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/properties {} +GET: /drivers/fake-hardware-type/properties {} +GET: /v1/drivers {} +GOT:{'drivers': []} +GET: /v1/drivers?type=working {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-3a3ffdb0-7d87-421f-826b-ada50b89aa06 +Openstack-Request-Id: req-098655ef-d67d-42cb-8470-d7101222290d X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/drivers/fake-hardware-type/raid/logical_disk_properties {} +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}"} +GET: /v1/drivers?type=classic {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-3b407f1b-9916-471c-9fcf-cf041c0a24e4 +Openstack-Request-Id: req-e6182337-b41a-4a3d-ac9a-68e1ba7ae7b9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} -GOT:{'bios': [{'created_at': '2024-01-06T13:31:54.474797+00:00', 'updated_at': None, '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'}]}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?detail=False {} -GOT:{'bios': [{'created_at': '2024-01-06T13:31:54.820027+00:00', 'updated_at': None, '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'}]}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?detail=True {} -GOT:Response: 400 Bad Request +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}"} +GET: /v1/drivers?type=classic {} +GOT:{'drivers': []} +GET: /v1/drivers?type=dynamic {} +GOT:{'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 {} +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_portgroups_subresource_node_not_found +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_portgroups_subresource_node_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_with_association_filter +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_with_association_filter ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic_detailed +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic_detailed ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_with_instance_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_with_instance_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_empty +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_empty ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_all_interface_fields +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_all_interface_fields ... ok +GET: /v1/ports/f56cc116-0aee-4da2-b035-373fd672e5e7 {} +GOT:{'uuid': 'f56cc116-0aee-4da2-b035-373fd672e5e7', 'created_at': '2024-01-06T14:10:33.240453+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'links': [{'href': 'http://foo/v1/ports/f56cc116-0aee-4da2-b035-373fd672e5e7', 'rel': 'self'}, {'href': 'http://foo/ports/f56cc116-0aee-4da2-b035-373fd672e5e7', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /ports/f56cc116-0aee-4da2-b035-373fd672e5e7 {} +GOT:{'uuid': 'f56cc116-0aee-4da2-b035-373fd672e5e7', 'created_at': '2024-01-06T14:10:33.240453+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'links': [{'href': 'http://foo/v1/ports/f56cc116-0aee-4da2-b035-373fd672e5e7', 'rel': 'self'}, {'href': 'http://foo/ports/f56cc116-0aee-4da2-b035-373fd672e5e7', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/ports/detail {} +GOT:{'ports': [{'uuid': '2bd4abc5-57ff-4d92-88a3-3a0b847d88ef', 'created_at': '2024-01-06T14:10:33.442080+00:00', 'updated_at': None, 'address': '66:44:55:33:11:22', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/2bd4abc5-57ff-4d92-88a3-3a0b847d88ef', 'rel': 'self'}, {'href': 'http://localhost/ports/2bd4abc5-57ff-4d92-88a3-3a0b847d88ef', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/ports {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bfa377e5-b7b4-49a0-8599-a81f55081a89 +Openstack-Request-Id: req-7ffc5859-85cb-4698-a36e-1d3bab763c7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?detail=True {} -GOT:{'bios': [{'created_at': '2024-01-06T13:31:55.779006+00:00', 'updated_at': None, 'name': 'virtualization', 'value': 'on', 'attribute_type': 'Enumeration', 'allowable_values': ['on', 'off'], 'lower_bound': None, 'max_length': None, 'min_length': None, 'read_only': False, 'reset_required': True, 'unique': False, 'upper_bound': None, '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'}]}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?detail=True?fields=name,read_only {} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} +GET: /v1/ports {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-decb10c8-5f20-421e-8b6e-933e69cc99c1 +Openstack-Request-Id: req-1072a9a4-266a-4934-8f7c-891c9010df29 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?fields=name,read_only {} -GOT:{'bios': [{'created_at': '2024-01-06T13:31:56.520283+00:00', 'updated_at': None, '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'}]}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?fields=name,read_only {} +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} +GET: /v1/ports {} +GOT:{'ports': []} +GET: /v1/ports/detail {} +GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:33.968838+00:00', 'updated_at': None, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None}]} +GET: /v1/ports {} +GOT:{'ports': [{'uuid': 'ccfe8e3c-dc53-460f-9bc3-f07e7d83c378', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/ccfe8e3c-dc53-460f-9bc3-f07e7d83c378', 'rel': 'self'}, {'href': 'http://localhost/ports/ccfe8e3c-dc53-460f-9bc3-f07e7d83c378', 'rel': 'bookmark'}]}, {'uuid': 'ecdce34f-cced-428d-854b-fc4870ae540d', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/ecdce34f-cced-428d-854b-fc4870ae540d', 'rel': 'self'}, {'href': 'http://localhost/ports/ecdce34f-cced-428d-854b-fc4870ae540d', 'rel': 'bookmark'}]}, {'uuid': '6b7ad396-fad8-4de5-8ea1-0a552bea1b5e', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/6b7ad396-fad8-4de5-8ea1-0a552bea1b5e', 'rel': 'self'}, {'href': 'http://localhost/ports/6b7ad396-fad8-4de5-8ea1-0a552bea1b5e', 'rel': 'bookmark'}]}, {'uuid': '1e68495d-83b4-4bb7-9f33-701f453e0e94', 'address': '52:54:00:cf:2d:33', 'links': [{'href': 'http://localhost/v1/ports/1e68495d-83b4-4bb7-9f33-701f453e0e94', 'rel': 'self'}, {'href': 'http://localhost/ports/1e68495d-83b4-4bb7-9f33-701f453e0e94', 'rel': 'bookmark'}]}, {'uuid': '9590077a-bcf8-43b9-a52c-2defb3b7a5c9', 'address': '52:54:00:cf:2d:34', 'links': [{'href': 'http://localhost/v1/ports/9590077a-bcf8-43b9-a52c-2defb3b7a5c9', 'rel': 'self'}, {'href': 'http://localhost/ports/9590077a-bcf8-43b9-a52c-2defb3b7a5c9', 'rel': 'bookmark'}]}]} +GET: /v1/ports {} +GOT:{'ports': [{'uuid': '8e1f9190-a6ed-4ad5-a22b-31a3b538d05c', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/8e1f9190-a6ed-4ad5-a22b-31a3b538d05c', 'rel': 'self'}, {'href': 'http://localhost/ports/8e1f9190-a6ed-4ad5-a22b-31a3b538d05c', 'rel': 'bookmark'}]}, {'uuid': 'eb825bee-916d-442e-8cf4-353cb8fb5f2c', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/eb825bee-916d-442e-8cf4-353cb8fb5f2c', 'rel': 'self'}, {'href': 'http://localhost/ports/eb825bee-916d-442e-8cf4-353cb8fb5f2c', 'rel': 'bookmark'}]}]} +GET: /v1/ports {} +GOT:{'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?address=aa:bb:cc:dd:ee:f1 {} +GOT:{'ports': [{'uuid': 'f5738bbf-df52-43ae-9e13-a4503f0ffcd5', 'address': 'aa:bb:cc:dd:ee:f1', 'links': [{'href': 'http://localhost/v1/ports/f5738bbf-df52-43ae-9e13-a4503f0ffcd5', 'rel': 'self'}, {'href': 'http://localhost/ports/f5738bbf-df52-43ae-9e13-a4503f0ffcd5', 'rel': 'bookmark'}]}]} +GET: /v1/ports?address=invalid-mac-format {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-459ed3de-7b91-4eef-9fa1-1b3cb32c7e50 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization {} -GOT:{'virtualization': {'created_at': '2024-01-06T13:31:57.084434+00:00', 'updated_at': None, 'name': 'virtualization', 'value': 'on', 'attribute_type': 'Enumeration', 'allowable_values': ['on', 'off'], 'lower_bound': None, 'max_length': None, 'min_length': None, 'read_only': False, 'reset_required': True, 'unique': False, 'upper_bound': None, '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'}]}} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/fake_setting {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-16435e3a-60d7-48a9-877a-a44dbdd2116f +Openstack-Request-Id: req-8579ea5f-1c64-411d-a3a7-789ae2a2d779 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_fails_with_bad_version -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_fails_with_bad_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_empty -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_empty ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_status -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_status ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_no_registry -ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_no_registry ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_local_link_connection_network_type_old_api -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_local_link_connection_network_type_old_api ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_not_list -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_not_list ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_unbind_port_events -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_unbind_port_events ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_all_interface_fields -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_all_interface_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_args_value_invalid -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_args_value_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_multi -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_multi ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_interface_value_invalid -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_interface_value_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_all_interface_fields_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_all_interface_fields_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_unknown_event_property -ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_unknown_event_property ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_key_invalid -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_key_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_node_id -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_node_id ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_min_length_step_value -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_min_length_step_value ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_associated -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_associated ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_automated_clean_fields -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_automated_clean_fields ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_interface -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_interface ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_node_uuid -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_step_key -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_step_key ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_step_value -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_step_value ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device_by_name -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device_by_name ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name_unsupported -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name_unsupported ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_not_dict -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_not_dict ... ok +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-mac-format\", \"debuginfo\": null}"} +GET: /v1/ports?address=aa:bb:cc:dd:ee:f1 {} +GOT:{'ports': [{'uuid': 'a5788d0e-98f8-4f88-9c63-91781ec9f071', 'address': 'aa:bb:cc:dd:ee:f1', 'links': [{'href': 'http://localhost/v1/ports/a5788d0e-98f8-4f88-9c63-91781ec9f071', 'rel': 'self'}, {'href': 'http://localhost/ports/a5788d0e-98f8-4f88-9c63-91781ec9f071', 'rel': 'bookmark'}]}]} +GET: /v1/ports?address=aa:bb:cc:dd:ee:f1 {} +GOT:{'ports': []} +GET: /v1/ports?address=aa:bb:cc:dd:ee:ff {} +GOT:{'ports': []} +GET: /v1/portgroups/123 123/ports {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-661e0a95-84ba-4f7c-b08d-b1f2dfa9760a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -PUT: /v1/nodes/node-39/traits {'traits': ['CUSTOM_3']} -GOT:Response: 204 No Content -Openstack-Request-Id: req-711499c5-aca2-4d6f-902f-2aa64e6db94a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.37 - -PUT: /v1/nodes/node-39/traits {'traits': []} -GOT:Response: 204 No Content -Openstack-Request-Id: req-f2de22dd-571c-4832-92e5-535cce76811d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.37 - -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': []} -GOT:Response: 405 Method Not Allowed -Allow: DELETE, GET, PATCH, POST +{"error_message": "{\"code\": 400, \"title\": \"Bad Request\", \"description\": \"Expected UUID or name for portgroup: 123 123\"}"} +GET: /v1/portgroups/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/ports {} +GOT:Response: 404 Not Found Content-Type: application/json -{"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} -PUT: /v1/nodes/node-39/traits {'traits': ['CUSTOM_3', 'BAD_TRAIT']} +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/ports?sort_key=uuid {} +GOT:{'ports': [{'uuid': '147c80bf-65a3-435d-a4c1-4f2018a39b2d', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/147c80bf-65a3-435d-a4c1-4f2018a39b2d', 'rel': 'self'}, {'href': 'http://localhost/ports/147c80bf-65a3-435d-a4c1-4f2018a39b2d', 'rel': 'bookmark'}]}, {'uuid': '212ca323-f55f-468b-a279-4b1ffd4761f6', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/212ca323-f55f-468b-a279-4b1ffd4761f6', 'rel': 'self'}, {'href': 'http://localhost/ports/212ca323-f55f-468b-a279-4b1ffd4761f6', 'rel': 'bookmark'}]}, {'uuid': '3274164c-3d56-4009-9dba-a4eac5a169a0', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/3274164c-3d56-4009-9dba-a4eac5a169a0', 'rel': 'self'}, {'href': 'http://localhost/ports/3274164c-3d56-4009-9dba-a4eac5a169a0', 'rel': 'bookmark'}]}]} +GET: /v1/ports?sort_key=pxe_enabled {} +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_allowed +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_invalid +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_not_allowed +ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_not_allowed ... ok GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-78f1c892-303d-4bc8-a3fc-603edeb2ec15 +Openstack-Request-Id: req-b034deed-5fec-4ecc-8d38-302869ad2a5c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/node-39/traits {} +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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/723e6463-2dfc-4857-88eb-30a52c4aa46f [{'path': '/conductor', 'op': 'replace', 'value': 'why care'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-61487cb0-42cb-4cd2-9a7e-5d4ec62936f3 +Openstack-Request-Id: req-39235ef5-e5d0-4c7e-a1f5-3126b629e901 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/node-39/traits {'traits': ['CUSTOM_3', 'CUSTOM_TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT']} +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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/f5cd5f30-7112-4d60-8a68-6083d37e1755 [{'path': '/deploy_step', 'op': 'replace', 'value': 'deploy this'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-f62ab3fc-1686-4ec3-8b2e-a8f27fd36f2c +Openstack-Request-Id: req-145efb89-1761-4eda-a819-11e93bb4b3e7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/node-39/traits {'traits': ['CUSTOM_3']} -GOT:Response: 204 No Content -Openstack-Request-Id: req-dbd02ebd-bc4f-4ed5-9552-ee520564c80f +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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/768a9cb7-fa04-4853-9c5a-19851becc1a2 [{'path': '/name', 'op': 'replace', 'value': 'this-is-my-node'}] +GOT:Response: 409 Conflict +Content-Type: application/json +Openstack-Request-Id: req-e06fea39-d4a2-48d5-a8ad-7dac6266394d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.37 - -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/local_link_connection/network_type', 'value': 'unmanaged', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.5 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"this-is-my-node\", \"debuginfo\": null}"} +PATCH: /v1/nodes/b1c28485-fe95-4a86-bb45-9f3d08f9ff54 [{'path': '/fault', 'op': 'replace', 'value': 'why care'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-14802fa2-b911-457c-b386-48a002acacc9 +Openstack-Request-Id: req-f52f7dbb-a16f-400b-9f15-eac48af9fab6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.64 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:31:57.700329+00:00", "updated_at": "2024-01-06T13:31:57.990673+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/local_link_connection/network_type', 'value': 'unmanaged', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/name', 'op': 'remove'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3bb3ac76-e544-4206-87bc-6f760bcb25ff +Openstack-Request-Id: req-1a0040ec-9cf1-4779-94d0-a990f3f2a975 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo1', 'value': 'bar1', 'op': 'add'}, {'path': '/extra/foo2', 'value': 'bar2', 'op': 'add'}, {'path': '/extra/foo3', 'value': 'bar3', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.5 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:34.919661+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/name', 'op': 'replace', 'value': 'guido-van-rossum'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-97896460-f99d-49dd-8162-6dc8be89d277 +Openstack-Request-Id: req-86535076-327b-4fd5-803b-d0b3ea6265e8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:31:58.569064+00:00", "updated_at": "2024-01-06T13:31:58.768729+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'value': '1', 'op': 'add'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.5 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:35.243123+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/877c2a36-70f4-4cea-9251-690cbf35bc95 [{'path': '/description', 'value': 'foo', 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_extra +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_extra ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byaddress +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byaddress ... ok +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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?detail=True {} +GOT:{'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': None, 'enabled_network_interfaces': [], 'default_raid_interface': None, 'enabled_raid_interfaces': [], 'default_boot_interface': None, 'enabled_boot_interfaces': [], 'default_power_interface': None, 'enabled_power_interfaces': [], 'default_vendor_interface': None, 'enabled_vendor_interfaces': [], 'default_deploy_interface': 'direct', 'enabled_deploy_interfaces': ['direct', 'ansible'], 'default_console_interface': None, 'enabled_console_interfaces': [], 'default_inspect_interface': None, 'enabled_inspect_interfaces': [], 'default_management_interface': None, 'enabled_management_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': None, 'enabled_network_interfaces': [], 'default_raid_interface': None, 'enabled_raid_interfaces': [], 'default_boot_interface': None, 'enabled_boot_interfaces': [], 'default_power_interface': None, 'enabled_power_interfaces': [], 'default_vendor_interface': None, 'enabled_vendor_interfaces': [], 'default_deploy_interface': None, 'enabled_deploy_interfaces': [], 'default_console_interface': None, 'enabled_console_interfaces': [], 'default_inspect_interface': None, 'enabled_inspect_interfaces': [], 'default_management_interface': None, 'enabled_management_interfaces': []}]} +GET: /v1/drivers/fake-hardware-type {} +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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?detail=True {} +GOT:{'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_rescue_interface': None, 'enabled_rescue_interfaces': [], 'default_bios_interface': None, 'enabled_bios_interfaces': [], 'default_storage_interface': None, 'enabled_storage_interfaces': [], 'default_network_interface': None, 'enabled_network_interfaces': [], 'default_raid_interface': None, 'enabled_raid_interfaces': [], 'default_boot_interface': None, 'enabled_boot_interfaces': [], 'default_power_interface': None, 'enabled_power_interfaces': [], 'default_vendor_interface': None, 'enabled_vendor_interfaces': [], 'default_deploy_interface': 'direct', 'enabled_deploy_interfaces': ['direct', 'ansible'], 'default_console_interface': None, 'enabled_console_interfaces': [], 'default_inspect_interface': None, 'enabled_inspect_interfaces': [], 'default_management_interface': None, 'enabled_management_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_rescue_interface': None, 'enabled_rescue_interfaces': [], 'default_bios_interface': None, 'enabled_bios_interfaces': [], 'default_storage_interface': None, 'enabled_storage_interfaces': [], 'default_network_interface': None, 'enabled_network_interfaces': [], 'default_raid_interface': None, 'enabled_raid_interfaces': [], 'default_boot_interface': None, 'enabled_boot_interfaces': [], 'default_power_interface': None, 'enabled_power_interfaces': [], 'default_vendor_interface': None, 'enabled_vendor_interfaces': [], 'default_deploy_interface': None, 'enabled_deploy_interfaces': [], 'default_console_interface': None, 'enabled_console_interfaces': [], 'default_inspect_interface': None, 'enabled_inspect_interfaces': [], 'default_management_interface': None, 'enabled_management_interfaces': []}]} +GET: /v1/drivers/fake-hardware-type {} +GOT:{'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 {} +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic_detailed_storage_interface +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic_detailed_storage_interface ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_custom_fields_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_custom_fields_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_one_custom_fields +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_one_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_all_interface_fields_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_all_interface_fields_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byid +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byid ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_automated_clean_fields +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_automated_clean_fields ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_one_invalid_custom_fields +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_one_invalid_custom_fields ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8b2be8dd-2622-45f8-b5db-20f8eb72c36f +Openstack-Request-Id: req-8d091c9e-7474-4070-9401-b2ee839ff8f2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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\", \"debuginfo\": null}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "877c2a36-70f4-4cea-9251-690cbf35bc95", "created_at": "2024-01-06T14:10:35.638679+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, "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", "cpus": "8", "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/877c2a36-70f4-4cea-9251-690cbf35bc95", "rel": "self"}, {"href": "http://localhost/nodes/877c2a36-70f4-4cea-9251-690cbf35bc95", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/877c2a36-70f4-4cea-9251-690cbf35bc95/ports", "rel": "self"}, {"href": "http://localhost/nodes/877c2a36-70f4-4cea-9251-690cbf35bc95/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/877c2a36-70f4-4cea-9251-690cbf35bc95/states", "rel": "self"}, {"href": "http://localhost/nodes/877c2a36-70f4-4cea-9251-690cbf35bc95/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/877c2a36-70f4-4cea-9251-690cbf35bc95/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/877c2a36-70f4-4cea-9251-690cbf35bc95/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/877c2a36-70f4-4cea-9251-690cbf35bc95/volume", "rel": "self"}, {"href": "http://localhost/nodes/877c2a36-70f4-4cea-9251-690cbf35bc95/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/216fcea1-db38-40fb-b6ea-aa871eb0ff7e [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-58b8e3c1-17ad-4a74-96a6-7fca80d2d28a +Openstack-Request-Id: req-265613ff-884d-4b2e-90b3-3c9f471b7410 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:31:59.364859+00:00", "updated_at": null, "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'physnet1', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network_old_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network_old_api_version ... ok +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "216fcea1-db38-40fb-b6ea-aa871eb0ff7e", "created_at": "2024-01-06T14:10:35.966026+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, "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", "cpus": "8", "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/216fcea1-db38-40fb-b6ea-aa871eb0ff7e", "rel": "self"}, {"href": "http://localhost/nodes/216fcea1-db38-40fb-b6ea-aa871eb0ff7e", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/216fcea1-db38-40fb-b6ea-aa871eb0ff7e/ports", "rel": "self"}, {"href": "http://localhost/nodes/216fcea1-db38-40fb-b6ea-aa871eb0ff7e/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/216fcea1-db38-40fb-b6ea-aa871eb0ff7e/states", "rel": "self"}, {"href": "http://localhost/nodes/216fcea1-db38-40fb-b6ea-aa871eb0ff7e/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/216fcea1-db38-40fb-b6ea-aa871eb0ff7e/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/216fcea1-db38-40fb-b6ea-aa871eb0ff7e/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/216fcea1-db38-40fb-b6ea-aa871eb0ff7e/volume", "rel": "self"}, {"href": "http://localhost/nodes/216fcea1-db38-40fb-b6ea-aa871eb0ff7e/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/f699e30f-a1c2-42a3-9199-e294e02d567c [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}, {'path': '/instance_info/foo', 'value': 'bar', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_extra_and_instance_info +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_extra_and_instance_info ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_links +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_links ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname_not_existed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname_not_existed ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device_by_name +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device_by_name ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_and_extra +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_and_extra ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname_with_json +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname_with_json ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_links_public_url +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_links_public_url ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device_iface_not_supported ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device_iface_not_supported ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name_with_json -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name_with_json ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_valid -ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_valid ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network_upgrade -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network_upgrade ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_maintenance_mode -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_maintenance_mode ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test__update_changed_fields_lowers_conductor_group -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test__update_changed_fields_lowers_conductor_group ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_portgroup_uuid -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_portgroup_uuid ... ok -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:31:55.685779+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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'}]}]} +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_node_locked +ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_node_locked ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_cached +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_cached ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_bad_invalid_agent_status +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_bad_invalid_agent_status ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_heartbeat_rejects_different_callback_url +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_heartbeat_rejects_different_callback_url ... ok +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:34.893400+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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?detail=True&fields=name {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-9edd9b82-f895-458e-b13d-5074942472ec +Openstack-Request-Id: req-5d395738-b1c3-4978-bd75-7211168235e8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -9152,15 +9483,15 @@ GET: /v1/nodes?detail=True {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-ce98c9e8-c6a8-4087-a958-394612e41240 +Openstack-Request-Id: req-3fc2ecd5-16e0-49e8-91fa-4b3c2b130049 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} GET: /v1/nodes/detail?associated=true {} -GOT:{'nodes': [{'uuid': '5ae4f992-63dd-4004-ae45-2724c021a24c', 'created_at': '2024-01-06T13:31:57.191474+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': '6e537864-d6ae-490b-83ff-7b048def9687', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/5ae4f992-63dd-4004-ae45-2724c021a24c', 'rel': 'self'}, {'href': 'http://localhost/nodes/5ae4f992-63dd-4004-ae45-2724c021a24c', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/5ae4f992-63dd-4004-ae45-2724c021a24c/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/5ae4f992-63dd-4004-ae45-2724c021a24c/ports', 'rel': 'bookmark'}]}, {'uuid': '30609ede-311e-49d0-8c05-5f5473de5704', 'created_at': '2024-01-06T13:31:57.213506+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': '523518e0-96fc-4289-8530-07ea82644769', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/30609ede-311e-49d0-8c05-5f5473de5704', 'rel': 'self'}, {'href': 'http://localhost/nodes/30609ede-311e-49d0-8c05-5f5473de5704', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/30609ede-311e-49d0-8c05-5f5473de5704/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/30609ede-311e-49d0-8c05-5f5473de5704/ports', 'rel': 'bookmark'}]}, {'uuid': 'd51373bf-ce14-4621-bede-9aa2be38be0e', 'created_at': '2024-01-06T13:31:57.237862+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': '2f084206-ddbd-4408-8311-a1194dc5974e', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/d51373bf-ce14-4621-bede-9aa2be38be0e', 'rel': 'self'}, {'href': 'http://localhost/nodes/d51373bf-ce14-4621-bede-9aa2be38be0e', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/d51373bf-ce14-4621-bede-9aa2be38be0e/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/d51373bf-ce14-4621-bede-9aa2be38be0e/ports', 'rel': 'bookmark'}]}, {'uuid': '4eac33d0-d792-4951-8580-4e0c74bd0ef0', 'created_at': '2024-01-06T13:31:57.266305+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': '1e799101-9d10-47c9-a418-a2ee3aea5bef', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/4eac33d0-d792-4951-8580-4e0c74bd0ef0', 'rel': 'self'}, {'href': 'http://localhost/nodes/4eac33d0-d792-4951-8580-4e0c74bd0ef0', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/4eac33d0-d792-4951-8580-4e0c74bd0ef0/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/4eac33d0-d792-4951-8580-4e0c74bd0ef0/ports', 'rel': 'bookmark'}]}]} -GET: /v1/nodes/detail?instance_uuid=b47664a5-39fc-4a4b-aebd-9e07a15e19c4 {} -GOT:{'nodes': [{'uuid': '33a9c4a6-c68c-4622-b8e2-d5151cadaa1b', 'created_at': '2024-01-06T13:31:57.773681+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': 'b47664a5-39fc-4a4b-aebd-9e07a15e19c4', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/33a9c4a6-c68c-4622-b8e2-d5151cadaa1b', 'rel': 'self'}, {'href': 'http://localhost/nodes/33a9c4a6-c68c-4622-b8e2-d5151cadaa1b', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/33a9c4a6-c68c-4622-b8e2-d5151cadaa1b/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/33a9c4a6-c68c-4622-b8e2-d5151cadaa1b/ports', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '05da8eeb-7445-4e8d-8da9-5a6b372d7ce5', 'created_at': '2024-01-06T14:10:35.564738+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': 'd2612936-522d-4d1e-801c-f1ccc8c21f3a', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/05da8eeb-7445-4e8d-8da9-5a6b372d7ce5', 'rel': 'self'}, {'href': 'http://localhost/nodes/05da8eeb-7445-4e8d-8da9-5a6b372d7ce5', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/05da8eeb-7445-4e8d-8da9-5a6b372d7ce5/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/05da8eeb-7445-4e8d-8da9-5a6b372d7ce5/ports', 'rel': 'bookmark'}]}, {'uuid': '5a641173-f3fa-481d-ace3-7a6099e86111', 'created_at': '2024-01-06T14:10:35.583635+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': '58de5bad-c8a2-4c5a-b6bc-a7f22895bb69', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/5a641173-f3fa-481d-ace3-7a6099e86111', 'rel': 'self'}, {'href': 'http://localhost/nodes/5a641173-f3fa-481d-ace3-7a6099e86111', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/5a641173-f3fa-481d-ace3-7a6099e86111/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/5a641173-f3fa-481d-ace3-7a6099e86111/ports', 'rel': 'bookmark'}]}, {'uuid': '96d98300-43a2-45f2-9c97-2c5c0248ff5d', 'created_at': '2024-01-06T14:10:35.602805+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': '48d7b131-220f-4a32-88eb-979654f98055', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/96d98300-43a2-45f2-9c97-2c5c0248ff5d', 'rel': 'self'}, {'href': 'http://localhost/nodes/96d98300-43a2-45f2-9c97-2c5c0248ff5d', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/96d98300-43a2-45f2-9c97-2c5c0248ff5d/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/96d98300-43a2-45f2-9c97-2c5c0248ff5d/ports', 'rel': 'bookmark'}]}, {'uuid': 'b7a9c004-cde0-41e6-9a03-0a9a60bd48b2', 'created_at': '2024-01-06T14:10:35.627274+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': 'f0bcc5aa-20da-4895-8905-b83d5459ff7d', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/b7a9c004-cde0-41e6-9a03-0a9a60bd48b2', 'rel': 'self'}, {'href': 'http://localhost/nodes/b7a9c004-cde0-41e6-9a03-0a9a60bd48b2', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/b7a9c004-cde0-41e6-9a03-0a9a60bd48b2/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/b7a9c004-cde0-41e6-9a03-0a9a60bd48b2/ports', 'rel': 'bookmark'}]}]} +GET: /v1/nodes/detail?instance_uuid=b0e2a0af-0849-4342-8996-ae6ee4341eb0 {} +GOT:{'nodes': [{'uuid': 'ab96e45f-b401-44e9-b88c-ad0710e6bb1c', 'created_at': '2024-01-06T14:10:35.814474+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': 'b0e2a0af-0849-4342-8996-ae6ee4341eb0', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/ab96e45f-b401-44e9-b88c-ad0710e6bb1c', 'rel': 'self'}, {'href': 'http://localhost/nodes/ab96e45f-b401-44e9-b88c-ad0710e6bb1c', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/ab96e45f-b401-44e9-b88c-ad0710e6bb1c/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/ab96e45f-b401-44e9-b88c-ad0710e6bb1c/ports', 'rel': 'bookmark'}]}]} GET: /v1/nodes {} GOT:{'nodes': []} 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 {} @@ -9168,7 +9499,7 @@ 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 {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-568a535e-2815-489b-90ab-4075601bff14 +Openstack-Request-Id: req-8becbda5-5237-44ce-bbba-a07be387e3df X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 @@ -9182,7 +9513,7 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-1890aef4-484b-40da-9708-16d8e34c2e12 +Openstack-Request-Id: req-9303c7e4-d801-46c7-9ccd-38d1fd6e4899 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -9190,498 +9521,518 @@ GET: /v1/nodes?fields=uuid,instance_info {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_collection_custom_fields ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_collection_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_maintenance_mode_by_name -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_maintenance_mode_by_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test__update_changed_fields_remove_chassis_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test__update_changed_fields_remove_chassis_uuid ... ok +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-859e6cf3-6351-4b90-9611-dad2d1ec5c9f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "f699e30f-a1c2-42a3-9199-e294e02d567c", "created_at": "2024-01-06T14:10:36.300654+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, "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", "cpus": "8", "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/f699e30f-a1c2-42a3-9199-e294e02d567c", "rel": "self"}, {"href": "http://localhost/nodes/f699e30f-a1c2-42a3-9199-e294e02d567c", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f699e30f-a1c2-42a3-9199-e294e02d567c/ports", "rel": "self"}, {"href": "http://localhost/nodes/f699e30f-a1c2-42a3-9199-e294e02d567c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f699e30f-a1c2-42a3-9199-e294e02d567c/states", "rel": "self"}, {"href": "http://localhost/nodes/f699e30f-a1c2-42a3-9199-e294e02d567c/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f699e30f-a1c2-42a3-9199-e294e02d567c/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f699e30f-a1c2-42a3-9199-e294e02d567c/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f699e30f-a1c2-42a3-9199-e294e02d567c/volume", "rel": "self"}, {"href": "http://localhost/nodes/f699e30f-a1c2-42a3-9199-e294e02d567c/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/81cc4d4c-39a3-47c1-ba4c-58a58167a4a9 [{'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-5359e15f-8356-4fbe-af41-8410e26bc449 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "81cc4d4c-39a3-47c1-ba4c-58a58167a4a9", "created_at": "2024-01-06T14:10:36.642385+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, "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", "cpus": "8", "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/81cc4d4c-39a3-47c1-ba4c-58a58167a4a9", "rel": "self"}, {"href": "http://localhost/nodes/81cc4d4c-39a3-47c1-ba4c-58a58167a4a9", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/81cc4d4c-39a3-47c1-ba4c-58a58167a4a9/ports", "rel": "self"}, {"href": "http://localhost/nodes/81cc4d4c-39a3-47c1-ba4c-58a58167a4a9/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/81cc4d4c-39a3-47c1-ba4c-58a58167a4a9/states", "rel": "self"}, {"href": "http://localhost/nodes/81cc4d4c-39a3-47c1-ba4c-58a58167a4a9/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/81cc4d4c-39a3-47c1-ba4c-58a58167a4a9/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/81cc4d4c-39a3-47c1-ba4c-58a58167a4a9/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/81cc4d4c-39a3-47c1-ba4c-58a58167a4a9/volume", "rel": "self"}, {"href": "http://localhost/nodes/81cc4d4c-39a3-47c1-ba4c-58a58167a4a9/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/9458b669-7c5f-47e1-ab7a-fb88c111bd26 [{'path': '/description', 'value': 'foo', 'op': 'replace'}, {'path': '/instance_info/foo', 'value': 'bar', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_and_instance_info +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_and_instance_info ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_collection_fields_for_nova ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_collection_fields_for_nova ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_chassis_id -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_chassis_id ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_root -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_root ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found_by_name -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found_by_name ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_iface_not_supported +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_iface_not_supported ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_node_not_found +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_node_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_extra_instance_info +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_extra_instance_info ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok ... ok +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_older_version +ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_older_version ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_collection_pagination_no_uuid ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_collection_pagination_no_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_root_non_existent -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_root_non_existent ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_status_and_status +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_status_and_status ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_field ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_field ... ok -GOT:Response: 400 Bad Request +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_token +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_token ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_by_node_name +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_by_node_name ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_verify_ca +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_verify_ca ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4fb5a605-a56f-4d15-9a98-67a32046d82f +Openstack-Request-Id: req-df77ebf3-e2cb-42bb-b46d-f332612b8b52 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -POST: /v1/events {'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']}]} +{"uuid": "9458b669-7c5f-47e1-ab7a-fb88c111bd26", "created_at": "2024-01-06T14:10:36.958532+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, "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", "cpus": "8", "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/9458b669-7c5f-47e1-ab7a-fb88c111bd26", "rel": "self"}, {"href": "http://localhost/nodes/9458b669-7c5f-47e1-ab7a-fb88c111bd26", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/9458b669-7c5f-47e1-ab7a-fb88c111bd26/ports", "rel": "self"}, {"href": "http://localhost/nodes/9458b669-7c5f-47e1-ab7a-fb88c111bd26/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/9458b669-7c5f-47e1-ab7a-fb88c111bd26/states", "rel": "self"}, {"href": "http://localhost/nodes/9458b669-7c5f-47e1-ab7a-fb88c111bd26/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/9458b669-7c5f-47e1-ab7a-fb88c111bd26/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/9458b669-7c5f-47e1-ab7a-fb88c111bd26/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/9458b669-7c5f-47e1-ab7a-fb88c111bd26/volume", "rel": "self"}, {"href": "http://localhost/nodes/9458b669-7c5f-47e1-ab7a-fb88c111bd26/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/b9b9b918-36bc-4199-b886-7305618e9bb1 [{'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-1fcd6dd5-76f3-4682-8fbc-7dd7aa4793a3 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "b9b9b918-36bc-4199-b886-7305618e9bb1", "created_at": "2024-01-06T14:10:37.285524+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, "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", "cpus": "8", "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/b9b9b918-36bc-4199-b886-7305618e9bb1", "rel": "self"}, {"href": "http://localhost/nodes/b9b9b918-36bc-4199-b886-7305618e9bb1", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/b9b9b918-36bc-4199-b886-7305618e9bb1/ports", "rel": "self"}, {"href": "http://localhost/nodes/b9b9b918-36bc-4199-b886-7305618e9bb1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/b9b9b918-36bc-4199-b886-7305618e9bb1/states", "rel": "self"}, {"href": "http://localhost/nodes/b9b9b918-36bc-4199-b886-7305618e9bb1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/b9b9b918-36bc-4199-b886-7305618e9bb1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/b9b9b918-36bc-4199-b886-7305618e9bb1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/b9b9b918-36bc-4199-b886-7305618e9bb1/volume", "rel": "self"}, {"href": "http://localhost/nodes/b9b9b918-36bc-4199-b886-7305618e9bb1/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/9084cc74-bdd7-4c72-827d-c498cf1c78b3 [{'path': '/instance_info/foo', 'value': 'bar', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_instance_info +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_instance_info ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_field_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_field_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_conductor_unavailable +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_conductor_unavailable ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_group_fields +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_group_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_none +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_none ... ok +GOT:{'ports': [{'uuid': 'f6593242-113f-4662-bd30-d581531a50dc', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/f6593242-113f-4662-bd30-d581531a50dc', 'rel': 'self'}, {'href': 'http://localhost/ports/f6593242-113f-4662-bd30-d581531a50dc', 'rel': 'bookmark'}]}, {'uuid': '26ff71ee-5ba0-43e6-9cb7-c9e160f91e3a', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/26ff71ee-5ba0-43e6-9cb7-c9e160f91e3a', 'rel': 'self'}, {'href': 'http://localhost/ports/26ff71ee-5ba0-43e6-9cb7-c9e160f91e3a', 'rel': 'bookmark'}]}]} +GET: /v1/ports?sort_key=foo {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-e0e91ceb-f297-4e84-a49f-e28b8eb9ba34 +Openstack-Request-Id: req-43207ded-f1ba-425c-819c-8542975cf490 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['binding:vnic_type', 'SHOULD', 'BE', 'TEXT'] is not of type 'string', 'null'\", \"debuginfo\": null}"} -POST: /v1/events {'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'}]} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} +GET: /v1/ports?sort_key=extra {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-99ed0849-f366-4963-820a-644da94776c0 +Openstack-Request-Id: req-538adde9-c996-4474-acb1-5ef15ba92d23 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for device_id: DEVICE_ID_SHOULD_BE_UUID\", \"debuginfo\": null}"} -POST: /v1/events {'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'}]} +{"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 {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-265b774a-ea3f-4f40-a972-9b50129285ec +Openstack-Request-Id: req-ef9b18eb-a516-49ef-847d-b7acbe5418dc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for mac_address: INVALID_MAC_ADDRESS\", \"debuginfo\": null}"} -POST: /v1/events {'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'}]} +{"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 {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c61bc03b-0b68-4dca-9c9b-dce84456c528 +Openstack-Request-Id: req-5aee466e-d972-462e-8d89-041e2151b7aa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for port_id: PORT_ID_SHOULD_BE_UUID\", \"debuginfo\": null}"} -POST: /v1/events {'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'}]} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value local_link_connection is an invalid field for sorting\", \"debuginfo\": null}"} +GET: /v1/ports?sort_key=pxe_enabled {} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-97f5665b-db8e-4991-a1b6-4a4674863a2e +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +DELETE: /v1/portgroups/52:54:00:cf:2d:31 GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-6bb5f9e2-de62-48c5-8de0-980151068bb4 +{"error_message": "{\"code\": 400, \"title\": \"Bad Request\", \"description\": \"Expected UUID or name for portgroup: 52:54:00:cf:2d:31\"}"} +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GOT:Response: 204 No Content +Openstack-Request-Id: req-3bf9b9e8-cb41-41ec-83ff-6a8b8065700f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['status', 'SHOULD', 'BE', 'TEXT'] is not of type 'string'\", \"debuginfo\": null}"} -POST: /v1/events {'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'}]} + +DELETE: /v1/portgroups/pg.1 GOT:Response: 204 No Content -Openstack-Request-Id: req-6c0f240e-2bc7-4c64-ac65-9f4960463136 +Openstack-Request-Id: req-147e7103-1874-470d-ae24-8db8356b492f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -POST: /v1/events {'events': [{'event': 'network.unbind_port', 'UNKNOWN': 'EVENT_PROPERTY'}]} -GOT:Response: 400 Bad Request +DELETE: /v1/portgroups/blah +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-acf6120c-9a61-4b41-99dc-9f7e5340df16 +Openstack-Request-Id: req-5f2640fc-6539-4126-92bc-7facca06391e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'port_id' is a required property\", \"debuginfo\": null}"} -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup blah could not be found.\", \"debuginfo\": null}"} +DELETE: /v1/portgroups/pg.1.json +GOT:Response: 204 No Content +Openstack-Request-Id: req-f3fd1b92-bb3a-46d7-bc5a-2188152b6a4c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 + +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\": \"\"}"} +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-faeba97b-4bb9-4aa7-a075-448c7afcf975 +Openstack-Request-Id: req-648731aa-ca4f-4365-84de-a9489c4840ee X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GOT:Response: 204 No Content -Openstack-Request-Id: req-291ad870-ef2d-4b74-ac9e-53d2b401a3ff +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': '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-11e8146b-d54e-4af7-99a6-498bc8161c2f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 - -DELETE: /v1/nodes/foo.1 -GOT:Response: 204 No Content -Openstack-Request-Id: req-66efe4d0-2a4e-4121-9df0-80ebfe3057dd +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Agent status is invalid. Valid states are start,end,error.\", \"debuginfo\": null}"} +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url2'} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-18d30da5-d209-4f39-9b11-f8a6e90862e5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.5 - -DELETE: /v1/nodes/foo +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Detected change in ramdisk provided \\\"callback_url\\\"\", \"debuginfo\": null}"} +POST: /v1/heartbeat/b7b94ba9-1de3-4a1b-a8f9-4b8e1cad5938 {'callback_url': 'url'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1ffa6053-605b-4fd0-84f9-375310b48dac +Openstack-Request-Id: req-0ac33c16-a0e0-4fc8-ae31-94afafe71e9a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/nodes/foo.json -GOT:Response: 204 No Content -Openstack-Request-Id: req-aa252c3f-1c61-49d4-aa2a-965c2040d198 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node b7b94ba9-1de3-4a1b-a8f9-4b8e1cad5938 could not be found.\", \"debuginfo\": null}"} +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'x'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-5b87c88e-c13a-45d5-93c2-940ef5d9978f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.5 +X-Openstack-Ironic-Api-Version: 1.80 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_status': 'start', 'agent_status_message': 'woof', 'agent_verify_ca': 'abcdef1'} GOT:Response: 202 Accepted -Openstack-Request-Id: req-4fba4103-1e77-4ef1-8cfa-006786d8b9aa +Openstack-Request-Id: req-271491f6-e8c2-4c5b-85ac-2767ae94a3c1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 -DELETE: /v1/nodes/foo/maintenance +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'abcdef1'} GOT:Response: 202 Accepted -Openstack-Request-Id: req-dfa9b692-57ab-448a-89cd-b961e60cb811 +Openstack-Request-Id: req-65d914e4-51cf-4ab7-95e2-e88bd3be0cdd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.5 +X-Openstack-Ironic-Api-Version: 1.80 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-505f3b9f-e6a1-4060-9a21-3d9db418db76 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -DELETE: /v1/nodes/foo -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-8f9aedd3-bebd-49f0-9f29-63b1ee293b05 +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_verify_ca': 'abcdef1'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-b2014b32-6d21-49aa-b409-9ce6edd1fe9e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found_by_name_unsupported -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found_by_name_unsupported ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_chassis_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_chassis_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_empty_string -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_empty_string ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_field_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_field_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_portgroup_subresource -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_portgroup_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_non_text -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_non_text ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_ports_subresource -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_ports_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_group_fields -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_group_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_ports_subresource_no_port_id -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_ports_subresource_no_port_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_ok ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_too_long -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_too_long ... ok +X-Openstack-Ironic-Api-Version: 1.80 + +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_version': '1.4.1', 'agent_token': 'meow'} +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_version +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_invalid_vif_id +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_invalid_vif_id ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_group_fields_invalid_api_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_group_fields_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_connectors_subresource -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_connectors_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_portgroups_subresource_patch -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_portgroups_subresource_patch ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_by_name +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_by_name ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_no_vif_id +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_no_vif_id ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_portgroups_subresource +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_portgroups_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_with_json +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_with_json ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_connectors_subresource_no_connector_id -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_connectors_subresource_no_connector_id ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_node_locked +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_node_locked ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_ports_subresource +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_ports_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_API_agent_verify_ca_error +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_API_agent_verify_ca_error ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information_by_name ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information_by_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_root -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_root ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_network_type -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_network_type ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_targets_subresource -ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_targets_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_API_agent_version_error +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_API_agent_version_error ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_ports_subresource_no_port_id +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_ports_subresource_no_port_id ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information_console_disabled ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information_console_disabled ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_root_non_existent -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_root_non_existent ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_network_type_old_api -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_network_type_old_api ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information_not_supported -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information_not_supported ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_state_in_cleaning -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_state_in_cleaning ... ok -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-ccebc8a8-8866-4f6b-87de-ddc7ecb6d9b8 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.34 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:31:59.986762+00:00", "updated_at": "2024-01-06T13:32:00.173274+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'physnet1', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_api_agent_status_error +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_api_agent_status_error ... ok +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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?fields=name,hosts {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-87529f6d-358b-439b-9ae5-373a5552ecfb +Openstack-Request-Id: req-0bd53b31-82d4-48ab-9b17-e8ab4249c5a4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.33 +X-Openstack-Ironic-Api-Version: 1.76 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'physnet1', 'op': 'add'}] +GET: /v1/drivers/fake-hardware-type?fields=name,hosts {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-cefa828c-5a38-48ad-84d9-34aa06bb531f +Openstack-Request-Id: req-94a15ec3-6cf7-4a18-ad82-51c325c28578 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.34 +X-Openstack-Ironic-Api-Version: 1.76 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/portgroup_uuid', 'value': '34b4af79-0693-419d-8b05-7e1c7b270ad1', 'op': 'add'}] -GOT:Response: 200 OK +GET: /v1/drivers/fake-hardware-type?fields=name,hosts {} +GOT:{'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?fields=name,invalid {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-9cb55c54-4ac4-478b-9a96-4b693293ce4a +Openstack-Request-Id: req-576c6773-3c6b-4008-9ff9-517c93fa1119 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.24 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:01.105976+00:00", "updated_at": "2024-01-06T13:32:01.341360+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "34b4af79-0693-419d-8b05-7e1c7b270ad1"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/address', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.77 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"invalid\\\" are not valid\", \"debuginfo\": null}"} +GET: /v1/drivers/fake-hardware-type {} +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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 {} +GOT:{'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/raid/logical_disk_properties {} +GOT:{'foo': 'description of foo'} +GET: /v1/drivers/fake-hardware-type/raid/logical_disk_properties {} +GOT:{'foo': 'description of foo'} +GET: /v1/drivers/fake-hardware-type/raid/logical_disk_properties {} +GOT:{'foo': 'description of foo'} +GET: /v1/drivers/fake-hardware-type/raid/logical_disk_properties {} +GOT:{'foo': 'description of foo'} +GET: /v1/drivers/fake-hardware-type/raid/logical_disk_properties {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cd0c0e36-8a6f-4134-8cd0-bcc701773be5 +Openstack-Request-Id: req-a26afb57-c16b-4fdf-b5b0-fc97b16c6746 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:01.700513+00:00", "updated_at": "2024-01-06T13:32:01.910914+00:00", "address": "aa:bb:cc:dd:ee:ff", "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 400 Bad Request +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}"} +GET: /v1/drivers/fake-hardware-type/raid/logical_disk_properties {} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-82c55270-e511-4758-b038-07517435e911 +Openstack-Request-Id: req-54275f09-ea61-4504-a473-156934f2615d X-Openstack-Ironic-Api-Maximum-Version: 1.80 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\", \"debuginfo\": null}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': '', 'op': 'replace'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-3995e0a3-f0a6-4410-9b92-bc267ddb36c7 +X-Openstack-Ironic-Api-Version: 1.4 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'bd5af3df-2e82-4c6e-8966-bd9f28e8acf5'} +GOT:Response: 204 No Content +Openstack-Request-Id: req-8b0d0780-3f1b-4988-b609-a5649308eb3a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A non-empty value is required when setting physical_network\", \"debuginfo\": null}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 1234, 'op': 'replace'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-d464b310-ddbe-46db-a05d-40eadf472e73 +X-Openstack-Ironic-Api-Version: 1.28 + +POST: /v1/nodes/node-39/vifs {'id': '146e2623-e013-4689-b1ba-fea49239f3ab'} +GOT:Response: 204 No Content +Openstack-Request-Id: req-c1e04154-bd6a-4099-a418-fc8bfe821cbe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 1234 is not of type 'string', 'null'\", \"debuginfo\": null}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp', 'op': 'replace'}] +X-Openstack-Ironic-Api-Version: 1.28 + +POST: /v1/nodes/node-39/vifs {'id': '507a1804-5ff2-4cd5-a849-7e8a6519a7e1'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-58848747-b27a-4c58-b900-76bfbbe4459c +Openstack-Request-Id: req-879e2706-c191-4a61-85d0-20d957a39ec1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp' is too long\", \"debuginfo\": null}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/ffbb0ae9-b5f1-4941-a229-b407e68e47b9 [{'path': '/address', 'value': '00:00:00:00:00:00', 'op': 'replace'}] -GOT:Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.28 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"boom\", \"debuginfo\": null}"} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'invalid%id^'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-f8cdff0c-2a92-49de-a92a-a53f40a36e72 +Openstack-Request-Id: req-d3d51d0f-bfe1-4fe3-b576-17cd52f02af7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/62bc0725-9c94-4648-afe4-1547ca72c65b [{'path': '/local_link_connection/network_type', 'op': 'remove'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.28 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID or name for id: invalid%id^\", \"debuginfo\": null}"} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'bad_id': '0c4176a4-1039-417d-85ef-8c6db0a898d5'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-ffcdf591-5af1-4607-9c9f-b569759aaa2b +Openstack-Request-Id: req-69d1ec47-e4bc-494e-9f98-86d42200e714 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.64 -{"uuid": "62bc0725-9c94-4648-afe4-1547ca72c65b", "created_at": "2024-01-06T13:32:04.096680+00:00", "updated_at": "2024-01-06T13:32:04.263105+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, "links": [{"href": "http://localhost/v1/ports/62bc0725-9c94-4648-afe4-1547ca72c65b", "rel": "self"}, {"href": "http://localhost/ports/62bc0725-9c94-4648-afe4-1547ca72c65b", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/local_link_connection/network_type', 'op': 'remove'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.28 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for vif: 'id' is a required property\", \"debuginfo\": null}"} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'f0abb8b5-f2e2-496c-b3bb-5a97af76f1f1'} +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-78881aee-22df-453d-bbb4-9b74554352e8 +Openstack-Request-Id: req-ee8d6456-71ab-4318-b025-6ff3f1d7f8c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/local_link_connection/switch_id', 'op': 'remove'}] -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_old_api -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_old_api ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node ... ok +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}"} +POST: /v1/nodes/doesntexist/vifs {'id': 'bfd7419b-4031-42cd-8dfe-8b1c4374dc42'} +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_node_not_found +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_node_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_port_uuid_and_portgroup_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_port_uuid_and_portgroup_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_api_version +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information_not_supported +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information_not_supported ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_alloc_policy_and_retrieve_no_alloc_policy_not_found +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_alloc_policy_and_retrieve_no_alloc_policy_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_port_uuid_and_portgroup_uuid_old +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_port_uuid_and_portgroup_uuid_old ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_allocation_policy_and_retrieve_no_allocation +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_allocation_policy_and_retrieve_no_allocation ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_custom_fields_invalid_api_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_custom_fields_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_mandatory_field -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_mandatory_field ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_drive_console_enabled +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_drive_console_enabled ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_allocation_policy_and_retrieve_policy_not_found +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_allocation_policy_and_retrieve_policy_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_node_policy_and_retrieve +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_node_policy_and_retrieve ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_custom_fields_invalid_fields ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_custom_fields_invalid_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_description_field -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_description_field ... ok -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization {} -GOT:{'virtualization': {'created_at': '2024-01-06T13:31:58.164221+00:00', 'updated_at': None, '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'}]}} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_id', 'value': '1', 'op': 'add'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-236006e2-4453-43e9-94b4-99dac62322b9 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_uuid', 'value': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'op': 'add'}] -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-023cb40f-df66-4741-8fe6-bb538b56aeb9 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:02.159654+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_agent_token +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_agent_token ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_by_node_name +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_by_node_name ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-624dfff7-52bf-43de-808f-b2a8e9025408 +Openstack-Request-Id: req-5412e475-9ecd-4d4c-8cf0-616c3baaadc1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:02.893776+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "9084cc74-bdd7-4c72-827d-c498cf1c78b3", "created_at": "2024-01-06T14:10:37.690966+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", "cpus": "8", "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/9084cc74-bdd7-4c72-827d-c498cf1c78b3", "rel": "self"}, {"href": "http://localhost/nodes/9084cc74-bdd7-4c72-827d-c498cf1c78b3", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/9084cc74-bdd7-4c72-827d-c498cf1c78b3/ports", "rel": "self"}, {"href": "http://localhost/nodes/9084cc74-bdd7-4c72-827d-c498cf1c78b3/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/9084cc74-bdd7-4c72-827d-c498cf1c78b3/states", "rel": "self"}, {"href": "http://localhost/nodes/9084cc74-bdd7-4c72-827d-c498cf1c78b3/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/9084cc74-bdd7-4c72-827d-c498cf1c78b3/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/9084cc74-bdd7-4c72-827d-c498cf1c78b3/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/9084cc74-bdd7-4c72-827d-c498cf1c78b3/volume", "rel": "self"}, {"href": "http://localhost/nodes/9084cc74-bdd7-4c72-827d-c498cf1c78b3/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/b7fbeff9-53e9-4fd2-a6af-303625beed9a [] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f42dded3-0129-464d-8cce-1470d7f5e756 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:03.687971+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-f63a04ad-dd83-4527-9b3b-0b31af566909 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/a01fb2f0-7b51-433c-880a-001d5babbf29 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 409 Conflict -Content-Type: application/json -Openstack-Request-Id: req-36a3753a-b2e7-4dee-b07b-e2308b6c160a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node a01fb2f0-7b51-433c-880a-001d5babbf29 can not be updated while a state transition is in progress.\", \"debuginfo\": null}"} -PATCH: /v1/nodes/6bb0db18-4230-408e-9423-6cf0eb02dec6 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_state_in_deployfail -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_state_in_deployfail ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_multi -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_multi ... ok -DELETE: /v1/nodes/foo -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-7c97eca0-5b02-4e2a-9460-ed03075f5f06 +Openstack-Request-Id: req-0719da75-5994-4c6b-9fb1-e4a4cd0962ab X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "b7fbeff9-53e9-4fd2-a6af-303625beed9a", "created_at": "2024-01-06T14:10:38.008676+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", "cpus": "8", "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/b7fbeff9-53e9-4fd2-a6af-303625beed9a", "rel": "self"}, {"href": "http://localhost/nodes/b7fbeff9-53e9-4fd2-a6af-303625beed9a", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/b7fbeff9-53e9-4fd2-a6af-303625beed9a/ports", "rel": "self"}, {"href": "http://localhost/nodes/b7fbeff9-53e9-4fd2-a6af-303625beed9a/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/b7fbeff9-53e9-4fd2-a6af-303625beed9a/states", "rel": "self"}, {"href": "http://localhost/nodes/b7fbeff9-53e9-4fd2-a6af-303625beed9a/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/b7fbeff9-53e9-4fd2-a6af-303625beed9a/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/b7fbeff9-53e9-4fd2-a6af-303625beed9a/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/b7fbeff9-53e9-4fd2-a6af-303625beed9a/volume", "rel": "self"}, {"href": "http://localhost/nodes/b7fbeff9-53e9-4fd2-a6af-303625beed9a/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/9bb50f13-0b8d-4ade-ad2d-d91fefdef9ff [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5030b040-2290-4f49-8720-60a2e693618f +Openstack-Request-Id: req-cc45556a-b4cf-4e6a-b2d6-6f36918af46f X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/9bb50f13-0b8d-4ade-ad2d-d91fefdef9cc [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-dab7f605-b7ef-4dfa-b7f2-2f457fe7f62a +Openstack-Request-Id: req-f10baac7-54e2-40fd-9cf3-6199137ec2e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-6771f832-4e4e-44d0-92b5-a03b9c45769c +Openstack-Request-Id: req-6e7e1214-76ee-4cb7-8f43-96917668632f X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -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-18c4dddd-d6e1-45fb-b90e-52b76a7c4e2e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-0cc20b05-f935-4428-a763-2854b6ba4248 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Missing mandatory parameter: connector_uuid\", \"debuginfo\": null}"} -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-8c0e0b4a-f341-4fc3-bd8e-0a98afb6b803 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -GOT:Response: 201 Created +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/driver', 'value': 'foo', 'op': 'add'}] +GOT:Response: 409 Conflict Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-53d56d6f-0231-40d3-a8aa-44609aaaa261 +Openstack-Request-Id: req-51c60eed-7e1c-43e3-8761-518fb10b9432 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'automated_clean': True, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_automated_clean -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_automated_clean ... ok +{"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}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/name', 'op': 'add', 'value': 'Windows ME'}, {'path': '/name', 'op': 'replace', 'value': 'Guido Van Error'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_name_twice_both_invalid +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_name_twice_both_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_configdrive_vendor_data +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_configdrive_vendor_data ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_name_twice_second_invalid +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_name_twice_second_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_node_locked +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_node_locked ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_description_field +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_description_field ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_deploy_steps +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_deploy_steps ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_deploy_templates +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_deploy_templates ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_node_not_found +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_node_not_found ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_indicator_state ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_indicator_state ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_empty_invalid -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_empty_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_node_id -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_node_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_automated_clean_old_api_version -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_automated_clean_old_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_connectors_subresource +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_connectors_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_dynamic_drivers +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_dynamic_drivers ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_inject_nmi +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_inject_nmi ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_list +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_list ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_inspect_abort +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_inspect_abort ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_indicator_state_iface_not_supported ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_indicator_state_iface_not_supported ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_empty_not_acceptable -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_empty_not_acceptable ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_non_existent_property_fail -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_non_existent_property_fail ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_connectors_subresource_no_connector_id +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_connectors_subresource_no_connector_id ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_links_node_states_and_driver_properties +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_links_node_states_and_driver_properties ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_subcontroller_old_version +ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_subcontroller_old_version ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_node_rebuild_with_configdrive +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_node_rebuild_with_configdrive ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_indicator_state_versioning ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_indicator_state_versioning ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_invalid -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_advanced_net_fields +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_advanced_net_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_targets_subresource +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_targets_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_internal_info +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_internal_info ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_is_smartnic +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_is_smartnic ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_lessee_field ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_lessee_field ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network ... ok -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-63a6b900-ab8d-4de1-b1ae-8fdb1ae11137 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:05.884184+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, "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", "cpus": "8", "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, "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:05.884184+00:00', 'updated_at': None, 'automated_clean': True, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': None, 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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-ff0f1350-7e9f-4ebd-8385-b2b4434c7b18 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': None} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_chassis_uuid_always_in_response -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_chassis_uuid_always_in_response ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network_old_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network_old_api_version ... ok -GOT:{'nodes': [{'uuid': 'be46d28a-124b-483b-8186-17ae1f074efb', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'links': [{'href': 'http://localhost/v1/nodes/be46d28a-124b-483b-8186-17ae1f074efb', 'rel': 'self'}, {'href': 'http://localhost/nodes/be46d28a-124b-483b-8186-17ae1f074efb', 'rel': 'bookmark'}]}, {'uuid': 'c67e8df4-5d08-4a40-aaed-6afaf33e7c0c', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'links': [{'href': 'http://localhost/v1/nodes/c67e8df4-5d08-4a40-aaed-6afaf33e7c0c', 'rel': 'self'}, {'href': 'http://localhost/nodes/c67e8df4-5d08-4a40-aaed-6afaf33e7c0c', 'rel': 'bookmark'}]}, {'uuid': 'f50ca6a1-9f24-47a9-8615-c5def5c546e1', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'links': [{'href': 'http://localhost/v1/nodes/f50ca6a1-9f24-47a9-8615-c5def5c546e1', 'rel': 'self'}, {'href': 'http://localhost/nodes/f50ca6a1-9f24-47a9-8615-c5def5c546e1', 'rel': 'bookmark'}]}]} +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_id +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_id ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_physical_network_no_pin +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_physical_network_no_pin ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_physical_network_pin +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_physical_network_pin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_detail_false +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_detail_false ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroup_mode_properties +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroup_mode_properties ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroups +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroups ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_detail_old_version +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_detail_old_version ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroups_subcontrollers +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroups_subcontrollers ... ok +GOT:{'nodes': [{'uuid': 'a5832a0b-246f-4e34-8841-d4b01f8028ad', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'links': [{'href': 'http://localhost/v1/nodes/a5832a0b-246f-4e34-8841-d4b01f8028ad', 'rel': 'self'}, {'href': 'http://localhost/nodes/a5832a0b-246f-4e34-8841-d4b01f8028ad', 'rel': 'bookmark'}]}, {'uuid': '56add374-8522-44d6-b791-fef2a0ebb688', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'links': [{'href': 'http://localhost/v1/nodes/56add374-8522-44d6-b791-fef2a0ebb688', 'rel': 'self'}, {'href': 'http://localhost/nodes/56add374-8522-44d6-b791-fef2a0ebb688', 'rel': 'bookmark'}]}, {'uuid': '3b42d822-6f49-41a5-8f9e-7ee95e434a45', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'links': [{'href': 'http://localhost/v1/nodes/3b42d822-6f49-41a5-8f9e-7ee95e434a45', 'rel': 'self'}, {'href': 'http://localhost/nodes/3b42d822-6f49-41a5-8f9e-7ee95e434a45', 'rel': 'bookmark'}]}]} GET: /v1/nodes?fields=uuid,power_state,target_power_state,provision_state,target_provision_state,last_error,maintenance,instance_uuid,traits,resource_class {} -GOT:{'nodes': [{'uuid': '17d599d0-59da-4b97-8817-08bf8cf5cd1a', 'power_state': None, 'target_power_state': None, 'provision_state': 'available', 'target_provision_state': None, 'last_error': None, 'maintenance': False, 'instance_uuid': 'df887356-9aaa-4969-8a16-408ca1e700af', 'traits': ['CUSTOM_RAID5', 'CUSTOM_TRAIT1'], 'resource_class': None, 'links': [{'href': 'http://localhost/v1/nodes/17d599d0-59da-4b97-8817-08bf8cf5cd1a', 'rel': 'self'}, {'href': 'http://localhost/nodes/17d599d0-59da-4b97-8817-08bf8cf5cd1a', 'rel': 'bookmark'}]}, {'uuid': '0be062f6-e1e4-474f-b96c-a2f8e44f133d', 'power_state': None, 'target_power_state': None, 'provision_state': 'available', 'target_provision_state': None, 'last_error': None, 'maintenance': False, 'instance_uuid': '59208f0f-13f6-4c09-8ec8-ba3c1c0c8c59', 'traits': ['CUSTOM_RAID5', 'CUSTOM_TRAIT1'], 'resource_class': None, 'links': [{'href': 'http://localhost/v1/nodes/0be062f6-e1e4-474f-b96c-a2f8e44f133d', 'rel': 'self'}, {'href': 'http://localhost/nodes/0be062f6-e1e4-474f-b96c-a2f8e44f133d', 'rel': 'bookmark'}]}, {'uuid': '320de309-a865-473d-a53b-3afcc30060ab', 'power_state': None, 'target_power_state': None, 'provision_state': 'available', 'target_provision_state': None, 'last_error': None, 'maintenance': False, 'instance_uuid': '332c1425-2640-4eae-b621-6e3dcdb90c06', 'traits': ['CUSTOM_RAID5', 'CUSTOM_TRAIT1'], 'resource_class': None, 'links': [{'href': 'http://localhost/v1/nodes/320de309-a865-473d-a53b-3afcc30060ab', 'rel': 'self'}, {'href': 'http://localhost/nodes/320de309-a865-473d-a53b-3afcc30060ab', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'a5244d58-93ac-46e1-8bba-72815233d369', 'power_state': None, 'target_power_state': None, 'provision_state': 'available', 'target_provision_state': None, 'last_error': None, 'maintenance': False, 'instance_uuid': '9372cca8-8f35-4c33-b1ce-19152ec3d8ee', 'traits': ['CUSTOM_RAID5', 'CUSTOM_TRAIT1'], 'resource_class': None, 'links': [{'href': 'http://localhost/v1/nodes/a5244d58-93ac-46e1-8bba-72815233d369', 'rel': 'self'}, {'href': 'http://localhost/nodes/a5244d58-93ac-46e1-8bba-72815233d369', 'rel': 'bookmark'}]}, {'uuid': '4b616abf-cd64-4214-9cbd-8ee2415ea737', 'power_state': None, 'target_power_state': None, 'provision_state': 'available', 'target_provision_state': None, 'last_error': None, 'maintenance': False, 'instance_uuid': 'a3187a8b-47f2-40b5-b0a6-af11ce0830cf', 'traits': ['CUSTOM_RAID5', 'CUSTOM_TRAIT1'], 'resource_class': None, 'links': [{'href': 'http://localhost/v1/nodes/4b616abf-cd64-4214-9cbd-8ee2415ea737', 'rel': 'self'}, {'href': 'http://localhost/nodes/4b616abf-cd64-4214-9cbd-8ee2415ea737', 'rel': 'bookmark'}]}, {'uuid': '55c4dcd7-87bb-4c4c-8e72-9e6ede3ae8e3', 'power_state': None, 'target_power_state': None, 'provision_state': 'available', 'target_provision_state': None, 'last_error': None, 'maintenance': False, 'instance_uuid': '08ff72c4-1dbb-407f-a3c2-f04202d5d679', 'traits': ['CUSTOM_RAID5', 'CUSTOM_TRAIT1'], 'resource_class': None, 'links': [{'href': 'http://localhost/v1/nodes/55c4dcd7-87bb-4c4c-8e72-9e6ede3ae8e3', 'rel': 'self'}, {'href': 'http://localhost/nodes/55c4dcd7-87bb-4c4c-8e72-9e6ede3ae8e3', 'rel': 'bookmark'}]}]} GET: /v1/nodes?fields=name&limit=2 {} -GOT:{'nodes': [{'name': None, 'links': [{'href': 'http://localhost/v1/nodes/0a83257e-988d-4cec-b73b-3ff97c3c0a1b', 'rel': 'self'}, {'href': 'http://localhost/nodes/0a83257e-988d-4cec-b73b-3ff97c3c0a1b', 'rel': 'bookmark'}]}, {'name': None, 'links': [{'href': 'http://localhost/v1/nodes/d304196c-fcd2-4aeb-a121-5f524dfd0968', 'rel': 'self'}, {'href': 'http://localhost/nodes/d304196c-fcd2-4aeb-a121-5f524dfd0968', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/nodes?sort_key=id&sort_dir=asc&fields=name&limit=2&marker=d304196c-fcd2-4aeb-a121-5f524dfd0968'} +GOT:{'nodes': [{'name': None, 'links': [{'href': 'http://localhost/v1/nodes/e652b75c-ac0e-42a1-835f-59d920e29699', 'rel': 'self'}, {'href': 'http://localhost/nodes/e652b75c-ac0e-42a1-835f-59d920e29699', 'rel': 'bookmark'}]}, {'name': None, 'links': [{'href': 'http://localhost/v1/nodes/08362741-67b7-4bd4-940a-1baf2ed5c059', 'rel': 'self'}, {'href': 'http://localhost/nodes/08362741-67b7-4bd4-940a-1baf2ed5c059', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/nodes?sort_key=id&sort_dir=asc&fields=name&limit=2&marker=08362741-67b7-4bd4-940a-1baf2ed5c059'} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=conductor {} GOT:{'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'} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=conductor {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-d339c2e5-8df3-4c99-9caf-89ad7ec8fc6b +Openstack-Request-Id: req-3a1fd124-e469-4591-96d5-1941c6d79d62 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 @@ -9691,7 +10042,7 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=conductor_group {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-e366fe26-9580-4def-aa1b-81a2910078b8 +Openstack-Request-Id: req-a72cd8f2-401e-436c-b52b-60381ae966b1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.45 @@ -9705,7 +10056,7 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-70a1764c-6991-4743-8330-052388dcc5bf +Openstack-Request-Id: req-e6877f80-95f8-4ffc-89ec-e23bc9a75b01 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -9713,7 +10064,7 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=uuid,extra {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-b2e59893-3da5-4443-bfd5-1d9b2411a7b1 +Openstack-Request-Id: req-4c7b0b57-b901-4c66-8f76-a09a8230d093 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -9721,7 +10072,7 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=uuid,spongebob {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-20d61fa5-5ee9-4622-abf4-b006a3516f88 +Openstack-Request-Id: req-20a4e5a7-6263-4126-a7c0-451b29d5bed6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -9733,7 +10084,7 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-88c8c935-b642-48b2-bb5f-b1e694d1fa90 +Openstack-Request-Id: req-f0b3b007-f63e-481b-94da-c79f19b5e595 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -9747,150 +10098,55 @@ ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_network_interface_fields ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_network_interface_fields_invalid_api_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_network_interface_fields_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_ok ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_chassis_uuid_not_found -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_chassis_uuid_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network_upgrade -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network_upgrade ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_ramdisk_endpoints +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_ramdisk_endpoints ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_fails_with_bad_version +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_fails_with_bad_version ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_remove_chassis_uuid +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_remove_chassis_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_rescue_interface +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_rescue_interface ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_uuid -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_reserved -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_reserved ... ok -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-20bc89f4-3ad0-4069-bac0-c0776a72a7b8 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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 {'uuid': '0529a035-9f15-4919-a2d5-59b2466418d8', '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', 'cpus': '8', '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/0529a035-9f15-4919-a2d5-59b2466418d8 -Openstack-Request-Id: req-9ea2457b-38d5-4659-9457-ddef1dbcab26 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "0529a035-9f15-4919-a2d5-59b2466418d8", "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", "cpus": "8", "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/0529a035-9f15-4919-a2d5-59b2466418d8", "rel": "self"}, {"href": "http://localhost/nodes/0529a035-9f15-4919-a2d5-59b2466418d8", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/0529a035-9f15-4919-a2d5-59b2466418d8/ports", "rel": "self"}, {"href": "http://localhost/nodes/0529a035-9f15-4919-a2d5-59b2466418d8/ports", "rel": "bookmark"}]} -GET: /v1/nodes/0529a035-9f15-4919-a2d5-59b2466418d8 {} -GOT:{'uuid': '0529a035-9f15-4919-a2d5-59b2466418d8', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/0529a035-9f15-4919-a2d5-59b2466418d8', 'rel': 'self'}, {'href': 'http://localhost/nodes/0529a035-9f15-4919-a2d5-59b2466418d8', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/0529a035-9f15-4919-a2d5-59b2466418d8/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/0529a035-9f15-4919-a2d5-59b2466418d8/ports', 'rel': 'bookmark'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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-19494548-7671-4161-a8a3-83683a0a3cec -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_default_state_enroll -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_default_state_enroll ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_address_already_exist -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_address_already_exist ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_storage_interface +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_storage_interface ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_with_detail +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_with_detail ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_traits +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_traits ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_volume +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_volume ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_detail_and_fields +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_detail_and_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_uuid_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_uuid_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_abort_verbs +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_abort_verbs ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_abort_verbs_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_abort_verbs_fail ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_group ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_group ... ok -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-af2b09da-2cf6-4395-a805-c866f30f28c2 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "6bb0db18-4230-408e-9423-6cf0eb02dec6", "created_at": "2024-01-06T13:32:05.485591+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", "cpus": "8", "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/6bb0db18-4230-408e-9423-6cf0eb02dec6", "rel": "self"}, {"href": "http://localhost/nodes/6bb0db18-4230-408e-9423-6cf0eb02dec6", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/6bb0db18-4230-408e-9423-6cf0eb02dec6/ports", "rel": "self"}, {"href": "http://localhost/nodes/6bb0db18-4230-408e-9423-6cf0eb02dec6/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/deadbeef-0000-1111-2222-333333333333 [{'path': '/name', 'op': 'add', 'value': ''}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-1a118560-d683-4681-934d-254b6159f626 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -PATCH: /v1/nodes/deadbeef-0000-1111-2222-333333333333 [{'path': '/name', 'op': 'add', 'value': ''}] -GOT:Response: 406 Not Acceptable -Content-Type: application/json -Openstack-Request-Id: req-400cd538-a98c-4048-8222-71b00ba0170c -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -PATCH: /v1/nodes/deadbeef-0000-1111-2222-333333333333 [{'path': '/name', 'op': 'add', 'value': 'i am invalid'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-d06bcee3-795d-43fb-9d1e-f00d0e859eb1 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -PATCH: /v1/nodes/deadbeef-0000-1111-2222-333333333333 [{'path': '/name', 'op': 'add', 'value': 'guido-van-rossum'}] -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-7f90b9a3-7055-4676-919f-6a08101e1d60 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.5 -{"uuid": "deadbeef-0000-1111-2222-333333333333", "created_at": "2024-01-06T13:32:07.510317+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/deadbeef-0000-1111-2222-333333333333 [{'path': '/name', 'op': 'add', 'value': 'maintenance'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-b2379bb5-a7a0-4355-8538-2b161e02b2e2 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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 [{'path': '/name', 'op': 'add', 'value': 'management'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-38b5efd1-b954-4161-851e-8b4bdf3987df -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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 [{'path': '/name', 'op': 'add', 'value': 'states'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-82c2943b-1be7-485a-a647-482cc2f3e966 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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 [{'path': '/name', 'op': 'add', 'value': 'vendor_passthru'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-90f90fc5-b66c-40d7-a22d-ef5733f579e4 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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 [{'path': '/name', 'op': 'add', 'value': 'detail'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-79966afb-2a03-462f-b56e-028efadfb6fe -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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 [{'path': '/name', 'op': 'add', 'value': 'validate'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-ac578202-438a-4cbe-841d-a83efc8075ff -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_replace_invalid -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_replace_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_local_link_connection -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_local_link_connection ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_fields +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_fields ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_adopt_verbs +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_adopt_verbs ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_internal_field +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_internal_field ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_adopt_verbs_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_adopt_verbs_fail ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_clean_verbs +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_clean_verbs ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_fields_old_version +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_fields_old_version ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_clean_verbs_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_clean_verbs_fail ... ok GOT:{'network_interface': None, '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/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=network_interface {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-9f3017b6-efa4-431d-a8d1-d15313be2c0e +Openstack-Request-Id: req-84e17972-beb6-48dc-ac06-35ea79d04241 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.19 @@ -9898,21 +10154,21 @@ GET: /v1/nodes?conductor=rocky.rocks {} GOT:{'nodes': []} GET: /v1/nodes?conductor=fake.conductor {} -GOT:{'nodes': [{'uuid': '653151d8-58d9-408b-a09e-a2f9f7bcfa3c', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/653151d8-58d9-408b-a09e-a2f9f7bcfa3c', 'rel': 'self'}, {'href': 'http://localhost/nodes/653151d8-58d9-408b-a09e-a2f9f7bcfa3c', 'rel': 'bookmark'}]}, {'uuid': 'e195a77b-d0ad-468a-b5f5-7662cb243458', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/e195a77b-d0ad-468a-b5f5-7662cb243458', 'rel': 'self'}, {'href': 'http://localhost/nodes/e195a77b-d0ad-468a-b5f5-7662cb243458', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'a8ccbc4a-af52-415f-b2e7-f6136cbf57ac', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/a8ccbc4a-af52-415f-b2e7-f6136cbf57ac', 'rel': 'self'}, {'href': 'http://localhost/nodes/a8ccbc4a-af52-415f-b2e7-f6136cbf57ac', 'rel': 'bookmark'}]}, {'uuid': '54103426-ce41-4b29-af40-5a3035aba8e4', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/54103426-ce41-4b29-af40-5a3035aba8e4', 'rel': 'self'}, {'href': 'http://localhost/nodes/54103426-ce41-4b29-af40-5a3035aba8e4', 'rel': 'bookmark'}]}]} GET: /v1/nodes?conductor=fake.conductor {} -GOT:{'nodes': [{'uuid': 'e195a77b-d0ad-468a-b5f5-7662cb243458', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/e195a77b-d0ad-468a-b5f5-7662cb243458', 'rel': 'self'}, {'href': 'http://localhost/nodes/e195a77b-d0ad-468a-b5f5-7662cb243458', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '54103426-ce41-4b29-af40-5a3035aba8e4', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/54103426-ce41-4b29-af40-5a3035aba8e4', 'rel': 'self'}, {'href': 'http://localhost/nodes/54103426-ce41-4b29-af40-5a3035aba8e4', 'rel': 'bookmark'}]}]} GET: /v1/nodes?conductor_group=group1 {} -GOT:{'nodes': [{'uuid': 'af8761e7-91fe-4e35-bcd3-4361fc25a0bd', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/af8761e7-91fe-4e35-bcd3-4361fc25a0bd', 'rel': 'self'}, {'href': 'http://localhost/nodes/af8761e7-91fe-4e35-bcd3-4361fc25a0bd', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'c3f46aa0-fa51-4d39-afd7-db7318f4ba33', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/c3f46aa0-fa51-4d39-afd7-db7318f4ba33', 'rel': 'self'}, {'href': 'http://localhost/nodes/c3f46aa0-fa51-4d39-afd7-db7318f4ba33', 'rel': 'bookmark'}]}]} GET: /v1/nodes?conductor_group=group2 {} -GOT:{'nodes': [{'uuid': '0c4f0ca0-72c1-431b-baa6-fd93f3b014b3', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/0c4f0ca0-72c1-431b-baa6-fd93f3b014b3', 'rel': 'self'}, {'href': 'http://localhost/nodes/0c4f0ca0-72c1-431b-baa6-fd93f3b014b3', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '2abb2f0d-c32a-4a91-87a1-ad2f92e2747e', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/2abb2f0d-c32a-4a91-87a1-ad2f92e2747e', 'rel': 'self'}, {'href': 'http://localhost/nodes/2abb2f0d-c32a-4a91-87a1-ad2f92e2747e', 'rel': 'bookmark'}]}]} GET: /v1/nodes/detail?conductor_group=group1 {} -GOT:{'nodes': [{'uuid': 'af8761e7-91fe-4e35-bcd3-4361fc25a0bd', 'created_at': '2024-01-06T13:32:09.000795+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': 'group1', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/af8761e7-91fe-4e35-bcd3-4361fc25a0bd', 'rel': 'self'}, {'href': 'http://localhost/nodes/af8761e7-91fe-4e35-bcd3-4361fc25a0bd', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/af8761e7-91fe-4e35-bcd3-4361fc25a0bd/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/af8761e7-91fe-4e35-bcd3-4361fc25a0bd/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/af8761e7-91fe-4e35-bcd3-4361fc25a0bd/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/af8761e7-91fe-4e35-bcd3-4361fc25a0bd/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/af8761e7-91fe-4e35-bcd3-4361fc25a0bd/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/af8761e7-91fe-4e35-bcd3-4361fc25a0bd/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/af8761e7-91fe-4e35-bcd3-4361fc25a0bd/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/af8761e7-91fe-4e35-bcd3-4361fc25a0bd/volume', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'c3f46aa0-fa51-4d39-afd7-db7318f4ba33', 'created_at': '2024-01-06T14:10:40.606860+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': 'group1', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/c3f46aa0-fa51-4d39-afd7-db7318f4ba33', 'rel': 'self'}, {'href': 'http://localhost/nodes/c3f46aa0-fa51-4d39-afd7-db7318f4ba33', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/c3f46aa0-fa51-4d39-afd7-db7318f4ba33/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/c3f46aa0-fa51-4d39-afd7-db7318f4ba33/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/c3f46aa0-fa51-4d39-afd7-db7318f4ba33/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/c3f46aa0-fa51-4d39-afd7-db7318f4ba33/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/c3f46aa0-fa51-4d39-afd7-db7318f4ba33/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/c3f46aa0-fa51-4d39-afd7-db7318f4ba33/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/c3f46aa0-fa51-4d39-afd7-db7318f4ba33/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/c3f46aa0-fa51-4d39-afd7-db7318f4ba33/volume', 'rel': 'bookmark'}]}]} GET: /v1/nodes/detail?conductor_group=group2 {} -GOT:{'nodes': [{'uuid': '0c4f0ca0-72c1-431b-baa6-fd93f3b014b3', 'created_at': '2024-01-06T13:32:09.035828+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': 'group2', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/0c4f0ca0-72c1-431b-baa6-fd93f3b014b3', 'rel': 'self'}, {'href': 'http://localhost/nodes/0c4f0ca0-72c1-431b-baa6-fd93f3b014b3', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/0c4f0ca0-72c1-431b-baa6-fd93f3b014b3/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/0c4f0ca0-72c1-431b-baa6-fd93f3b014b3/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/0c4f0ca0-72c1-431b-baa6-fd93f3b014b3/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/0c4f0ca0-72c1-431b-baa6-fd93f3b014b3/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/0c4f0ca0-72c1-431b-baa6-fd93f3b014b3/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/0c4f0ca0-72c1-431b-baa6-fd93f3b014b3/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/0c4f0ca0-72c1-431b-baa6-fd93f3b014b3/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/0c4f0ca0-72c1-431b-baa6-fd93f3b014b3/volume', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '2abb2f0d-c32a-4a91-87a1-ad2f92e2747e', 'created_at': '2024-01-06T14:10:40.618022+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': 'group2', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/2abb2f0d-c32a-4a91-87a1-ad2f92e2747e', 'rel': 'self'}, {'href': 'http://localhost/nodes/2abb2f0d-c32a-4a91-87a1-ad2f92e2747e', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/2abb2f0d-c32a-4a91-87a1-ad2f92e2747e/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/2abb2f0d-c32a-4a91-87a1-ad2f92e2747e/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/2abb2f0d-c32a-4a91-87a1-ad2f92e2747e/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/2abb2f0d-c32a-4a91-87a1-ad2f92e2747e/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/2abb2f0d-c32a-4a91-87a1-ad2f92e2747e/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/2abb2f0d-c32a-4a91-87a1-ad2f92e2747e/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/2abb2f0d-c32a-4a91-87a1-ad2f92e2747e/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/2abb2f0d-c32a-4a91-87a1-ad2f92e2747e/volume', 'rel': 'bookmark'}]}]} GET: /v1/nodes?conductor_group=group1 {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-17c838a7-994c-4dc0-bfa4-2b5c26874663 +Openstack-Request-Id: req-4f90554a-d3ad-4741-a0a5-2d5492d31f2c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.45 @@ -9920,204 +10176,258 @@ GET: /v1/nodes/detail?conductor_group=group1 {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_group_not_allowed ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_group_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_allocation_forbidden -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_allocation_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_default_state_none -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_default_state_none ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_allocation_uuid_forbidden -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_allocation_uuid_forbidden ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_no_valid_host ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_no_valid_host ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_not_allowed ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_not_allowed ... ok -GOT:Response: 406 Not Acceptable +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_mandatory_field +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_mandatory_field ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_as_dict +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_as_dict ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_fails_if_not_found +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_fails_if_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_as_dict_invalid +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_as_dict_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_description +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_description ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_fails +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_fails ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_vendor_data_failed +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_vendor_data_failed ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_empty +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_empty ... ok +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-7bb707d4-9ffa-4f37-8c88-b8cfae1c4f8b +Openstack-Request-Id: req-cce3b1f2-0f39-4f83-83ad-31db4b6b5bb1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/address', 'op': 'remove'}] +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}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'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-b0346400-9ee6-4276-8154-e65c692c9673 +Openstack-Request-Id: req-c4cc7ba7-a573-42d4-956f-9b17a58bfdf0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo1', 'op': 'remove'}] -GOT:Response: 200 OK +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}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ba5615bc-ef9c-4cff-847a-5cb696a964eb +Openstack-Request-Id: req-50e9ad5b-a0df-41fd-ba3e-51bae3160e2b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:05.766524+00:00", "updated_at": "2024-01-06T13:32:05.961462+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo2": "bar2", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra', 'op': 'remove'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-bb0e63b3-895a-4db3-b137-0a44a1a70ccf +Openstack-Request-Id: req-da555976-27eb-499b-a43c-c342c7280df7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:05.766524+00:00", "updated_at": "2024-01-06T13:32:06.179237+00:00", "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'op': 'remove'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Missing mandatory parameter: connector_uuid\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e89f929b-c1fa-4f4f-be3b-e952a9e45bca +Openstack-Request-Id: req-b4e1b7d1-92c2-4ff4-9e0a-fbb711f96b97 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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\", \"debuginfo\": null}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/non-existent', 'op': 'remove'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_id', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-dd86f407-6719-411c-af0c-fb5c472e5095 +Openstack-Request-Id: req-26ae917a-89d6-4c82-8926-9b45e9ed6cf4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 a non-existent object 'non-existent'\", \"debuginfo\": null}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'op': 'remove'}] +{"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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_uuid', 'op': 'remove'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9e79b704-e43f-4444-8f37-81b2cf6c2bf2 +Openstack-Request-Id: req-205b8a21-4451-492a-afe3-84b84ac967b3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.34 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:07.139857+00:00", "updated_at": "2024-01-06T13:32:07.362265+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'op': 'remove'}] +X-Openstack-Ironic-Api-Version: 1.25 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:40.094503+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_uuid', 'op': 'remove'}] GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-d11ff252-f44d-403b-91de-a67579d83304 +Openstack-Request-Id: req-2972f3c3-8174-4a76-b480-e01a86efd294 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.33 +X-Openstack-Ironic-Api-Version: 1.24 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'op': 'remove'}] -GOT:Response: 406 Not Acceptable +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/last_error', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-7fd418ac-538e-4d6a-bb4d-e83cd2cab3f9 +Openstack-Request-Id: req-0bc143b5-bdf2-46d1-b549-4642df919b2e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/uuid', 'op': 'remove'}] +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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/driver', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-3612b5fa-b5d7-45d0-8421-f7f98459f3bf +Openstack-Request-Id: req-f6a20217-264c-4ae9-a8c4-7c0b1f17429c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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\", \"debuginfo\": null}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/address', 'value': 'aa:aa:aa:aa:aa:aa', 'op': 'replace'}] -GOT:Response: 409 Conflict +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'driver' is a required property\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/extra/non-existent', 'op': 'remove'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_non_existent_property_fail +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_non_existent_property_fail ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_driver +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_driver ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_ok ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_target_unsupported +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_target_unsupported ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-fc07a529-6b3c-4bb1-8ac2-2e0f5ff28590 +Openstack-Request-Id: req-7ea82bce-1495-4b5f-a476-5f507d897730 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/local_link_connection/switch_id', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.28 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node doesntexist could not be found.\", \"debuginfo\": null}"} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': '0d4a0ebc-550b-4675-8a9f-0fabb85be621', 'port_uuid': 'port-uuid', 'portgroup_uuid': 'portgroup-uuid'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-abd33312-f9f3-4b63-b9be-b27288d44f44 +Openstack-Request-Id: req-568f8386-beff-4880-93a8-744fe6ec76c5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.19 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:09.566041+00:00", "updated_at": "2024-01-06T13:32:09.757093+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo1', 'value': 'bar1x', 'op': 'replace'}, {'path': '/extra/foo2', 'value': 'bar2x', 'op': 'replace'}, {'path': '/extra/foo3', 'value': 'bar3x', 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_multi -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_multi ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_conductor_forbidden -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_conductor_forbidden ... ok -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.67 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot specify both port_uuid and portgroup_uuid\", \"debuginfo\": null}"} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'e1529694-c39b-4844-aa50-186cdc278e0d', 'port_uuid': 'port-uuid', 'portgroup_uuid': 'portgroup-uuid'} +GOT:Response: 204 No Content +Openstack-Request-Id: req-146561f9-b37e-4e6a-85ce-38a4ceefbf17 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.28 + +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/2ffecbc8-f760-4657-933d-e85ab4f4fe77 +GOT:Response: 204 No Content +Openstack-Request-Id: req-0138b66c-395b-48f5-94d3-b322acd22f11 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.28 + +DELETE: /v1/nodes/node-39/vifs/ac965886-ca85-4581-b308-57352df414a6 +GOT:Response: 204 No Content +Openstack-Request-Id: req-ade20c4e-4f45-42f5-b7e3-cb00ab9193c6 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.28 + +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ccdd20e9-0b9e-457f-9dd8-f311e8e5895a +GOT:Response: 409 Conflict Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-3b7fd975-1124-4424-ab01-870ad61f958a +Openstack-Request-Id: req-dc5bbad3-29ed-4899-98a3-4762bea7a70f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.11 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:08.867458+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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:08.867458+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -GOT:Response: 201 Created +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}"} +DELETE: /v1/nodes/doesntexist/vifs/43448be7-5342-40c6-82d5-22e276e48400 +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-5859b247-fb2d-45e8-a35a-4b33056a868c +Openstack-Request-Id: req-723705e9-8ddb-4834-a308-89669674d2e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.10 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:09.739489+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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:09.739489+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:09.739489+00:00', 'updated_at': None, 'clean_step': {}, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'description': 'useful stuff', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_description -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_description ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_node_id -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_node_id ... ok -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.28 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node doesntexist could not be found.\", \"debuginfo\": null}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} +GOT:{'vifs': []} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-e8f1eb56-444c-4217-9a07-b63afdfd2491 +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +GOT:{'bios': [{'created_at': '2024-01-06T14:10:39.900017+00:00', 'updated_at': None, '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'}]}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?detail=False {} +GOT:{'bios': [{'created_at': '2024-01-06T14:10:40.068502+00:00', 'updated_at': None, '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'}]}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?detail=True {} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-55b3fc0f-3c2c-4a24-aff6-2af658812d3b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:10.612055+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, "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", "cpus": "8", "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, "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:10.612055+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, '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': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': None, 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'description': '1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678last weed', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_description -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_description ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_deploy_step_forbidden -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_deploy_step_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_description_oversize -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_description_oversize ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_node_uuid -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_non_existent_node_uuid -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_non_existent_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_driver -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_driver ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_duplicate_name -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_duplicate_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_driver_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_driver_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_doesnt_contain_id -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_doesnt_contain_id ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_fault_forbidden -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_fault_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network_old_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network_old_api_version ... ok +X-Openstack-Ironic-Api-Version: 1.73 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid query parameter ?detail=True received.\", \"debuginfo\": null}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?detail=True {} +GOT:{'bios': [{'created_at': '2024-01-06T14:10:40.489758+00:00', 'updated_at': None, 'name': 'virtualization', 'value': 'on', 'attribute_type': 'Enumeration', 'allowable_values': ['on', 'off'], 'lower_bound': None, 'max_length': None, 'min_length': None, 'read_only': False, 'reset_required': True, 'unique': False, 'upper_bound': None, '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'}]}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?detail=True?fields=name,read_only {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-0a6fcc80-b535-4a0b-ae23-65bf3e53ab49 +Openstack-Request-Id: req-f48c1a34-b8de-4401-bb62-893d378139cc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for node: '1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678last weed' is too long\", \"debuginfo\": null}"} -POST: /v1/nodes {'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', 'cpus': '8', '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 +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}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?fields=name,read_only {} +GOT:{'bios': [{'created_at': '2024-01-06T14:10:40.780316+00:00', 'updated_at': None, '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'}]}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?fields=name,read_only {} +GOT:Response: 400 Bad Request Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-f4e41b5d-2e1e-482e-a166-609fd052f936 +Openstack-Request-Id: req-c2d97e82-84d5-47a0-9850-f98d24723a67 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:11.843070+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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:11.843070+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {'foo': 123}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network_upgrade -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network_upgrade ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_network_interface -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_network_interface ... ok +X-Openstack-Ironic-Api-Version: 1.73 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid query parameter ?fields=['name', 'read_only'] received.\", \"debuginfo\": null}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization {} +GOT:{'virtualization': {'created_at': '2024-01-06T14:10:41.088061+00:00', 'updated_at': None, 'name': 'virtualization', 'value': 'on', 'attribute_type': 'Enumeration', 'allowable_values': ['on', 'off'], 'lower_bound': None, 'max_length': None, 'min_length': None, 'read_only': False, 'reset_required': True, 'unique': False, 'upper_bound': None, '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'}]}} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/fake_setting {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-026f8bac-c7ac-4ad2-99ee-e0b75d0d9b9b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization {} +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_fails_with_bad_version +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_fails_with_bad_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_no_registry +ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_no_registry ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_version_older +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_version_older ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_driver_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_driver_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_verbs +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_verbs ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_verbs_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_verbs_fail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_local_link_connection_network_type +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_local_link_connection_network_type ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_chassis_id +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_chassis_id ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_fail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_local_link_connection_network_type_old_api +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_local_link_connection_network_type_old_api ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_false +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_false ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_none +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_none ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group ... ok GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-a43e2240-b8e6-41c5-b88f-ea36f7b9c917 +Openstack-Request-Id: req-9820a910-b6dd-458f-a8f7-f0d3d9b0ed3b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.45 @@ -10129,7 +10439,7 @@ GET: /v1/nodes?conductor=fake.conductor {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-f149390d-a4a6-4ea2-950d-72b6d5515020 +Openstack-Request-Id: req-74c6d482-c1af-4514-9a31-ac1b33b78ca1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 @@ -10137,240 +10447,159 @@ GET: /v1/nodes?conductor=rocky.rocks {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-27e72fb2-9715-46aa-be3b-e67a3bdffeaf +Openstack-Request-Id: req-a7f66beb-f0cb-48a6-9617-051283eedddf X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} GET: /v1/nodes?description_contains=cat {} -GOT:{'nodes': [{'uuid': 'b7d2a4bd-d43e-4e50-a2a7-564cec8bd65c', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/b7d2a4bd-d43e-4e50-a2a7-564cec8bd65c', 'rel': 'self'}, {'href': 'http://localhost/nodes/b7d2a4bd-d43e-4e50-a2a7-564cec8bd65c', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '28ebc3cb-01ee-48e2-a786-3ccb261696f5', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/28ebc3cb-01ee-48e2-a786-3ccb261696f5', 'rel': 'self'}, {'href': 'http://localhost/nodes/28ebc3cb-01ee-48e2-a786-3ccb261696f5', 'rel': 'bookmark'}]}]} GET: /v1/nodes?description_contains=dog {} -GOT:{'nodes': [{'uuid': '2c80e876-0d46-4444-982f-6357a9f666ff', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/2c80e876-0d46-4444-982f-6357a9f666ff', 'rel': 'self'}, {'href': 'http://localhost/nodes/2c80e876-0d46-4444-982f-6357a9f666ff', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '4d0b474e-56ac-4ccc-8989-482e2413f11d', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/4d0b474e-56ac-4ccc-8989-482e2413f11d', 'rel': 'self'}, {'href': 'http://localhost/nodes/4d0b474e-56ac-4ccc-8989-482e2413f11d', 'rel': 'bookmark'}]}]} GET: /v1/nodes?driver=ipmi {} -GOT:{'nodes': [{'uuid': '00930c2d-07f6-4907-8ee5-64534f0c7c0d', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/00930c2d-07f6-4907-8ee5-64534f0c7c0d', 'rel': 'self'}, {'href': 'http://localhost/nodes/00930c2d-07f6-4907-8ee5-64534f0c7c0d', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'ee27b37f-4356-405e-8244-727a84927438', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/ee27b37f-4356-405e-8244-727a84927438', 'rel': 'self'}, {'href': 'http://localhost/nodes/ee27b37f-4356-405e-8244-727a84927438', 'rel': 'bookmark'}]}]} GET: /v1/nodes?driver=fake-hardware {} -GOT:{'nodes': [{'uuid': '2f0bca20-9244-4fdd-afc1-fa3b49aaa7c7', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/2f0bca20-9244-4fdd-afc1-fa3b49aaa7c7', 'rel': 'self'}, {'href': 'http://localhost/nodes/2f0bca20-9244-4fdd-afc1-fa3b49aaa7c7', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'a613ef05-2629-4a7f-a8c7-0a65fc38daa6', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/a613ef05-2629-4a7f-a8c7-0a65fc38daa6', 'rel': 'self'}, {'href': 'http://localhost/nodes/a613ef05-2629-4a7f-a8c7-0a65fc38daa6', 'rel': 'bookmark'}]}]} GET: /v1/nodes?driver=fake {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-36481164-6cf0-450f-a0f0-c7ebf63899bb +Openstack-Request-Id: req-24361014-2bb6-4607-9839-2a8f27be656d X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} GET: /v1/nodes?fault=power failure {} -GOT:{'nodes': [{'uuid': '80fb9654-06fc-42bf-bfdc-c1b56dfee896', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/80fb9654-06fc-42bf-bfdc-c1b56dfee896', 'rel': 'self'}, {'href': 'http://localhost/nodes/80fb9654-06fc-42bf-bfdc-c1b56dfee896', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '968576e0-f6b3-4942-bcc6-7549870568a7', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/968576e0-f6b3-4942-bcc6-7549870568a7', 'rel': 'self'}, {'href': 'http://localhost/nodes/968576e0-f6b3-4942-bcc6-7549870568a7', 'rel': 'bookmark'}]}]} GET: /v1/nodes?fault=clean failure {} -GOT:{'nodes': [{'uuid': 'e0e3ae86-37d8-416e-b80b-8241006f85e2', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/e0e3ae86-37d8-416e-b80b-8241006f85e2', 'rel': 'self'}, {'href': 'http://localhost/nodes/e0e3ae86-37d8-416e-b80b-8241006f85e2', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '691f0070-ab3b-48f6-9b17-03bd8df20f41', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/691f0070-ab3b-48f6-9b17-03bd8df20f41', 'rel': 'self'}, {'href': 'http://localhost/nodes/691f0070-ab3b-48f6-9b17-03bd8df20f41', 'rel': 'bookmark'}]}]} GET: /v1/nodes/detail?fault=power failure {} -GOT:{'nodes': [{'uuid': '80fb9654-06fc-42bf-bfdc-c1b56dfee896', 'created_at': '2024-01-06T13:32:12.302887+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': 'power failure', 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/80fb9654-06fc-42bf-bfdc-c1b56dfee896', 'rel': 'self'}, {'href': 'http://localhost/nodes/80fb9654-06fc-42bf-bfdc-c1b56dfee896', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/80fb9654-06fc-42bf-bfdc-c1b56dfee896/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/80fb9654-06fc-42bf-bfdc-c1b56dfee896/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/80fb9654-06fc-42bf-bfdc-c1b56dfee896/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/80fb9654-06fc-42bf-bfdc-c1b56dfee896/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/80fb9654-06fc-42bf-bfdc-c1b56dfee896/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/80fb9654-06fc-42bf-bfdc-c1b56dfee896/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/80fb9654-06fc-42bf-bfdc-c1b56dfee896/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/80fb9654-06fc-42bf-bfdc-c1b56dfee896/volume', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '968576e0-f6b3-4942-bcc6-7549870568a7', 'created_at': '2024-01-06T14:10:41.892099+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': 'power failure', 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/968576e0-f6b3-4942-bcc6-7549870568a7', 'rel': 'self'}, {'href': 'http://localhost/nodes/968576e0-f6b3-4942-bcc6-7549870568a7', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/968576e0-f6b3-4942-bcc6-7549870568a7/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/968576e0-f6b3-4942-bcc6-7549870568a7/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/968576e0-f6b3-4942-bcc6-7549870568a7/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/968576e0-f6b3-4942-bcc6-7549870568a7/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/968576e0-f6b3-4942-bcc6-7549870568a7/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/968576e0-f6b3-4942-bcc6-7549870568a7/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/968576e0-f6b3-4942-bcc6-7549870568a7/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/968576e0-f6b3-4942-bcc6-7549870568a7/volume', 'rel': 'bookmark'}]}]} GET: /v1/nodes/detail?fault=clean failure {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_fault ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_fault ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_name_remove_ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_name_remove_ok ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_fault_not_allowed ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_fault_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group_fail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_multi +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_multi ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group_none +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group_none ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_fault_with_invalid_fault ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_fault_with_invalid_fault ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_resource_class -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_resource_class ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_chassis_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_chassis_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_node_id +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_node_id ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type_fail ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_consoled_enabled +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_consoled_enabled ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_driver ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_driver ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_old_api -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_old_api ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type_none +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type_none ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_inspect_verbs +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_inspect_verbs ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_provision_state ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_provision_state ... ok -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/name', 'op': 'replace', 'value': 'Guido Van Error'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-000293bd-6258-4ed4-887c-1a267650b3ce -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -PATCH: /v1/nodes/b82a7011-0cca-4128-a2ef-986cace81a56 [{'path': '/allocation_uuid', 'op': 'replace', 'value': 'c2200ca7-d1ec-4770-882b-baa4f2847dbb'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-f5232119-e3e4-4dd7-8f5b-947af59fcb33 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/a81335d5-9f52-4e06-aaba-84c5b8e3ddba [{'path': '/allocation_uuid', 'op': 'replace', 'value': '87eeec6c-205c-4ec5-93f7-5b593a94a529'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-bd0aa335-5111-468c-b76e-2da40f0b3653 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/110cfd8b-1d5f-4cd6-9363-0116efbe944a [{'path': '/conductor', 'op': 'replace', 'value': 'why care'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-996b7a2f-07c8-46b6-935d-15944a7db1fd -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/8be258fe-ca9c-4005-85ad-36f7db8266b1 [{'path': '/deploy_step', 'op': 'replace', 'value': 'deploy this'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-994cca39-600f-44ab-a61c-1e2f7424f8ec -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/27c41c64-df6a-48e8-9da8-d999d5e2bafd [{'path': '/name', 'op': 'replace', 'value': 'this-is-my-node'}] -GOT:Response: 409 Conflict -Content-Type: application/json -Openstack-Request-Id: req-6a56d1d8-0bbe-4d7e-a362-8161ebbbaf38 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -PATCH: /v1/nodes/790e76d0-889f-4b7f-95db-57f5186b9d43 [{'path': '/fault', 'op': 'replace', 'value': 'why care'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-c7520673-99f9-4a3f-961c-f520ce72d652 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/name', 'op': 'remove'}] -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-2829efef-3a27-4839-9e97-a13133b7f79e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.5 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:12.535845+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/name', 'op': 'replace', 'value': 'guido-van-rossum'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_name_replace_ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_name_replace_ok ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_internal_field +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_internal_field ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_node_uuid +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_node_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_inspect_verbs_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_inspect_verbs_fail ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_manage_verbs +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_manage_verbs ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_resource_class ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_resource_class ... ok -POST: /v1/nodes {'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', 'cpus': '8', '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-8aa00e4d-bbe8-42fe-b02b-37f47f3316bf -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'clean_step': {}, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': 'neutron', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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-038be1f5-1ff1-45a0-8df2-b740ce27bf2c -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.21 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:13.415058+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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:13.415058+00:00', 'updated_at': None, 'clean_step': {}, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': 'flat', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'class2', 'target_power_state': None, 'target_provision_state': None, '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'}]} -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_remove -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_remove ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_manage_verbs_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_manage_verbs_fail ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_provide_verbs +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_provide_verbs ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_resource_class_detail ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_resource_class_detail ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_storage_interface -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_storage_interface ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_bios_interface -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_bios_interface ... ok -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-e90b4490-13ed-4fc3-8679-5ba826818358 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:10.179760+00:00", "updated_at": "2024-01-06T13:32:10.399718+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo1": "bar1x", "foo2": "bar2x", "foo3": "bar3x"}, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'value': '1', 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_provide_verbs_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_provide_verbs_fail ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_driver +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_driver ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network_old_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network_old_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_driver_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_driver_fail ... ok GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-573806f2-e2c3-4629-ade9-6f65c3836b04 +Openstack-Request-Id: req-7ce84548-8e0d-4f5e-882c-f8436f38e81c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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\", \"debuginfo\": null}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'replace'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove a non-existent object 'non-existent'\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/extra', 'op': 'remove'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a5fd1003-7953-4f3d-a7cd-3b97efa66501 +Openstack-Request-Id: req-80071e87-6817-488f-8c6d-e67b3cb7a3c2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:11.179459+00:00", "updated_at": null, "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '12506333-a81c-4d59-9987-889ed5f8687b', 'op': 'replace'}] +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:41.453717+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/uuid', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-6d184250-188c-4501-b9e4-1d4c9f984496 +Openstack-Request-Id: req-2d2808cf-4d09-4602-9765-c22e93a7b010 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'physnet2', 'op': 'replace'}] -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-12f1b511-a332-4c79-b006-0b3d3df4e572 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.34 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:11.882671+00:00", "updated_at": "2024-01-06T13:32:12.069238+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'physnet2', 'op': 'replace'}] -GOT:Response: 406 Not Acceptable -Content-Type: application/json -Openstack-Request-Id: req-66a3059e-61d6-4ce4-bc1a-0d9a3b19918a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'physnet2', 'op': 'replace'}] -GOT:Response: 406 Not Acceptable +{"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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_id', 'value': '1', 'op': 'replace'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-ad485dac-c6f7-46b1-aef0-012375bd5721 +Openstack-Request-Id: req-d3133b1c-140d-4afe-aac3-297a73a31714 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/portgroup_uuid', 'value': '7ad9ede5-50b7-4f5c-bb1d-58cf018cf80c', 'op': 'replace'}] +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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_uuid', 'value': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'op': 'replace'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-dd57f8d3-0190-487f-a863-9cb932da39b8 +Openstack-Request-Id: req-376d5bb9-aefd-488f-aff4-88616c566a37 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.24 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:13.046782+00:00", "updated_at": "2024-01-06T13:32:13.254965+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "7ad9ede5-50b7-4f5c-bb1d-58cf018cf80c"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/portgroup_uuid', 'value': '62d08c98-a750-423a-a6ea-253dd5a11840', 'op': 'replace'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:42.124435+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/console_enabled', 'op': 'replace', 'value': True}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-7e2c963e-e13d-4d85-ab8a-1b447a55cdf7 +Openstack-Request-Id: req-ca5aeeb4-4ea2-4fe6-b6ee-40e10d0978ce X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/portgroup_uuid', 'value': '9de692dc-b7cb-4a6a-aee1-0d2b7c707377', 'op': 'remove'}] -GOT:Response: 200 OK +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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/power_state', 'op': 'replace', 'value': 'fake-state'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-08fcc9b0-126d-486c-8575-f0f2e548c04d +Openstack-Request-Id: req-48cb013e-688a-4774-84d4-990a1355799d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.24 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:13.863480+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/portgroup_uuid', 'value': 'fd776049-9656-47d8-b879-c5b1be9240e2', 'op': 'remove'}, {'path': '/portgroup_uuid', 'value': '7a9ca552-17ca-42c1-b70f-db33aa4f57e4', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_remove_add -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_remove_add ... ok -GOT:{'nodes': [{'uuid': 'e0e3ae86-37d8-416e-b80b-8241006f85e2', 'created_at': '2024-01-06T13:32:12.331932+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': 'clean failure', 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/e0e3ae86-37d8-416e-b80b-8241006f85e2', 'rel': 'self'}, {'href': 'http://localhost/nodes/e0e3ae86-37d8-416e-b80b-8241006f85e2', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/e0e3ae86-37d8-416e-b80b-8241006f85e2/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/e0e3ae86-37d8-416e-b80b-8241006f85e2/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/e0e3ae86-37d8-416e-b80b-8241006f85e2/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/e0e3ae86-37d8-416e-b80b-8241006f85e2/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/e0e3ae86-37d8-416e-b80b-8241006f85e2/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/e0e3ae86-37d8-416e-b80b-8241006f85e2/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/e0e3ae86-37d8-416e-b80b-8241006f85e2/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/e0e3ae86-37d8-416e-b80b-8241006f85e2/volume', 'rel': 'bookmark'}]}]} +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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/maintenance', 'op': 'replace', 'value': True}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_maintenance +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_maintenance ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_fields +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_fields ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_fields_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_fields_fail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network_upgrade +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network_upgrade ... ok +GOT:{'nodes': [{'uuid': '691f0070-ab3b-48f6-9b17-03bd8df20f41', 'created_at': '2024-01-06T14:10:41.903849+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': 'clean failure', 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/691f0070-ab3b-48f6-9b17-03bd8df20f41', 'rel': 'self'}, {'href': 'http://localhost/nodes/691f0070-ab3b-48f6-9b17-03bd8df20f41', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/691f0070-ab3b-48f6-9b17-03bd8df20f41/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/691f0070-ab3b-48f6-9b17-03bd8df20f41/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/691f0070-ab3b-48f6-9b17-03bd8df20f41/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/691f0070-ab3b-48f6-9b17-03bd8df20f41/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/691f0070-ab3b-48f6-9b17-03bd8df20f41/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/691f0070-ab3b-48f6-9b17-03bd8df20f41/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/691f0070-ab3b-48f6-9b17-03bd8df20f41/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/691f0070-ab3b-48f6-9b17-03bd8df20f41/volume', 'rel': 'bookmark'}]}]} GET: /v1/nodes?fault=power failure {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-e60504d6-7e6b-4680-afcc-b276d16a158c +Openstack-Request-Id: req-c654c329-5a8b-4784-b5c9-be69935e8573 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.41 @@ -10378,7 +10607,7 @@ GET: /v1/nodes/detail?fault=power failure {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-8e0bea6e-d3fd-443c-ba8f-08f1b8ab5f31 +Openstack-Request-Id: req-72075920-2ce2-4973-979d-fb2c32a34e26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.41 @@ -10386,7 +10615,7 @@ GET: /v1/nodes?fault=somefake {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-be1196f6-a505-412d-8733-2d473aa21059 +Openstack-Request-Id: req-55ce247e-771f-415e-a6be-46138f6f7810 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.42 @@ -10394,7 +10623,7 @@ GET: /v1/nodes/detail?fault=somefake {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-8cbb0d8d-13e5-494f-b2e0-105f00614073 +Openstack-Request-Id: req-bd3617ca-0ae4-40a6-974a-8cf84dc131c2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.42 @@ -10404,7 +10633,7 @@ GET: /v1/nodes?provision_state=test {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-ed06e19d-e939-4717-96fa-86a33ca757ee +Openstack-Request-Id: req-58bce20a-a139-4c23-b702-0243ead05157 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.9 @@ -10414,140 +10643,255 @@ GET: /v1/nodes/detail?resource_class=test {} GOT:{'nodes': []} GET: /v1/nodes?lessee=project1 {} -GOT:{'nodes': [{'uuid': 'ca0ea34f-0701-4028-bf01-32b764856aab', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/ca0ea34f-0701-4028-bf01-32b764856aab', 'rel': 'self'}, {'href': 'http://localhost/nodes/ca0ea34f-0701-4028-bf01-32b764856aab', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'b979e2b2-fcec-4244-9b52-da868df79431', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/b979e2b2-fcec-4244-9b52-da868df79431', 'rel': 'self'}, {'href': 'http://localhost/nodes/b979e2b2-fcec-4244-9b52-da868df79431', 'rel': 'bookmark'}]}]} GET: /v1/nodes?lessee=project2 {} -GOT:{'nodes': [{'uuid': 'ad6f2fb7-ddd4-499f-b992-31007334ae38', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/ad6f2fb7-ddd4-499f-b992-31007334ae38', 'rel': 'self'}, {'href': 'http://localhost/nodes/ad6f2fb7-ddd4-499f-b992-31007334ae38', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '1522e6a8-a076-4420-87c2-5de42687921d', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/1522e6a8-a076-4420-87c2-5de42687921d', 'rel': 'self'}, {'href': 'http://localhost/nodes/1522e6a8-a076-4420-87c2-5de42687921d', 'rel': 'bookmark'}]}]} GET: /v1/nodes/detail?lessee=project1 {} +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_maintenance_by_name +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_maintenance_by_name ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_portgroup_uuid +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_portgroup_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_non_existent_chassis_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_non_existent_chassis_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_resource_class +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_resource_class ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_lessee ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_lessee ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_lessee_not_allowed -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_lessee_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_extra -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_extra ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_singular -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_singular ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_chassis -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_chassis ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_set_pxe_enabled_false_old_api -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_set_pxe_enabled_false_old_api ... ok -GOT:{'nodes': [{'uuid': 'ca0ea34f-0701-4028-bf01-32b764856aab', 'created_at': '2024-01-06T13:32:14.625298+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': 'project1', 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/ca0ea34f-0701-4028-bf01-32b764856aab', 'rel': 'self'}, {'href': 'http://localhost/nodes/ca0ea34f-0701-4028-bf01-32b764856aab', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/ca0ea34f-0701-4028-bf01-32b764856aab/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/ca0ea34f-0701-4028-bf01-32b764856aab/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/ca0ea34f-0701-4028-bf01-32b764856aab/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/ca0ea34f-0701-4028-bf01-32b764856aab/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/ca0ea34f-0701-4028-bf01-32b764856aab/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/ca0ea34f-0701-4028-bf01-32b764856aab/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/ca0ea34f-0701-4028-bf01-32b764856aab/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/ca0ea34f-0701-4028-bf01-32b764856aab/volume', 'rel': 'bookmark'}]}]} -GET: /v1/nodes/detail?lessee=project2 {} -GOT:{'nodes': [{'uuid': 'ad6f2fb7-ddd4-499f-b992-31007334ae38', 'created_at': '2024-01-06T13:32:14.655123+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': 'project2', 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/ad6f2fb7-ddd4-499f-b992-31007334ae38', 'rel': 'self'}, {'href': 'http://localhost/nodes/ad6f2fb7-ddd4-499f-b992-31007334ae38', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/ad6f2fb7-ddd4-499f-b992-31007334ae38/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/ad6f2fb7-ddd4-499f-b992-31007334ae38/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/ad6f2fb7-ddd4-499f-b992-31007334ae38/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/ad6f2fb7-ddd4-499f-b992-31007334ae38/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/ad6f2fb7-ddd4-499f-b992-31007334ae38/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/ad6f2fb7-ddd4-499f-b992-31007334ae38/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/ad6f2fb7-ddd4-499f-b992-31007334ae38/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/ad6f2fb7-ddd4-499f-b992-31007334ae38/volume', 'rel': 'bookmark'}]}]} -GET: /v1/nodes?lessee=project1 {} -GOT:Response: 406 Not Acceptable +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization {} +GOT:{'virtualization': {'created_at': '2024-01-06T14:10:41.552652+00:00', 'updated_at': None, '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'}]}} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/local_link_connection/network_type', 'value': 'unmanaged', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-52b2fea4-49af-4425-a9a8-d96e202f462b +Openstack-Request-Id: req-5e1c4ac8-877b-40ed-8eb7-c5d4145e452f X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:41.785006+00:00", "updated_at": "2024-01-06T14:10:41.882473+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/local_link_connection/network_type', 'value': 'unmanaged', 'op': 'add'}] GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-cf2b458d-fddd-4460-8066-77160997a99e +Openstack-Request-Id: req-07e14cdd-752d-4755-8cfc-b7fa951f8a66 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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?owner=fred {} -GOT:{'nodes': [{'uuid': '3100e61b-c023-4a44-b129-e00f01215780', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/3100e61b-c023-4a44-b129-e00f01215780', 'rel': 'self'}, {'href': 'http://localhost/nodes/3100e61b-c023-4a44-b129-e00f01215780', 'rel': 'bookmark'}]}]} -GET: /v1/nodes?owner=bob {} -GOT:{'nodes': [{'uuid': 'fca64e08-2dc9-444d-ad3f-c88a4e19d9f8', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/fca64e08-2dc9-444d-ad3f-c88a4e19d9f8', 'rel': 'self'}, {'href': 'http://localhost/nodes/fca64e08-2dc9-444d-ad3f-c88a4e19d9f8', 'rel': 'bookmark'}]}]} -GET: /v1/nodes/detail?owner=fred {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_owner -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_owner ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_address_invalid_format -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_address_invalid_format ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_owner_not_allowed -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_owner_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_driver -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_driver ... ok +X-Openstack-Ironic-Api-Version: 1.63 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'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-24104369-9b5a-41f8-8cb9-68f940cdec72 +Openstack-Request-Id: req-df9d373e-6947-4e6a-a4ff-ef230cd9af1d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.5 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:13.169369+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/951dc64b-aaae-4f7f-b451-017746f100af [{'path': '/description', 'value': 'foo', 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:42.149227+00:00", "updated_at": "2024-01-06T14:10:42.239338+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'value': '1', 'op': 'add'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-36450126-71a7-4924-930c-14ba8b11c095 +Openstack-Request-Id: req-2577d9d7-7335-4198-be58-c107706fe990 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "951dc64b-aaae-4f7f-b451-017746f100af", "created_at": "2024-01-06T13:32:14.182317+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, "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", "cpus": "8", "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/951dc64b-aaae-4f7f-b451-017746f100af", "rel": "self"}, {"href": "http://localhost/nodes/951dc64b-aaae-4f7f-b451-017746f100af", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/951dc64b-aaae-4f7f-b451-017746f100af/ports", "rel": "self"}, {"href": "http://localhost/nodes/951dc64b-aaae-4f7f-b451-017746f100af/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/951dc64b-aaae-4f7f-b451-017746f100af/states", "rel": "self"}, {"href": "http://localhost/nodes/951dc64b-aaae-4f7f-b451-017746f100af/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/951dc64b-aaae-4f7f-b451-017746f100af/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/951dc64b-aaae-4f7f-b451-017746f100af/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/951dc64b-aaae-4f7f-b451-017746f100af/volume", "rel": "self"}, {"href": "http://localhost/nodes/951dc64b-aaae-4f7f-b451-017746f100af/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/ae176d63-59a4-482f-8095-62c4b409f8b9 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +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\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-915f1b01-61ec-48cb-8c3e-b919f01b7091 +Openstack-Request-Id: req-03f99978-22fa-4392-819a-f2cea9fef7e8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "ae176d63-59a4-482f-8095-62c4b409f8b9", "created_at": "2024-01-06T13:32:14.858707+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, "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", "cpus": "8", "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/ae176d63-59a4-482f-8095-62c4b409f8b9", "rel": "self"}, {"href": "http://localhost/nodes/ae176d63-59a4-482f-8095-62c4b409f8b9", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ae176d63-59a4-482f-8095-62c4b409f8b9/ports", "rel": "self"}, {"href": "http://localhost/nodes/ae176d63-59a4-482f-8095-62c4b409f8b9/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ae176d63-59a4-482f-8095-62c4b409f8b9/states", "rel": "self"}, {"href": "http://localhost/nodes/ae176d63-59a4-482f-8095-62c4b409f8b9/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ae176d63-59a4-482f-8095-62c4b409f8b9/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ae176d63-59a4-482f-8095-62c4b409f8b9/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ae176d63-59a4-482f-8095-62c4b409f8b9/volume", "rel": "self"}, {"href": "http://localhost/nodes/ae176d63-59a4-482f-8095-62c4b409f8b9/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/8a690101-1849-41de-8cc0-d268b13691f1 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}, {'path': '/instance_info/foo', 'value': 'bar', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_extra_and_instance_info -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_extra_and_instance_info ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_byaddress_not_allowed -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_byaddress_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_provision_state -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_provision_state ... ok -POST: /v1/nodes {'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', 'cpus': '8', '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 +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:42.528242+00:00", "updated_at": null, "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'physnet1', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-e9604bc3-29bc-44e2-a33f-772fa22d1233 +Openstack-Request-Id: req-3c76f863-12d2-45d3-ba2a-8f9704252a5b X-Openstack-Ironic-Api-Maximum-Version: 1.80 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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'cinder', 'target_power_state': None, 'target_provision_state': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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 +X-Openstack-Ironic-Api-Version: 1.34 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:42.751820+00:00", "updated_at": "2024-01-06T14:10:42.845435+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'physnet1', 'op': 'add'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-9553eb2f-b8e7-4a23-abdf-9a46b379f149 +Openstack-Request-Id: req-4213b3a9-82ab-4a22-9995-14666e8aafb2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 0} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.33 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'physnet1', 'op': 'add'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-aff191f8-e454-4f74-9963-4302b2dd2a20 +Openstack-Request-Id: req-e954a0a5-4ca3-4698-a533-7ea71416f95f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/portgroup_uuid', 'value': 'f9e26bf0-eb64-4b44-b7a7-7126e2a77ada', 'op': 'add'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-11adb1f5-5adb-419d-971e-25454b86178e +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.24 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:43.281863+00:00", "updated_at": "2024-01-06T14:10:43.393972+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "f9e26bf0-eb64-4b44-b7a7-7126e2a77ada"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/address', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_root +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_root ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_provision_updated_at +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_provision_updated_at ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_resource_class_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_resource_class_fail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_root_non_existent +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_root_non_existent ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_lessee_not_allowed +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_lessee_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_undeploy_verbs +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_undeploy_verbs ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_undeploy_verbs_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_undeploy_verbs_fail ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_unknown_verbs +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_unknown_verbs ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_empty_string +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_empty_string ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_network_interface +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_network_interface ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_network_interface_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_network_interface_fail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_non_text +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_non_text ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_rescue_interface_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_rescue_interface_fail ... ok +GOT:{'nodes': [{'uuid': 'b979e2b2-fcec-4244-9b52-da868df79431', 'created_at': '2024-01-06T14:10:43.033456+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': 'project1', 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/b979e2b2-fcec-4244-9b52-da868df79431', 'rel': 'self'}, {'href': 'http://localhost/nodes/b979e2b2-fcec-4244-9b52-da868df79431', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/b979e2b2-fcec-4244-9b52-da868df79431/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/b979e2b2-fcec-4244-9b52-da868df79431/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/b979e2b2-fcec-4244-9b52-da868df79431/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/b979e2b2-fcec-4244-9b52-da868df79431/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/b979e2b2-fcec-4244-9b52-da868df79431/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/b979e2b2-fcec-4244-9b52-da868df79431/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/b979e2b2-fcec-4244-9b52-da868df79431/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/b979e2b2-fcec-4244-9b52-da868df79431/volume', 'rel': 'bookmark'}]}]} +GET: /v1/nodes/detail?lessee=project2 {} +GOT:{'nodes': [{'uuid': '1522e6a8-a076-4420-87c2-5de42687921d', 'created_at': '2024-01-06T14:10:43.058590+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': 'project2', 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/1522e6a8-a076-4420-87c2-5de42687921d', 'rel': 'self'}, {'href': 'http://localhost/nodes/1522e6a8-a076-4420-87c2-5de42687921d', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1522e6a8-a076-4420-87c2-5de42687921d/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1522e6a8-a076-4420-87c2-5de42687921d/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/1522e6a8-a076-4420-87c2-5de42687921d/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/1522e6a8-a076-4420-87c2-5de42687921d/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/1522e6a8-a076-4420-87c2-5de42687921d/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/1522e6a8-a076-4420-87c2-5de42687921d/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/1522e6a8-a076-4420-87c2-5de42687921d/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/1522e6a8-a076-4420-87c2-5de42687921d/volume', 'rel': 'bookmark'}]}]} +GET: /v1/nodes?lessee=project1 {} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-0303a6d4-80ea-4be1-bd61-fafbac6e3eee +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 {} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-04e4e4d5-8089-47ae-965b-3566181da3ba +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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?owner=fred {} +GOT:{'nodes': [{'uuid': 'a8f29aed-d747-44f8-ac2e-222740ea14e4', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/a8f29aed-d747-44f8-ac2e-222740ea14e4', 'rel': 'self'}, {'href': 'http://localhost/nodes/a8f29aed-d747-44f8-ac2e-222740ea14e4', 'rel': 'bookmark'}]}]} +GET: /v1/nodes?owner=bob {} +GOT:{'nodes': [{'uuid': 'efcfef22-4da8-4968-b4bd-53b3c7769de1', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/efcfef22-4da8-4968-b4bd-53b3c7769de1', 'rel': 'self'}, {'href': 'http://localhost/nodes/efcfef22-4da8-4968-b4bd-53b3c7769de1', 'rel': 'bookmark'}]}]} +GET: /v1/nodes/detail?owner=fred {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_owner +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_owner ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_owner_not_allowed +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_owner_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_resource_class +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_resource_class ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_resource_class_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_resource_class_fail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_too_long +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_too_long ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_portgroup_fields_mode_properties +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_portgroup_fields_mode_properties ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_portgroup_fields_mode_properties_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_portgroup_fields_mode_properties_fail ... ok +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-11f2010b-cb04-404e-8449-82c155eb92d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:42.716239+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/node-57.1 [{'path': '/maintenance', 'op': 'replace', 'value': True}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-a32abc7c-beef-4fc3-9b13-b8c1d7796705 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.5 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:43.012815+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_uuid', 'value': 'eeeeeeee-dddd-cccc-bbbb-aaaaaaaaaaaa', 'op': 'replace'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d3104918-924a-4708-af29-aa1938883dbe +Openstack-Request-Id: req-37154dc7-04f3-4d9e-82c8-4b46ca2e7547 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Fake Error\", \"debuginfo\": null}"} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_network_interface -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_network_interface ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_byid -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_byid ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis eeeeeeee-dddd-cccc-bbbb-aaaaaaaaaaaa could not be found.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'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-4d9f308b-24e6-4c72-bbfd-77627ab0dc83 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6 [{'path': '/boot_interface', 'op': 'remove'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-7d243942-c8d6-4f69-b9e8-f8727db6db7b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "ba4861a3-946d-4a23-bd3e-866245efd5e6", "created_at": "2024-01-06T14:10:43.917633+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", "cpus": "8", "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/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6 [{'path': '/console_interface', 'op': 'remove'}] +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_provision_state +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_provision_state ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_no_node +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_no_node ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_no_node_policy_notfound +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_no_node_policy_notfound ... ok +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-affec3d9-a3e4-4d09-acab-d44d1e767b24 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "ba4861a3-946d-4a23-bd3e-866245efd5e6", "created_at": "2024-01-06T14:10:43.917633+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", "cpus": "8", "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/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6 [{'path': '/deploy_interface', 'op': 'remove'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-311219cf-c955-4c22-8e83-73abff6106be +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "ba4861a3-946d-4a23-bd3e-866245efd5e6", "created_at": "2024-01-06T14:10:43.917633+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", "cpus": "8", "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/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6 [{'path': '/inspect_interface', 'op': 'remove'}] ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_provision_state_not_allowed ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_provision_state_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_and_extra -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_and_extra ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_policy_forbidden +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_policy_forbidden ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_with_suffix +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_with_suffix ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_in_inspecting_allowed -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_in_inspecting_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_storage_interface -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_storage_interface ... ok -GOT:{'nodes': [{'uuid': '3100e61b-c023-4a44-b129-e00f01215780', 'created_at': '2024-01-06T13:32:15.617257+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': 'fred', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/3100e61b-c023-4a44-b129-e00f01215780', 'rel': 'self'}, {'href': 'http://localhost/nodes/3100e61b-c023-4a44-b129-e00f01215780', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/3100e61b-c023-4a44-b129-e00f01215780/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/3100e61b-c023-4a44-b129-e00f01215780/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/3100e61b-c023-4a44-b129-e00f01215780/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/3100e61b-c023-4a44-b129-e00f01215780/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/3100e61b-c023-4a44-b129-e00f01215780/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/3100e61b-c023-4a44-b129-e00f01215780/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/3100e61b-c023-4a44-b129-e00f01215780/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/3100e61b-c023-4a44-b129-e00f01215780/volume', 'rel': 'bookmark'}]}]} +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_forbidden +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_forbidden ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_portgroups_subresource_patch +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_portgroups_subresource_patch ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_forbidden_no_project +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_forbidden_no_project ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_non_admin +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_non_admin ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_invalid +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_network_type +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_network_type ... ok +GOT:{'nodes': [{'uuid': 'a8f29aed-d747-44f8-ac2e-222740ea14e4', 'created_at': '2024-01-06T14:10:43.927165+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': 'fred', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/a8f29aed-d747-44f8-ac2e-222740ea14e4', 'rel': 'self'}, {'href': 'http://localhost/nodes/a8f29aed-d747-44f8-ac2e-222740ea14e4', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/a8f29aed-d747-44f8-ac2e-222740ea14e4/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/a8f29aed-d747-44f8-ac2e-222740ea14e4/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/a8f29aed-d747-44f8-ac2e-222740ea14e4/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/a8f29aed-d747-44f8-ac2e-222740ea14e4/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/a8f29aed-d747-44f8-ac2e-222740ea14e4/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/a8f29aed-d747-44f8-ac2e-222740ea14e4/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/a8f29aed-d747-44f8-ac2e-222740ea14e4/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/a8f29aed-d747-44f8-ac2e-222740ea14e4/volume', 'rel': 'bookmark'}]}]} GET: /v1/nodes/detail?owner=bob {} -GOT:{'nodes': [{'uuid': 'fca64e08-2dc9-444d-ad3f-c88a4e19d9f8', 'created_at': '2024-01-06T13:32:15.646449+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': 'bob', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/fca64e08-2dc9-444d-ad3f-c88a4e19d9f8', 'rel': 'self'}, {'href': 'http://localhost/nodes/fca64e08-2dc9-444d-ad3f-c88a4e19d9f8', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/fca64e08-2dc9-444d-ad3f-c88a4e19d9f8/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/fca64e08-2dc9-444d-ad3f-c88a4e19d9f8/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/fca64e08-2dc9-444d-ad3f-c88a4e19d9f8/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/fca64e08-2dc9-444d-ad3f-c88a4e19d9f8/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/fca64e08-2dc9-444d-ad3f-c88a4e19d9f8/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/fca64e08-2dc9-444d-ad3f-c88a4e19d9f8/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/fca64e08-2dc9-444d-ad3f-c88a4e19d9f8/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/fca64e08-2dc9-444d-ad3f-c88a4e19d9f8/volume', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'efcfef22-4da8-4968-b4bd-53b3c7769de1', 'created_at': '2024-01-06T14:10:43.939101+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': 'bob', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/efcfef22-4da8-4968-b4bd-53b3c7769de1', 'rel': 'self'}, {'href': 'http://localhost/nodes/efcfef22-4da8-4968-b4bd-53b3c7769de1', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/efcfef22-4da8-4968-b4bd-53b3c7769de1/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/efcfef22-4da8-4968-b4bd-53b3c7769de1/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/efcfef22-4da8-4968-b4bd-53b3c7769de1/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/efcfef22-4da8-4968-b4bd-53b3c7769de1/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/efcfef22-4da8-4968-b4bd-53b3c7769de1/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/efcfef22-4da8-4968-b4bd-53b3c7769de1/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/efcfef22-4da8-4968-b4bd-53b3c7769de1/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/efcfef22-4da8-4968-b4bd-53b3c7769de1/volume', 'rel': 'bookmark'}]}]} GET: /v1/nodes?owner=fred {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-2aaed7d1-87d3-45ca-a40a-d45e36d8e40f +Openstack-Request-Id: req-a2e52d7e-b3a6-419c-9397-2493506d5acb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 @@ -10555,659 +10899,630 @@ GET: /v1/nodes/detail?owner=fred {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-6e1cc8f8-ee10-4d4c-8c23-96d997aa0e5b +Openstack-Request-Id: req-c331623c-8b33-434d-b1ab-5624f14ddd24 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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?provision_state=available {} -GOT:{'nodes': [{'uuid': 'c14c4e0c-4661-4c0a-b9df-bedc97318170', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/c14c4e0c-4661-4c0a-b9df-bedc97318170', 'rel': 'self'}, {'href': 'http://localhost/nodes/c14c4e0c-4661-4c0a-b9df-bedc97318170', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'a718cee4-a2bf-4097-84f4-7930196a6410', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/a718cee4-a2bf-4097-84f4-7930196a6410', 'rel': 'self'}, {'href': 'http://localhost/nodes/a718cee4-a2bf-4097-84f4-7930196a6410', 'rel': 'bookmark'}]}]} GET: /v1/nodes?provision_state=deploying {} -GOT:{'nodes': [{'uuid': 'a57dcc9c-bfe3-4d79-919e-e8f16212adba', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'deploying', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/a57dcc9c-bfe3-4d79-919e-e8f16212adba', 'rel': 'self'}, {'href': 'http://localhost/nodes/a57dcc9c-bfe3-4d79-919e-e8f16212adba', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '1874ec0b-29d4-496a-8e1e-6aba23af2d25', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'deploying', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/1874ec0b-29d4-496a-8e1e-6aba23af2d25', 'rel': 'self'}, {'href': 'http://localhost/nodes/1874ec0b-29d4-496a-8e1e-6aba23af2d25', 'rel': 'bookmark'}]}]} GET: /v1/nodes?provision_state=test {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-5eceb18a-2073-4b8d-bf7b-8f1f430b34ab +Openstack-Request-Id: req-2afbd3e2-1098-4fe3-925a-4e976fbbe7c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} GET: /v1/nodes?resource_class=foo {} -GOT:{'nodes': [{'uuid': '6e5cc021-4e07-41fe-9465-77b9d3229fdc', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/6e5cc021-4e07-41fe-9465-77b9d3229fdc', 'rel': 'self'}, {'href': 'http://localhost/nodes/6e5cc021-4e07-41fe-9465-77b9d3229fdc', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '8e6e3f28-4df3-489b-8f9d-47c700dbbf63', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/8e6e3f28-4df3-489b-8f9d-47c700dbbf63', 'rel': 'self'}, {'href': 'http://localhost/nodes/8e6e3f28-4df3-489b-8f9d-47c700dbbf63', 'rel': 'bookmark'}]}]} GET: /v1/nodes?resource_class=bar {} -GOT:{'nodes': [{'uuid': '01b6bee8-636a-43db-89d4-bc6b13a7d152', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/01b6bee8-636a-43db-89d4-bc6b13a7d152', 'rel': 'self'}, {'href': 'http://localhost/nodes/01b6bee8-636a-43db-89d4-bc6b13a7d152', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '9c26df9a-6b3c-49a8-8fd7-cc9e254235fa', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/9c26df9a-6b3c-49a8-8fd7-cc9e254235fa', 'rel': 'self'}, {'href': 'http://localhost/nodes/9c26df9a-6b3c-49a8-8fd7-cc9e254235fa', 'rel': 'bookmark'}]}]} GET: /v1/nodes/detail?resource_class=foo {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_detail ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_detail ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_in_inspecting_not_allowed -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_in_inspecting_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_unmanaged +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_unmanaged ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_invalid_api_version_detail +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_invalid_api_version_detail ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_unmanaged_combine_ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_unmanaged_combine_ok ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_network_type_old_api +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_network_type_old_api ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-14d6d929-1943-430d-8a14-4fd0b628efb0 +Openstack-Request-Id: req-d9ebf649-4db0-4d17-95bc-d9a3b4f189e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "8a690101-1849-41de-8cc0-d268b13691f1", "created_at": "2024-01-06T13:32:15.749442+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, "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", "cpus": "8", "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/8a690101-1849-41de-8cc0-d268b13691f1", "rel": "self"}, {"href": "http://localhost/nodes/8a690101-1849-41de-8cc0-d268b13691f1", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/8a690101-1849-41de-8cc0-d268b13691f1/ports", "rel": "self"}, {"href": "http://localhost/nodes/8a690101-1849-41de-8cc0-d268b13691f1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/8a690101-1849-41de-8cc0-d268b13691f1/states", "rel": "self"}, {"href": "http://localhost/nodes/8a690101-1849-41de-8cc0-d268b13691f1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/8a690101-1849-41de-8cc0-d268b13691f1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/8a690101-1849-41de-8cc0-d268b13691f1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/8a690101-1849-41de-8cc0-d268b13691f1/volume", "rel": "self"}, {"href": "http://localhost/nodes/8a690101-1849-41de-8cc0-d268b13691f1/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/95c892bb-5029-4e49-90d7-231f9e1996d3 [{'path': '/description', 'value': 'foo', 'op': 'replace'}, {'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +{"uuid": "ba4861a3-946d-4a23-bd3e-866245efd5e6", "created_at": "2024-01-06T14:10:43.917633+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", "cpus": "8", "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/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6 [{'path': '/management_interface', 'op': 'remove'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b6167857-c7c9-4681-9f02-bcb76e82d04f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "95c892bb-5029-4e49-90d7-231f9e1996d3", "created_at": "2024-01-06T13:32:16.734494+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, "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", "cpus": "8", "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/95c892bb-5029-4e49-90d7-231f9e1996d3", "rel": "self"}, {"href": "http://localhost/nodes/95c892bb-5029-4e49-90d7-231f9e1996d3", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/95c892bb-5029-4e49-90d7-231f9e1996d3/ports", "rel": "self"}, {"href": "http://localhost/nodes/95c892bb-5029-4e49-90d7-231f9e1996d3/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/95c892bb-5029-4e49-90d7-231f9e1996d3/states", "rel": "self"}, {"href": "http://localhost/nodes/95c892bb-5029-4e49-90d7-231f9e1996d3/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/95c892bb-5029-4e49-90d7-231f9e1996d3/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/95c892bb-5029-4e49-90d7-231f9e1996d3/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/95c892bb-5029-4e49-90d7-231f9e1996d3/volume", "rel": "self"}, {"href": "http://localhost/nodes/95c892bb-5029-4e49-90d7-231f9e1996d3/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/d06cf636-bff2-4a90-ac4c-58b2de699c3b [{'path': '/description', 'value': 'foo', 'op': 'replace'}, {'path': '/instance_info/foo', 'value': 'bar', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_and_instance_info -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_and_instance_info ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_not_found -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_not_found ... ok -POST: /v1/nodes {'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', 'cpus': '8', '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-f846465a-b43d-4f3b-8a91-27efc727e3f4 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -POST: /v1/nodes {'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', 'cpus': '8', '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-1599a4ce-0d9f-45b3-80ab-c596f3a7fa85 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -POST: /v1/nodes {'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', 'cpus': '8', '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-983e0328-212a-4aab-bd0b-5c93323522e7 +Openstack-Request-Id: req-9847421d-ab66-4cdc-8277-0c61e4c8d9ba X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:18.211647+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": "project", "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", "cpus": "8", "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, "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 {} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_lessee -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_lessee ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_lessee_old_api_version -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_lessee_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_extra_instance_info -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_extra_instance_info ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_port_address_normalized -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_port_address_normalized ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_name_empty_invalid -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_name_empty_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_pxe_enabled_allowed -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_pxe_enabled_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_invalid_api_version_detail -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_invalid_api_version_detail ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_name_empty_not_acceptable -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_name_empty_not_acceptable ... ok +{"uuid": "ba4861a3-946d-4a23-bd3e-866245efd5e6", "created_at": "2024-01-06T14:10:43.917633+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", "cpus": "8", "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/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6 [{'path': '/power_interface', 'op': 'remove'}] ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_traits_not_allowed ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_traits_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_datapath_id +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_datapath_id ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_old_api +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_old_api ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_empty_value +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_empty_value ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_traits_not_allowed_detail +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_traits_not_allowed_detail ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_invalid_key +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_invalid_key ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_mandatory_field +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_mandatory_field ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2a529416-3a6f-4017-bed4-67ff7687514c +Openstack-Request-Id: req-33397122-36d1-4e23-bb2c-7f8dc2cf7ee6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "d06cf636-bff2-4a90-ac4c-58b2de699c3b", "created_at": "2024-01-06T13:32:17.602964+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, "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", "cpus": "8", "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/d06cf636-bff2-4a90-ac4c-58b2de699c3b", "rel": "self"}, {"href": "http://localhost/nodes/d06cf636-bff2-4a90-ac4c-58b2de699c3b", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d06cf636-bff2-4a90-ac4c-58b2de699c3b/ports", "rel": "self"}, {"href": "http://localhost/nodes/d06cf636-bff2-4a90-ac4c-58b2de699c3b/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/d06cf636-bff2-4a90-ac4c-58b2de699c3b/states", "rel": "self"}, {"href": "http://localhost/nodes/d06cf636-bff2-4a90-ac4c-58b2de699c3b/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/d06cf636-bff2-4a90-ac4c-58b2de699c3b/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/d06cf636-bff2-4a90-ac4c-58b2de699c3b/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/d06cf636-bff2-4a90-ac4c-58b2de699c3b/volume", "rel": "self"}, {"href": "http://localhost/nodes/d06cf636-bff2-4a90-ac4c-58b2de699c3b/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/f4f59934-fb8e-421a-85b1-fb100d8656c2 [{'path': '/description', 'value': 'foo', 'op': 'replace'}, {'path': '/extra/foo', 'value': 'bar', 'op': 'add'}, {'path': '/instance_info/foo', 'value': 'bar', 'op': 'add'}] +{"uuid": "ba4861a3-946d-4a23-bd3e-866245efd5e6", "created_at": "2024-01-06T14:10:43.917633+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", "cpus": "8", "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/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6 [{'path': '/raid_interface', 'op': 'remove'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e29027ee-b338-4c83-9070-27074eba74d0 +Openstack-Request-Id: req-8b01873a-6192-457c-9c98-f640bc71030d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f4f59934-fb8e-421a-85b1-fb100d8656c2", "created_at": "2024-01-06T13:32:18.511389+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, "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", "cpus": "8", "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/f4f59934-fb8e-421a-85b1-fb100d8656c2", "rel": "self"}, {"href": "http://localhost/nodes/f4f59934-fb8e-421a-85b1-fb100d8656c2", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f4f59934-fb8e-421a-85b1-fb100d8656c2/ports", "rel": "self"}, {"href": "http://localhost/nodes/f4f59934-fb8e-421a-85b1-fb100d8656c2/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f4f59934-fb8e-421a-85b1-fb100d8656c2/states", "rel": "self"}, {"href": "http://localhost/nodes/f4f59934-fb8e-421a-85b1-fb100d8656c2/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f4f59934-fb8e-421a-85b1-fb100d8656c2/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f4f59934-fb8e-421a-85b1-fb100d8656c2/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f4f59934-fb8e-421a-85b1-fb100d8656c2/volume", "rel": "self"}, {"href": "http://localhost/nodes/f4f59934-fb8e-421a-85b1-fb100d8656c2/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/e36efd11-9b29-47e0-b6c6-6d6a6479411f [{'path': '/instance_info/foo', 'value': 'bar', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_instance_info -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_instance_info ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_traits_not_allowed_detail -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_traits_not_allowed_detail ... ok -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-fa1ddb07-2950-4edb-8f26-364a33f6d995 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.24 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:14.547857+00:00", "updated_at": "2024-01-06T13:32:14.774968+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "7a9ca552-17ca-42c1-b70f-db33aa4f57e4"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/address', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'replace'}] -GOT:Response: 200 OK +{"uuid": "ba4861a3-946d-4a23-bd3e-866245efd5e6", "created_at": "2024-01-06T14:10:43.917633+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", "cpus": "8", "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/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6 [{'path': '/vendor_interface', 'op': 'remove'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interface_fields +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interface_fields ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_local_link_keys_mandatory +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_local_link_keys_mandatory ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_missing_local_link_mandatory_key +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_missing_local_link_mandatory_key ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interfaces_not_supported +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interfaces_not_supported ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_not_mac_or_datapath_id +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_not_mac_or_datapath_id ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_hostname_missing +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_hostname_missing ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interfaces_without_driver +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interfaces_without_driver ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_multi +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_multi ... ok +GOT:{'nodes': [{'uuid': '330e0808-c109-44bb-98c2-65febbf1ed7c', 'created_at': '2024-01-06T14:10:44.971378+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'foo', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'links': [{'href': 'http://localhost/v1/nodes/330e0808-c109-44bb-98c2-65febbf1ed7c', 'rel': 'self'}, {'href': 'http://localhost/nodes/330e0808-c109-44bb-98c2-65febbf1ed7c', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/330e0808-c109-44bb-98c2-65febbf1ed7c/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/330e0808-c109-44bb-98c2-65febbf1ed7c/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/330e0808-c109-44bb-98c2-65febbf1ed7c/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/330e0808-c109-44bb-98c2-65febbf1ed7c/states', 'rel': 'bookmark'}]}]} +GET: /v1/nodes/detail?resource_class=bar {} +GOT:{'nodes': [{'uuid': '21a62576-9d31-4f6b-b6a5-403af8f742a0', 'created_at': '2024-01-06T14:10:44.983312+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'bar', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'links': [{'href': 'http://localhost/v1/nodes/21a62576-9d31-4f6b-b6a5-403af8f742a0', 'rel': 'self'}, {'href': 'http://localhost/nodes/21a62576-9d31-4f6b-b6a5-403af8f742a0', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/21a62576-9d31-4f6b-b6a5-403af8f742a0/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/21a62576-9d31-4f6b-b6a5-403af8f742a0/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/21a62576-9d31-4f6b-b6a5-403af8f742a0/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/21a62576-9d31-4f6b-b6a5-403af8f742a0/states', 'rel': 'bookmark'}]}]} +GET: /v1/nodes?resource_class=fake {} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-71352728-86ab-4071-a92e-c1dbb6eb16e3 +Openstack-Request-Id: req-713c6780-b3be-4490-b203-89a862a522f2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:15.139013+00:00", "updated_at": "2024-01-06T13:32:15.250911+00:00", "address": "aa:bb:cc:dd:ee:ff", "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/pxe_enabled', 'value': False, 'op': 'add'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.21\", \"debuginfo\": null}"} +GET: /v1/nodes/detail?resource_class=fake {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-81e0afd8-a0b9-4836-b61b-f391d896954a +Openstack-Request-Id: req-8919cf8a-4902-4eee-95e2-936f180ac761 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/address', 'value': 'invalid-format', 'op': 'replace'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.21\", \"debuginfo\": null}"} +GET: /v1/nodes?traits=CUSTOM_TRAIT_1 {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-784d72b2-fec8-4bdc-b935-cf8561a83c02 +Openstack-Request-Id: req-d194039d-0c59-4127-a89c-2d685f0e9a65 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/52:54:00:cf:2d:31 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: traits\", \"debuginfo\": null}"} +GET: /v1/nodes/detail?traits=CUSTOM_TRAIT_1 {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c05cbe68-75a7-4f40-8ef7-9842719c63a7 +Openstack-Request-Id: req-2d277357-f736-4ba1-b601-8c0768328d04 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: traits\", \"debuginfo\": null}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:45.728505+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_configdrive_dict +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_configdrive_dict ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_custom_fields +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_mandatory +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_mandatory ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_node_id +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_node_id ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_port_id_missing +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_port_id_missing ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_custom_fields_show_password +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_custom_fields_show_password ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_network_interface +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_network_interface ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_with_optional +ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_with_optional ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_allow_node_logical_names_post_name +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_allow_node_logical_names_post_name ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-49be053a-45e7-4fde-86ba-f2225f5e930e +Openstack-Request-Id: req-7a6d07f4-2725-476d-9c4f-e7408fbc7c97 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:16.763543+00:00", "updated_at": "2024-01-06T13:32:16.965367+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo": "bar"}, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 200 OK +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:43.526648+00:00", "updated_at": "2024-01-06T14:10:43.615876+00:00", "address": "aa:bb:cc:dd:ee:ff", "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-6d0d3ae2-cf00-46ef-af0d-2a71dc9070e3 +Openstack-Request-Id: req-a650961f-64f3-43a2-8d46-f687c5222507 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.38 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:17.275734+00:00", "updated_at": "2024-01-06T13:32:17.490671+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 409 Conflict +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\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': '', 'op': 'replace'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-17b7ea64-ecc2-4638-bcb9-ce9c91926a2d +Openstack-Request-Id: req-bfb194c9-ed61-425a-ada3-a7e90de0ed5e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/ports/be624f60-d2cd-4139-8933-25fe7935b727 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A non-empty value is required when setting physical_network\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 1234, 'op': 'replace'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-947a424e-b2ba-46dd-a089-ed7cf6302acd +Openstack-Request-Id: req-9c0ffc00-d0e3-4836-a6a5-3ba88cfa2d10 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port be624f60-d2cd-4139-8933-25fe7935b727 could not be found.\", \"debuginfo\": null}"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/address', 'value': 'AA:BB:CC:DD:EE:FF', 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 1234 is not of type 'string', 'null'\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp', 'op': 'replace'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b7e2a4e9-27d0-4227-97f7-29ea2e4ad767 +Openstack-Request-Id: req-a04e1031-1b4a-4c04-ba84-ce79088bbb67 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:18.804467+00:00", "updated_at": "2024-01-06T13:32:18.980906+00:00", "address": "aa:bb:cc:dd:ee:ff", "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/pxe_enabled', 'value': True, 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp' is too long\", \"debuginfo\": null}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/ba6576cb-47a3-4e1c-ab56-217e62bb5be8 [{'path': '/address', 'value': '00:00:00:00:00:00', 'op': 'replace'}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-95c82ad2-8241-4a64-a326-c0187fc06e36 +Openstack-Request-Id: req-d9109248-d899-4583-bc67-05cc91b276bd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.19 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:32:19.267566+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/pxe_enabled', 'value': True, 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_pxe_enabled_old_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_pxe_enabled_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__GetPortByAddress.test__get_ports_by_address -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__GetPortByAddress.test__get_ports_by_address ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byaddress -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byaddress ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_none -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_none ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:18.211647+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': 'project', 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': None, 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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 +X-Openstack-Ironic-Api-Version: 1.24 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +PATCH: /v1/ports/0ea0c23b-3e31-4e62-8e59-c42ea79c4b8d [{'path': '/local_link_connection/network_type', 'op': 'remove'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e973c36c-3bb1-4b75-b47a-ac7e46971880 +Openstack-Request-Id: req-2611cad2-01c0-40c3-8c1a-3238a5467a3a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -GOT:Response: 400 Bad Request +{"uuid": "0ea0c23b-3e31-4e62-8e59-c42ea79c4b8d", "created_at": "2024-01-06T14:10:45.017419+00:00", "updated_at": "2024-01-06T14:10:45.103948+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, "links": [{"href": "http://localhost/v1/ports/0ea0c23b-3e31-4e62-8e59-c42ea79c4b8d", "rel": "self"}, {"href": "http://localhost/ports/0ea0c23b-3e31-4e62-8e59-c42ea79c4b8d", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/local_link_connection/network_type', 'op': 'remove'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-faaa1cf4-3559-445a-8288-473d9af9f15c +Openstack-Request-Id: req-86eaaa8b-f5ab-4ab0-9408-0142515f904b X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +X-Openstack-Ironic-Api-Version: 1.63 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/local_link_connection/switch_id', 'op': 'remove'}] GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-a47c61c6-734e-4e99-8fdc-993fcde3c789 +Openstack-Request-Id: req-2b49fdd3-c52e-401f-9cf9-543e1179126b X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'network_interface': 'flat', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_network_interface -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_network_interface ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byid -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_portgroups_subresource -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_portgroups_subresource ... ok -GOT:{'nodes': [{'uuid': '81638e52-47d3-4e1f-889f-e0052bceb3ab', 'created_at': '2024-01-06T13:32:17.741538+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'foo', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'links': [{'href': 'http://localhost/v1/nodes/81638e52-47d3-4e1f-889f-e0052bceb3ab', 'rel': 'self'}, {'href': 'http://localhost/nodes/81638e52-47d3-4e1f-889f-e0052bceb3ab', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/81638e52-47d3-4e1f-889f-e0052bceb3ab/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/81638e52-47d3-4e1f-889f-e0052bceb3ab/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/81638e52-47d3-4e1f-889f-e0052bceb3ab/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/81638e52-47d3-4e1f-889f-e0052bceb3ab/states', 'rel': 'bookmark'}]}]} -GET: /v1/nodes/detail?resource_class=bar {} -GOT:{'nodes': [{'uuid': 'b8b27a09-f32a-4b57-8809-4a92d878b0bc', 'created_at': '2024-01-06T13:32:17.764715+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'bar', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'links': [{'href': 'http://localhost/v1/nodes/b8b27a09-f32a-4b57-8809-4a92d878b0bc', 'rel': 'self'}, {'href': 'http://localhost/nodes/b8b27a09-f32a-4b57-8809-4a92d878b0bc', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/b8b27a09-f32a-4b57-8809-4a92d878b0bc/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/b8b27a09-f32a-4b57-8809-4a92d878b0bc/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/b8b27a09-f32a-4b57-8809-4a92d878b0bc/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/b8b27a09-f32a-4b57-8809-4a92d878b0bc/states', 'rel': 'bookmark'}]}]} -GET: /v1/nodes?resource_class=fake {} -GOT:Response: 406 Not Acceptable +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/address', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-afdd498d-66ff-4388-85f9-6ebdba6f4bcc +Openstack-Request-Id: req-1bd399b8-801f-4d9e-9848-8c7cd092c41e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes/detail?resource_class=fake {} -GOT:Response: 406 Not Acceptable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'address' is a required property\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo1', 'op': 'remove'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b96dee11-49a0-4526-a84c-5f327b2a8f74 +Openstack-Request-Id: req-def112db-ed6e-46cf-b0a1-750f19df671c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes?traits=CUSTOM_TRAIT_1 {} -GOT:Response: 400 Bad Request +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:45.796808+00:00", "updated_at": "2024-01-06T14:10:45.894279+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo2": "bar2", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra', 'op': 'remove'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0838cfd8-1c58-4b06-b7c4-3bce12951db1 +Openstack-Request-Id: req-c09a77ce-11bf-41c6-9773-28662aa415d1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: traits\", \"debuginfo\": null}"} -GET: /v1/nodes/detail?traits=CUSTOM_TRAIT_1 {} +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:45.796808+00:00", "updated_at": "2024-01-06T14:10:45.997206+00:00", "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-272b2aa9-d34f-4bb6-901a-7b0c084f4636 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: traits\", \"debuginfo\": null}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:20.277317+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_configdrive_dict -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_configdrive_dict ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_network_interface_old_api_version -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_network_interface_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_custom_fields -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_ports_subresource -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_ports_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname_not_existed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname_not_existed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_custom_fields_show_password -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_custom_fields_show_password ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_ports_subresource_no_port_id -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_ports_subresource_no_port_id ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname_with_json -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname_with_json ... ok -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-ddc45584-f5ae-4436-9b3f-8d161132e8b0 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:20.311720+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", "cpus": "8", "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, "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:20.311720+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': None, 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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-48472207-138f-4695-a542-2d780d1875e2 +Openstack-Request-Id: req-7fcda892-7c35-48a7-9e2d-5e6221fa00d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_chassis_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_chassis_uuid ... ok +{"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\", \"debuginfo\": null}"} +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_non_existent_property_fail +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_non_existent_property_fail ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_allow_node_logical_names_pre_name +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_allow_node_logical_names_pre_name ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_deleted_chassis ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_deleted_chassis ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_drive_console_enabled -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_drive_console_enabled ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_node_locked -ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_node_locked ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:20.665754+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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?fields=extra,instance_info {} -GOT:{'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'}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=driver_info {} -GOT:{'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'}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:22.041593+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/node.json.json {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_double_json -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_double_json ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_default_resource_class -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_default_resource_class ... ok -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-70f16b08-31e7-4493-9f5b-7f3049a9322e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e36efd11-9b29-47e0-b6c6-6d6a6479411f", "created_at": "2024-01-06T13:32:19.201503+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", "cpus": "8", "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/e36efd11-9b29-47e0-b6c6-6d6a6479411f", "rel": "self"}, {"href": "http://localhost/nodes/e36efd11-9b29-47e0-b6c6-6d6a6479411f", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e36efd11-9b29-47e0-b6c6-6d6a6479411f/ports", "rel": "self"}, {"href": "http://localhost/nodes/e36efd11-9b29-47e0-b6c6-6d6a6479411f/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e36efd11-9b29-47e0-b6c6-6d6a6479411f/states", "rel": "self"}, {"href": "http://localhost/nodes/e36efd11-9b29-47e0-b6c6-6d6a6479411f/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e36efd11-9b29-47e0-b6c6-6d6a6479411f/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e36efd11-9b29-47e0-b6c6-6d6a6479411f/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e36efd11-9b29-47e0-b6c6-6d6a6479411f/volume", "rel": "self"}, {"href": "http://localhost/nodes/e36efd11-9b29-47e0-b6c6-6d6a6479411f/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/a408dc39-cae4-48d2-98c1-b58318c6e512 [] +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_by_name_no_logical_name +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_by_name_no_logical_name ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0c889406-9aaa-45fc-ba90-e623ae8b8890 +Openstack-Request-Id: req-2afa9891-79ac-41bc-ba9f-1e820dce3aa5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "a408dc39-cae4-48d2-98c1-b58318c6e512", "created_at": "2024-01-06T13:32:19.976611+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", "cpus": "8", "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/a408dc39-cae4-48d2-98c1-b58318c6e512", "rel": "self"}, {"href": "http://localhost/nodes/a408dc39-cae4-48d2-98c1-b58318c6e512", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/a408dc39-cae4-48d2-98c1-b58318c6e512/ports", "rel": "self"}, {"href": "http://localhost/nodes/a408dc39-cae4-48d2-98c1-b58318c6e512/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/a408dc39-cae4-48d2-98c1-b58318c6e512/states", "rel": "self"}, {"href": "http://localhost/nodes/a408dc39-cae4-48d2-98c1-b58318c6e512/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/a408dc39-cae4-48d2-98c1-b58318c6e512/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/a408dc39-cae4-48d2-98c1-b58318c6e512/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/a408dc39-cae4-48d2-98c1-b58318c6e512/volume", "rel": "self"}, {"href": "http://localhost/nodes/a408dc39-cae4-48d2-98c1-b58318c6e512/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/9bb50f13-0b8d-4ade-ad2d-d91fefdef9ff [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-82c27da3-f899-41b8-8abb-aa4e5eb301d1 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/9bb50f13-0b8d-4ade-ad2d-d91fefdef9cc [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 403 Forbidden +{"uuid": "ba4861a3-946d-4a23-bd3e-866245efd5e6", "created_at": "2024-01-06T14:10:43.917633+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", "cpus": "8", "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/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "self"}, {"href": "http://localhost/nodes/ba4861a3-946d-4a23-bd3e-866245efd5e6/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?reset_interfaces=True [{'path': '/driver', 'value': 'ipmi', 'op': 'replace'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-9f0d18cd-3dcb-4386-8d47-6434796aa31b +Openstack-Request-Id: req-a1947ffd-0229-4f83-a97b-32a04085292a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?reset_interfaces=True [{'path': '/name', 'value': 'new name', 'op': 'replace'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d2cd1ea7-2031-4a1d-9adb-739a4607bc25 +Openstack-Request-Id: req-41cbaa4d-d0f4-453f-a4be-1e8d6650879c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/driver', 'value': 'foo', 'op': 'add'}] -GOT:Response: 409 Conflict +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}"} +PATCH: /v1/nodes/2625f61f-3342-4fc5-beeb-629fdb7e07a9 [{'path': '/network_interface', 'op': 'remove'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5df08291-253c-48d9-80e8-c5f6ec079131 +Openstack-Request-Id: req-467ff49b-7e4b-4486-b376-e8563422f481 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/name', 'op': 'add', 'value': 'Windows ME'}, {'path': '/name', 'op': 'replace', 'value': 'Guido Van Error'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_name_twice_both_invalid -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_name_twice_both_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_multi -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_multi ... ok +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "2625f61f-3342-4fc5-beeb-629fdb7e07a9", "created_at": "2024-01-06T14:10:46.172587+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", "cpus": "8", "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/2625f61f-3342-4fc5-beeb-629fdb7e07a9", "rel": "self"}, {"href": "http://localhost/nodes/2625f61f-3342-4fc5-beeb-629fdb7e07a9", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/2625f61f-3342-4fc5-beeb-629fdb7e07a9/ports", "rel": "self"}, {"href": "http://localhost/nodes/2625f61f-3342-4fc5-beeb-629fdb7e07a9/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/2625f61f-3342-4fc5-beeb-629fdb7e07a9/states", "rel": "self"}, {"href": "http://localhost/nodes/2625f61f-3342-4fc5-beeb-629fdb7e07a9/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/2625f61f-3342-4fc5-beeb-629fdb7e07a9/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/2625f61f-3342-4fc5-beeb-629fdb7e07a9/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/2625f61f-3342-4fc5-beeb-629fdb7e07a9/volume", "rel": "self"}, {"href": "http://localhost/nodes/2625f61f-3342-4fc5-beeb-629fdb7e07a9/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/917f3616-d9fe-4bd8-8203-262845ef6146 [{'path': '/storage_interface', 'op': 'remove'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_storage_interface +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_storage_interface ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_by_uuid_no_logical_name +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_by_uuid_no_logical_name ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_expect_name +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_expect_name ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network_old_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network_old_api_version ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:45.881617+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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?fields=extra,instance_info {} +GOT:{'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'}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=driver_info {} +GOT:{'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'}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:46.447294+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/node.json.json {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_double_json +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_double_json ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_expect_uuid +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_expect_uuid ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_json ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_json ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_name_twice_second_invalid -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_name_twice_second_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_mandatory_field_driver -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_mandatory_field_driver ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_node_id -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_node_id ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network_upgrade +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network_upgrade ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_invalid_name +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_invalid_name ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_allowed_in_maintenance +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_allowed_in_maintenance ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_is_valid_node_name +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_is_valid_node_name ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_populate_node_uuid +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_populate_node_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_uuid +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_uuid ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_json_in_name ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_json_in_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_connectors_subresource -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_connectors_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_node_uuid -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_node_uuid ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:22.457563+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': 'node.json', 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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'}]} +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_id_with_uuid +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_id_with_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_id_with_uuid_not_found +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_id_with_uuid_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_uuid_with_id +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_uuid_with_id ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_address_already_exist +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_address_already_exist ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:46.666245+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': 'node.json', 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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.json {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:23.005541+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:46.879044+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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/node.json {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:23.501628+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': 'node.json', 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:47.041985+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': 'node.json', 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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 {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_no_agent_secret ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_no_agent_secret ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_connectors_subresource_no_connector_id -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_connectors_subresource_no_connector_id ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_allowed_in_power_transition +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_allowed_in_power_transition ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_uuid_with_id_not_found +ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_uuid_with_id_not_found ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_suffix ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_suffix ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_root -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_root ... ok -GOT:Response: 201 Created +ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_not_pinned +ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_not_pinned ... ok +ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_not_pinned_in_release_mappings +ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_not_pinned_in_release_mappings ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_local_link_connection +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_local_link_connection ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_owner_fields +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_owner_fields ... ok +ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_pinned +ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_pinned ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_multi +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_multi ... ok +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-895e1464-e1b3-4346-98d1-3cee46b78e17 +Openstack-Request-Id: req-751a184f-c14e-4da8-888a-0994956006a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:21.687964+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", "cpus": "8", "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 {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "917f3616-d9fe-4bd8-8203-262845ef6146", "created_at": "2024-01-06T14:10:46.442343+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", "cpus": "8", "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/917f3616-d9fe-4bd8-8203-262845ef6146", "rel": "self"}, {"href": "http://localhost/nodes/917f3616-d9fe-4bd8-8203-262845ef6146", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/917f3616-d9fe-4bd8-8203-262845ef6146/ports", "rel": "self"}, {"href": "http://localhost/nodes/917f3616-d9fe-4bd8-8203-262845ef6146/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/917f3616-d9fe-4bd8-8203-262845ef6146/states", "rel": "self"}, {"href": "http://localhost/nodes/917f3616-d9fe-4bd8-8203-262845ef6146/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/917f3616-d9fe-4bd8-8203-262845ef6146/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/917f3616-d9fe-4bd8-8203-262845ef6146/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/917f3616-d9fe-4bd8-8203-262845ef6146/volume", "rel": "self"}, {"href": "http://localhost/nodes/917f3616-d9fe-4bd8-8203-262845ef6146/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/c71aff89-a04a-4d6f-84ab-17a12e6cd4eb [{'path': '/instance_uuid', 'op': 'remove'}] +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-061edaf2-cb30-46d7-b6fb-65871f806f49 +Openstack-Request-Id: req-6b4c71f3-33b7-4a53-9514-653db47aaa4b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:22.643369+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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:22.643369+00:00', 'updated_at': None, 'clean_step': {}, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': 'flat', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -GOT:Response: 400 Bad Request +{"uuid": "c71aff89-a04a-4d6f-84ab-17a12e6cd4eb", "created_at": "2024-01-06T14:10:46.846942+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", "cpus": "8", "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/c71aff89-a04a-4d6f-84ab-17a12e6cd4eb", "rel": "self"}, {"href": "http://localhost/nodes/c71aff89-a04a-4d6f-84ab-17a12e6cd4eb", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/c71aff89-a04a-4d6f-84ab-17a12e6cd4eb/ports", "rel": "self"}, {"href": "http://localhost/nodes/c71aff89-a04a-4d6f-84ab-17a12e6cd4eb/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/61d20cf9-bf1e-4f06-85dc-a3171f375b43 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f1b8b41a-091a-4052-b49c-cd31bd3a9a04 +Openstack-Request-Id: req-757f0002-f5f6-4196-9e47-054a6d4cf89a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'owner': 'cowsay', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_targets_subresource -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_targets_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_owner_fields -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_owner_fields ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_root_non_existent -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_root_non_existent ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_old_api_version -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_id -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_id ... ok +{"uuid": "61d20cf9-bf1e-4f06-85dc-a3171f375b43", "created_at": "2024-01-06T14:10:47.125968+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", "cpus": "8", "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/61d20cf9-bf1e-4f06-85dc-a3171f375b43", "rel": "self"}, {"href": "http://localhost/nodes/61d20cf9-bf1e-4f06-85dc-a3171f375b43", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/61d20cf9-bf1e-4f06-85dc-a3171f375b43/ports", "rel": "self"}, {"href": "http://localhost/nodes/61d20cf9-bf1e-4f06-85dc-a3171f375b43/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/c0c8649e-cc14-445e-a8d3-2cc7184e4bcb [{'path': '/automated_clean', 'value': True, 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean ... ok +ironic.tests.unit.api.controllers.v1.test_volume.TestGetVolume.test_get_volume +ironic.tests.unit.api.controllers.v1.test_volume.TestGetVolume.test_get_volume ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_protected_fields ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_protected_fields ... ok -GOT:Response: 406 Not Acceptable -Content-Type: application/json -Openstack-Request-Id: req-9409bb06-bd67-4d69-9dc2-9adf64a2ff3d +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean_old_api +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean_old_api ... ok +ironic.tests.unit.api.controllers.v1.test_volume.TestGetVolume.test_get_volume_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume.TestGetVolume.test_get_volume_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_node_id +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_node_id ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_retired_fields +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_retired_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean_with_false +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean_with_false ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_storage_interface_fields +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_storage_interface_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_by_name_unsupported +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_by_name_unsupported ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_node_uuid +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_node_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_storage_interface_fields_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_storage_interface_fields_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_custom_fields +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_non_existent_node_uuid +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_non_existent_node_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_conductor_group +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_conductor_group ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices_by_name +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices_by_name ... ok +GOT:Response: 202 Accepted +Openstack-Request-Id: req-38690f07-fc74-4d7d-bd57-119494c4c53e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -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\"}"} -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 204 No Content -Openstack-Request-Id: req-db95c7bc-12a7-4980-b6af-f46ebe2de1d8 +X-Openstack-Ironic-Api-Version: 1.80 + +POST: /v1/heartbeat/test.1 {'callback_url': 'url', 'agent_token': 'token'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-eb439d45-a87a-423e-988c-34574bda1252 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -DELETE: /v1/portgroups/pg.1 -GOT:Response: 204 No Content -Openstack-Request-Id: req-cc778a0e-aaa8-42ef-845b-2c46384b1ef9 +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123.json {'callback_url': 'url', 'agent_token': 'maybe some magic'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-6d072237-1910-40f7-b124-37bd7d5b87bd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -DELETE: /v1/portgroups/blah -GOT:Response: 404 Not Found +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_verify_ca': 'abcd'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-a0c91455-9392-4f01-86fe-a59bccd54d17 +Openstack-Request-Id: req-a36807a3-dea1-4e8d-905b-15cb94d6ac01 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup blah could not be found.\", \"debuginfo\": null}"} -DELETE: /v1/portgroups/pg.1.json -GOT:Response: 204 No Content -Openstack-Request-Id: req-064afa7c-ae9d-457e-9b16-5bd4f12977c0 +X-Openstack-Ironic-Api-Version: 1.67 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field \\\"agent_verify_ca\\\" not recognised in this version\", \"debuginfo\": null}"} +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_version': '1.4.1'} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-edfecbbe-dc91-40ba-bb49-3f2dc3606d59 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 - -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.35 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field \\\"agent_version\\\" not recognised\", \"debuginfo\": null}"} +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': '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 -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 409 Conflict +Openstack-Request-Id: req-2c8f859c-9a75-4183-b0d0-56d784ac64f9 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +POST: /v1/heartbeat/a62017ca-6f87-49ad-8a9b-f9b155adf6de {'callback_url': 'url'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a980824e-9724-44d1-a839-756940afa175 +Openstack-Request-Id: req-47f6589a-8d97-410c-ac69-c7252424f962 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'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 +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +GET: /v1/volume/ {} +GOT:{'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/ {} +GOT:{'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/ {} +GOT:{'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 {} +GOT:{'connectors': []} +GET: /volume/connectors {} +GOT:{'connectors': []} +GET: /v1/volume/targets {} +GOT:{'targets': []} +GET: /volume/targets {} +GOT:{'targets': []} +GET: /v1/volume/ {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a270413c-e25c-4a1e-b3fd-9d51b4992d11 +Openstack-Request-Id: req-039b7bfa-32e0-498c-8b64-6f91ef36914b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:22.966974+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/node_id', 'value': '1', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +GET: /v1/volume/connectors/?limit=3 {} +GOT:{'connectors': [{'uuid': '1eb86b39-98b4-404b-9b61-d8a72880a1a5', 'connector_id': 'test-connector_id-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/1eb86b39-98b4-404b-9b61-d8a72880a1a5', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/1eb86b39-98b4-404b-9b61-d8a72880a1a5', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '016ce300-c705-4c41-adde-520ea1175fd4', 'connector_id': 'test-connector_id-1', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/016ce300-c705-4c41-adde-520ea1175fd4', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/016ce300-c705-4c41-adde-520ea1175fd4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'fa9ded15-6250-439d-92dc-12185d87c160', 'connector_id': 'test-connector_id-2', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/fa9ded15-6250-439d-92dc-12185d87c160', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/fa9ded15-6250-439d-92dc-12185d87c160', '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=fa9ded15-6250-439d-92dc-12185d87c160'} +GET: /v1/volume/connectors?fields=uuid,extra {} +GOT:{'connectors': [{'uuid': '6d37245e-96da-40ff-bf7c-4e3210d23811', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/connectors/6d37245e-96da-40ff-bf7c-4e3210d23811', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/6d37245e-96da-40ff-bf7c-4e3210d23811', 'rel': 'bookmark'}]}, {'uuid': 'b70fe093-b4d6-4d1e-8e69-7cedf81ff726', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/connectors/b70fe093-b4d6-4d1e-8e69-7cedf81ff726', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/b70fe093-b4d6-4d1e-8e69-7cedf81ff726', 'rel': 'bookmark'}]}, {'uuid': 'cd6d4124-2d8d-4204-995c-cfbae3ad41ad', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/connectors/cd6d4124-2d8d-4204-995c-cfbae3ad41ad', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/cd6d4124-2d8d-4204-995c-cfbae3ad41ad', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/volume/connectors?sort_key=id&sort_dir=asc&fields=uuid,extra&limit=3&marker=cd6d4124-2d8d-4204-995c-cfbae3ad41ad'} +GET: /v1/volume/connectors {} +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_default_limit +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_default_limit ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_detail +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_detail ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_conductor_group_old_api +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_conductor_group_old_api ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices_iface_not_supported +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices_iface_not_supported ... ok +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/non-existent', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-4430e217-f47d-4fcb-be9f-de204c079b71 +Openstack-Request-Id: req-9112be84-dc8b-4370-8729-ac4c1f64b8f4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] +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 a non-existent object 'non-existent'\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'op': 'remove'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-906520fa-b385-4a11-aaff-955e5f594332 +Openstack-Request-Id: req-2019081a-cb21-4828-bc35-a208a5f1c60a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:23.857478+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/address', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.34 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:46.493215+00:00", "updated_at": "2024-01-06T14:10:46.597235+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'op': 'remove'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-a6b5f690-7a11-4fa4-9980-b77263bad1c0 +Openstack-Request-Id: req-28f1d1c6-de6e-4e87-a11b-5356e80295bd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:24.245452+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.33 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'op': 'remove'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-a48f712c-bd97-4a77-89aa-9035a20e89dc +Openstack-Request-Id: req-3950d369-310e-4f03-9deb-a4ffd5c8a6ce X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/address', 'op': 'remove'}] -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_address -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_address ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_mode_not_allowed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_mode_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_retired_fields -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_retired_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_storage_interface_fields -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_storage_interface_fields ... ok -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.34 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/uuid', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-cd0f1303-e389-4b34-9dac-4226aea4e431 +Openstack-Request-Id: req-184b369a-2161-495f-b427-5ce7cd9a4319 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:24.115369+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": "cowsay", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:24.115369+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': 'cowsay', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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 +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\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/address', 'value': 'aa:aa:aa:aa:aa:aa', 'op': 'replace'}] +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-c599d778-c595-4c61-8b63-d9be133969a9 +Openstack-Request-Id: req-cc9f4103-3a79-4b33-9fc9-ca87bbcec6b4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_recorded_project_scope -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_recorded_project_scope ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_multi -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_multi ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_storage_interface_fields_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_storage_interface_fields_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_uuid_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_uuid_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_node_id -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_node_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices ... ok -GOT:Response: 201 Created +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}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/local_link_connection/switch_id', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-3d97c5df-6f46-4aab-909d-82e22db2273e +Openstack-Request-Id: req-b56e39ba-fd00-4bce-84ef-ebc15e131caf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:25.670966+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": "ravensay", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:25.670966+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': 'ravensay', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'owner': 'catsay', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_system_scope -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_system_scope ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices_by_name -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices_by_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_internal_field -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_internal_field ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices_iface_not_supported -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices_iface_not_supported ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_protected_not_allowed -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_protected_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_mandatory_field -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_mandatory_field ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_non_existent_property_fail -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_non_existent_property_fail ... ok -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.19 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:47.419163+00:00", "updated_at": "2024-01-06T14:10:47.510567+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'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 -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-55fe46dd-0e44-4213-aace-3291c455aef2 +Openstack-Request-Id: req-7cbc0887-e296-4192-80a7-2fa790b9e322 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:26.504708+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": "catsay", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:26.504708+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': 'catsay', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'protected': True} +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:47.640044+00:00", "updated_at": "2024-01-06T14:10:47.740019+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo1": "bar1x", "foo2": "bar2x", "foo3": "bar3x"}, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'value': '1', 'op': 'replace'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b97882e8-5984-41a2-bceb-8fd4f9681100 +Openstack-Request-Id: req-538c3261-7ae3-4138-b73e-212bbb9e2e36 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +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\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'replace'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-bb9afe45-3f8c-4705-8c11-afb570c13f92 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:48.025323+00:00", "updated_at": null, "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '12506333-a81c-4d59-9987-889ed5f8687b', 'op': 'replace'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-152071fe-9608-4632-a5ef-85d317640e4e +Openstack-Request-Id: req-c0785202-e22d-421d-9bad-8f476a7f31f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_uuid -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_uuid ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:23.929305+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'agent_secret_token': '******'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 12506333-a81c-4d59-9987-889ed5f8687b could not be found.\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'physnet2', 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network_old_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network_old_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_against_single +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_against_single ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network_upgrade +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network_upgrade ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_and_fields +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_and_fields ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:47.205103+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'agent_secret_token': '******'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/test.1 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:24.308285+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': 'test.1', 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:47.348521+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': 'test.1', 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, '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?fields=owner {} GOT:{'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'}]} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=protected {} @@ -11219,7 +11534,7 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=storage_interface {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-5f7753c8-f65a-4d4b-b22f-aefae1ad70fe +Openstack-Request-Id: req-396bb59f-50dd-488d-8123-c1982a53cdbe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.32 @@ -11231,7 +11546,7 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-4b54fa06-a6fc-4864-b217-112c71de9e31 +Openstack-Request-Id: req-23697e38-2034-42d2-a182-999c00693760 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -11241,265 +11556,173 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators_iface_not_supported ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators_iface_not_supported ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators_versioning -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators_versioning ... ok -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-0de0833f-1f71-4ce9-8f77-5f8ef008d8cc -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'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-e51144b9-c4fc-45e3-bfff-66c801a1d309 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 403 Forbidden +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_by_node_name_ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_by_node_name_ok ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f0767b6d-fd2c-4181-a2bb-08e06b4e2cce +Openstack-Request-Id: req-066f4cca-839d-4812-9659-4b5094e2eec2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.47 +{"uuid": "c0c8649e-cc14-445e-a8d3-2cc7184e4bcb", "created_at": "2024-01-06T14:10:47.495193+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", "cpus": "8", "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/c0c8649e-cc14-445e-a8d3-2cc7184e4bcb", "rel": "self"}, {"href": "http://localhost/nodes/c0c8649e-cc14-445e-a8d3-2cc7184e4bcb", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/c0c8649e-cc14-445e-a8d3-2cc7184e4bcb/ports", "rel": "self"}, {"href": "http://localhost/nodes/c0c8649e-cc14-445e-a8d3-2cc7184e4bcb/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c0c8649e-cc14-445e-a8d3-2cc7184e4bcb/states", "rel": "self"}, {"href": "http://localhost/nodes/c0c8649e-cc14-445e-a8d3-2cc7184e4bcb/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c0c8649e-cc14-445e-a8d3-2cc7184e4bcb/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c0c8649e-cc14-445e-a8d3-2cc7184e4bcb/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c0c8649e-cc14-445e-a8d3-2cc7184e4bcb/volume", "rel": "self"}, {"href": "http://localhost/nodes/c0c8649e-cc14-445e-a8d3-2cc7184e4bcb/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/392f9c33-ca59-4e2e-9fee-59c34f236bb0 [{'path': '/automated_clean', 'value': True, 'op': 'replace'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-c5e63c08-bf21-451f-89a7-61ef8a943899 +Openstack-Request-Id: req-729b829e-aab4-41cd-bde4-ab6a0713a095 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Missing mandatory parameter: connector_uuid\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.46 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/15daf492-67bf-48c7-a919-f689f20e7587 [{'path': '/automated_clean', 'value': False, 'op': 'replace'}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1b89bed0-dd83-46ee-8e10-5308f90613b1 +Openstack-Request-Id: req-133f0beb-0092-4bf3-855c-7131d7baab2c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_id', 'op': 'remove'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.47 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} +PATCH: /v1/nodes/node-57.1 [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'replace'}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6efbd0ea-218b-40a0-a099-a7542227e12d +Openstack-Request-Id: req-51ff6783-b0dd-411f-84fb-45bb0fe0435c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_uuid', 'op': 'remove'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node node-57.1 could not be found.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/df532c50-45d8-46ed-a159-991078cbc99f [{'path': '/conductor_group', 'value': 'foogroup', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e6998c36-9f87-4fe7-a344-f99525294629 +Openstack-Request-Id: req-ed9c0f45-3923-4f6c-85a5-c2ca4ceef241 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.25 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:25.387667+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_uuid', 'op': 'remove'}] +X-Openstack-Ironic-Api-Version: 1.46 +{"uuid": "df532c50-45d8-46ed-a159-991078cbc99f", "created_at": "2024-01-06T14:10:48.255698+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", "cpus": "8", "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/df532c50-45d8-46ed-a159-991078cbc99f", "rel": "self"}, {"href": "http://localhost/nodes/df532c50-45d8-46ed-a159-991078cbc99f", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/df532c50-45d8-46ed-a159-991078cbc99f/ports", "rel": "self"}, {"href": "http://localhost/nodes/df532c50-45d8-46ed-a159-991078cbc99f/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/df532c50-45d8-46ed-a159-991078cbc99f/states", "rel": "self"}, {"href": "http://localhost/nodes/df532c50-45d8-46ed-a159-991078cbc99f/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/df532c50-45d8-46ed-a159-991078cbc99f/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/df532c50-45d8-46ed-a159-991078cbc99f/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/df532c50-45d8-46ed-a159-991078cbc99f/volume", "rel": "self"}, {"href": "http://localhost/nodes/df532c50-45d8-46ed-a159-991078cbc99f/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/b3b4d56d-a76a-4758-97fe-c87ba9600e5a [{'path': '/conductor_group', 'value': 'foogroup', 'op': 'add'}] GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-b3475de6-41fe-45bc-acdc-1a3468170ebf +Openstack-Request-Id: req-4fa192ec-2dae-4b3f-8a5f-1bbf477a58e8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.24 +X-Openstack-Ironic-Api-Version: 1.45 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/last_error', 'op': 'remove'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-1b732a9b-5dea-48f9-900b-c27c8b31d550 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/driver', 'op': 'remove'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-aca12f76-9fa4-4ce5-b2a2-bb6d6eef1c20 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/extra/non-existent', 'op': 'remove'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_non_existent_property_fail -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_non_existent_property_fail ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_reserved_name -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_reserved_name ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_address_already_exist -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_address_already_exist ... ok +PATCH: /v1/nodes/c27c6126-d66a-47a6-be41-c5b7a641a062 [{'path': '/description', 'value': 'meow', 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_description +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_description ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_description_oversize +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_description_oversize ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators_versioning +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators_versioning ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_false +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_false ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_traits_fields ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_traits_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_ok ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_multi -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_multi ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_old_api +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_old_api ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_bad_driver +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_bad_driver ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_sepecified_by_path +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_sepecified_by_path ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_traits_fields_invalid_api_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_traits_fields_invalid_api_version ... ok -POST: /v1/nodes {'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', 'cpus': '8', '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-7b26f63e-8697-4aa9-b4c4-604c8fa6b7f5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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 {'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', 'cpus': '8', '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-bad3058e-1c84-4cdf-bb1a-64b15a514f09 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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 {'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', 'cpus': '8', '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-a499f9b8-b4a8-4c10-80df-b03fdbfc6521 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -POST: /v1/nodes {'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', 'cpus': '8', '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-39e2f442-a901-40f3-be77-e5de4a92a67e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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 {'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', 'cpus': '8', '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-1d33bce0-22d6-42d7-99e7-d82b143b2c4f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'resource_class': 'foo', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_resource_class -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_resource_class ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_node_id -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_node_id ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_remove +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_remove ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_empty +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_empty ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_with_allocation ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_with_allocation ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_resource_class_old_api_version -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_resource_class_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_clean_step -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_clean_step ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_all_by_node_name_ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_all_by_node_name_ok ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_remove_add +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_remove_add ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6b3898b4-329b-481f-a1d4-c7eb2ba75cf7 +Openstack-Request-Id: req-0d2ca16d-287d-46a7-a6de-e477ae1d0fef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:25.109309+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/mode', 'op': 'remove'}] +X-Openstack-Ironic-Api-Version: 1.51 +{"uuid": "c27c6126-d66a-47a6-be41-c5b7a641a062", "created_at": "2024-01-06T14:10:48.759333+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", "cpus": "8", "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/c27c6126-d66a-47a6-be41-c5b7a641a062", "rel": "self"}, {"href": "http://localhost/nodes/c27c6126-d66a-47a6-be41-c5b7a641a062", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/c27c6126-d66a-47a6-be41-c5b7a641a062/ports", "rel": "self"}, {"href": "http://localhost/nodes/c27c6126-d66a-47a6-be41-c5b7a641a062/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c27c6126-d66a-47a6-be41-c5b7a641a062/states", "rel": "self"}, {"href": "http://localhost/nodes/c27c6126-d66a-47a6-be41-c5b7a641a062/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c27c6126-d66a-47a6-be41-c5b7a641a062/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c27c6126-d66a-47a6-be41-c5b7a641a062/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c27c6126-d66a-47a6-be41-c5b7a641a062/volume", "rel": "self"}, {"href": "http://localhost/nodes/c27c6126-d66a-47a6-be41-c5b7a641a062/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/b6da35ca-cb5d-4346-986b-5d092e17323e [{'path': '/description', 'value': '1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678last weed', 'op': 'replace'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-9c87de54-3d35-425d-9d73-70d49282eaa9 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"'mode' is a mandatory attribute and can not be removed\", \"debuginfo\": null}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/extra/foo1', 'op': 'remove'}] -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-1b81ae60-e53b-456f-b716-b826a13b4167 +Openstack-Request-Id: req-25feb2ec-0193-4f88-b9c0-1b998894df0f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:25.884370+00:00", "updated_at": "2024-01-06T13:32:25.919714+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/extra', 'op': 'remove'}] -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-04e99809-07e4-4b5e-ae57-e80ec75a97c3 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:25.884370+00:00", "updated_at": "2024-01-06T13:32:25.919714+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/node_id', 'op': 'remove'}] +X-Openstack-Ironic-Api-Version: 1.51 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update node with description exceeding 4096 characters\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/driver', 'value': 'bad-driver', 'op': 'replace'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-32452bdc-30c3-46e8-bc50-eec8ea56b9e7 +Openstack-Request-Id: req-a192bdd3-e62f-4a6e-aa5a-a003e8cdb8a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/extra/non-existent', 'op': 'remove'}] +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Fake Error\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/driver_info/this', 'value': 'foo', 'op': 'add'}, {'path': '/driver_info/that', 'value': 'bar', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_bad_driver_info +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_bad_driver_info ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_clean_step +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_clean_step ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_collection_custom_fields +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_collection_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_singular +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_singular ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_set_pxe_enabled_false_old_api +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_set_pxe_enabled_false_old_api ... ok +GOT:{'connectors': [{'uuid': '5165c99e-beed-4243-af6c-37984dde9f12', 'connector_id': 'test-connector_id-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/5165c99e-beed-4243-af6c-37984dde9f12', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/5165c99e-beed-4243-af6c-37984dde9f12', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '66bf69d3-5a42-4e11-b2e6-50f333790e3c', 'connector_id': 'test-connector_id-1', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/66bf69d3-5a42-4e11-b2e6-50f333790e3c', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/66bf69d3-5a42-4e11-b2e6-50f333790e3c', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'd5ea0277-41ac-4d17-be95-9c04abe95801', 'connector_id': 'test-connector_id-2', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/d5ea0277-41ac-4d17-be95-9c04abe95801', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/d5ea0277-41ac-4d17-be95-9c04abe95801', '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=d5ea0277-41ac-4d17-be95-9c04abe95801'} +GET: /v1/volume/connectors?detail=True&limit=3 {} +GOT:{'connectors': [{'uuid': '9d3bcd82-baf7-46aa-bbad-8b126c4ac144', 'created_at': '2024-01-06T14:10:48.491929+00:00', 'updated_at': None, 'connector_id': 'test-connector_id-0', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/9d3bcd82-baf7-46aa-bbad-8b126c4ac144', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/9d3bcd82-baf7-46aa-bbad-8b126c4ac144', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '81b28145-43f3-4e1c-adc1-5227d360d0cc', 'created_at': '2024-01-06T14:10:48.495649+00:00', 'updated_at': None, 'connector_id': 'test-connector_id-1', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/81b28145-43f3-4e1c-adc1-5227d360d0cc', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/81b28145-43f3-4e1c-adc1-5227d360d0cc', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'c7614abf-e790-436a-bdd8-353958dcdd55', 'created_at': '2024-01-06T14:10:48.499135+00:00', 'updated_at': None, 'connector_id': 'test-connector_id-2', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/c7614abf-e790-436a-bdd8-353958dcdd55', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/c7614abf-e790-436a-bdd8-353958dcdd55', '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=c7614abf-e790-436a-bdd8-353958dcdd55'} +GET: /v1/volume/connectors?detail=True {} +GOT:{'connectors': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:48.695457+00:00', 'updated_at': None, '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?detail=True {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-ca784010-cf0e-4d77-b7af-7f022ade8231 +Openstack-Request-Id: req-13fbb174-9070-4db9-aa8a-f5c2157a9b19 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove a non-existent object 'non-existent'\", \"debuginfo\": null}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/uuid', 'op': 'remove'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: detail\", \"debuginfo\": null}"} +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?detail=True&fields=connector_id,extra {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b3c3e468-f8e7-4b97-a478-9f860a544296 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/address', 'value': 'aa:aa:aa:aa:aa:aa', 'op': 'replace'}] -GOT:Response: 409 Conflict -Content-Type: application/json -Openstack-Request-Id: req-97e49c25-84de-4d78-9ba0-71d7bafc4ee7 +Openstack-Request-Id: req-016e45d2-2190-4660-8402-7f270d23a6c5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A port with MAC address aa:aa:aa:aa:aa:aa already exists.\", \"debuginfo\": null}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'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 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: detail\", \"debuginfo\": null}"} +GET: /v1/volume/connectors?detail=True&node=test-node {} +GOT:{'connectors': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:49.117894+00:00', 'updated_at': None, '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?detail=False {} +GOT:{'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'}]} +GET: /v1/volume/connectors?detail=True {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-0ba17b4d-a6ee-4c64-a0c5-f587feffa91c -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:28.835937+00:00", "updated_at": "2024-01-06T13:32:28.861182+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/node_id', 'value': '1', 'op': 'replace'}] +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/volume/connectors/detail {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-7a12f0fc-2e59-4eed-a9cf-7da74585294f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_node_uuid -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_non_existent_node_uuid -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_non_existent_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_singular -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_singular ... ok -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-289e6024-f8b9-410d-86ad-17fae663addb +Openstack-Request-Id: req-258a1cef-d3a3-44a8-b73c-8fde62aa2190 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:29.032097+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", "cpus": "8", "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, "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:29.032097+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': None, 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': 'foo', 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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-db73d348-c316-4d13-838b-899d901963b8 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_conductor_group -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_conductor_group ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for connector_uuid: detail\", \"debuginfo\": null}"} +GET: /v1/volume/connectors {} +GOT:{'connectors': []} +GET: /v1/volume/connectors?node=test-node {} +GOT:{'connectors': [{'uuid': '5cbd51ef-ba7d-4442-8594-6874c7671749', 'connector_id': 'test-value-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/5cbd51ef-ba7d-4442-8594-6874c7671749', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/5cbd51ef-ba7d-4442-8594-6874c7671749', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '9fa86236-547c-4e7b-85a6-f105d9bfc9d4', 'connector_id': 'test-value-1', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/9fa86236-547c-4e7b-85a6-f105d9bfc9d4', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/9fa86236-547c-4e7b-85a6-f105d9bfc9d4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'df69f1a3-93e1-40d9-84f2-98a16bd0d5ad', 'connector_id': 'test-value-2', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/df69f1a3-93e1-40d9-84f2-98a16bd0d5ad', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/df69f1a3-93e1-40d9-84f2-98a16bd0d5ad', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/volume/connectors?fields=uuid,extra {} +GOT:{'connectors': [{'uuid': '560afe18-8df3-4b64-ab14-9e53c4c60813', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/connectors/560afe18-8df3-4b64-ab14-9e53c4c60813', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/560afe18-8df3-4b64-ab14-9e53c4c60813', 'rel': 'bookmark'}]}, {'uuid': '65e2b685-f276-4bb9-a16a-6035dfadc1c8', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/connectors/65e2b685-f276-4bb9-a16a-6035dfadc1c8', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/65e2b685-f276-4bb9-a16a-6035dfadc1c8', 'rel': 'bookmark'}]}, {'uuid': '27988a3f-921c-4ff6-b595-6aa77a0e6c7b', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/connectors/27988a3f-921c-4ff6-b595-6aa77a0e6c7b', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/27988a3f-921c-4ff6-b595-6aa77a0e6c7b', 'rel': 'bookmark'}]}]} +GET: /v1/volume/connectors?fields=connector_id&limit=2 {} +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_collection_pagination_no_uuid +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_collection_pagination_no_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_custom_fields_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_custom_fields_invalid_api_version ... ok GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-63105827-088d-4149-8b9f-5278c6a488e9 +Openstack-Request-Id: req-01e814bd-a722-4aa5-be3b-15ca05e96266 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -11511,615 +11734,485 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=traits {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-5bee2d69-e4d7-41e5-a51a-e674e860461b +Openstack-Request-Id: req-d330b77f-4761-4544-a2e1-2edb7d1fa46d X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=allocation_uuid {} -GOT:{'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': '6ba3b276-8334-4fb1-af1d-84c6fe79ad52'} +GOT:{'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': 'b031c6b1-b409-4c12-a57d-3a48e5d51fc3'} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:29.740700+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:49.804260+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:29.740700+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:49.804260+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:30.185545+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:50.025745+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_description ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_description ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_chassis_id -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_chassis_id ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_address_invalid_format -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_address_invalid_format ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_conductor_group_bad_version -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_conductor_group_bad_version ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_driver_internal ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_driver_internal ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byaddress_not_allowed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byaddress_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_custom_fields_invalid_fields +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_custom_fields_invalid_fields ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_address_invalid_format +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_address_invalid_format ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_inspection ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_inspection ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_chassis_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_chassis_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byid -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byid ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byid_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byid_invalid_api_version ... ok -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-74ae739c-b1af-4b68-b41c-95130a803f52 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.46 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:30.247561+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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:30.247561+00:00', 'updated_at': None, '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': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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-c75fcf8e-0fb9-4aea-b279-371e7c28475e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -POST: /v1/nodes {'uuid': '555174f6-0ef0-4bd9-b62d-a87019a63c2c', '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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'boot_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_consoled_enabled -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_consoled_enabled ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:30.185545+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': 'useful piece', 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_byaddress_not_allowed +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_byaddress_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one_custom_fields +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one_invalid_api_version ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:50.025745+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': 'useful piece', 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:30.725595+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:50.194103+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:30.725595+00:00', 'updated_at': None, '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': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:50.194103+00:00', 'updated_at': None, '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': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:31.204497+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:50.390633+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:31.204497+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': '2015-03-18T19:20:00+00:00', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:50.390633+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': '2015-03-18T19:20:00+00:00', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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/detail {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_interface_fields ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_interface_fields ... ok -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c -Openstack-Request-Id: req-4ad55e40-e864-411a-a724-480749164da8 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.40 -{"uuid": "555174f6-0ef0-4bd9-b62d-a87019a63c2c", "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", "cpus": "8", "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/555174f6-0ef0-4bd9-b62d-a87019a63c2c", "rel": "self"}, {"href": "http://localhost/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/ports", "rel": "self"}, {"href": "http://localhost/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/states", "rel": "self"}, {"href": "http://localhost/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/volume", "rel": "self"}, {"href": "http://localhost/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/volume", "rel": "bookmark"}]} -GET: /v1/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c {} -GOT:{'uuid': '555174f6-0ef0-4bd9-b62d-a87019a63c2c', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c', 'rel': 'self'}, {'href': 'http://localhost/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/555174f6-0ef0-4bd9-b62d-a87019a63c2c/volume', 'rel': 'bookmark'}]} -POST: /v1/nodes {'uuid': '9a3a5686-f278-4f94-85c8-8e489cf14d3a', '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', 'cpus': '8', '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/9a3a5686-f278-4f94-85c8-8e489cf14d3a -Openstack-Request-Id: req-bcd8f1be-6287-4915-9c82-5e0866c7eeac -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.40 -{"uuid": "9a3a5686-f278-4f94-85c8-8e489cf14d3a", "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", "cpus": "8", "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/9a3a5686-f278-4f94-85c8-8e489cf14d3a", "rel": "self"}, {"href": "http://localhost/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/ports", "rel": "self"}, {"href": "http://localhost/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/states", "rel": "self"}, {"href": "http://localhost/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/volume", "rel": "self"}, {"href": "http://localhost/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/volume", "rel": "bookmark"}]} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byname -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byname ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_internal_field -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_internal_field ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_name ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_name ... ok -GET: /v1/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a {} -GOT:{'uuid': '9a3a5686-f278-4f94-85c8-8e489cf14d3a', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a', 'rel': 'self'}, {'href': 'http://localhost/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/9a3a5686-f278-4f94-85c8-8e489cf14d3a/volume', 'rel': 'bookmark'}]} -POST: /v1/nodes {'uuid': '42a4043f-e0b3-4975-be95-92074a2f7b1f', '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', 'cpus': '8', '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 +GOT:Response: 400 Bad Request Content-Type: application/json -Location: http://localhost/v1/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f -Openstack-Request-Id: req-be9f6c6c-60b4-445b-a3ce-5f53227010c5 +Openstack-Request-Id: req-bbd38884-92a3-44f9-8317-ccf163320df3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.40 -{"uuid": "42a4043f-e0b3-4975-be95-92074a2f7b1f", "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", "cpus": "8", "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/42a4043f-e0b3-4975-be95-92074a2f7b1f", "rel": "self"}, {"href": "http://localhost/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/ports", "rel": "self"}, {"href": "http://localhost/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/states", "rel": "self"}, {"href": "http://localhost/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/volume", "rel": "self"}, {"href": "http://localhost/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/volume", "rel": "bookmark"}]} -GET: /v1/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f {} -GOT:{'uuid': '42a4043f-e0b3-4975-be95-92074a2f7b1f', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f', 'rel': 'self'}, {'href': 'http://localhost/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/42a4043f-e0b3-4975-be95-92074a2f7b1f/volume', 'rel': 'bookmark'}]} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byname_with_json -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byname_with_json ... ok -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:31.589242+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:31.589242+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:32.203815+00:00', 'updated_at': None, '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': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:32.203815+00:00', 'updated_at': None, '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': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': 'fish', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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/detail {} -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:32.701973+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_network_interface -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_network_interface ... ok -POST: /v1/nodes {'uuid': 'a56d1baa-309c-4bc6-a515-a8bad15b83e1', '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', 'cpus': '8', '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 +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Fake Error Message\", \"debuginfo\": null}"} +PATCH: /v1/nodes/46ac576f-764e-4942-b285-c023544257a6 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1 -Openstack-Request-Id: req-0b0e2506-c036-44fc-b299-aafd52d67757 +Openstack-Request-Id: req-7d5a67d2-146d-45ff-bed7-9145b1a5b50c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.40 -{"uuid": "a56d1baa-309c-4bc6-a515-a8bad15b83e1", "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", "cpus": "8", "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/a56d1baa-309c-4bc6-a515-a8bad15b83e1", "rel": "self"}, {"href": "http://localhost/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/ports", "rel": "self"}, {"href": "http://localhost/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/states", "rel": "self"}, {"href": "http://localhost/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/volume", "rel": "self"}, {"href": "http://localhost/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/volume", "rel": "bookmark"}]} -GET: /v1/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1 {} -GOT:{'uuid': 'a56d1baa-309c-4bc6-a515-a8bad15b83e1', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1', 'rel': 'self'}, {'href': 'http://localhost/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/a56d1baa-309c-4bc6-a515-a8bad15b83e1/volume', 'rel': 'bookmark'}]} -POST: /v1/nodes {'uuid': '9669aa42-abcb-4219-87cd-df629e75ccb2', '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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'management_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_resource_class -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_resource_class ... ok +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "46ac576f-764e-4942-b285-c023544257a6", "created_at": "2024-01-06T14:10:49.862132+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", "cpus": "8", "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/46ac576f-764e-4942-b285-c023544257a6", "rel": "self"}, {"href": "http://localhost/nodes/46ac576f-764e-4942-b285-c023544257a6", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/46ac576f-764e-4942-b285-c023544257a6/ports", "rel": "self"}, {"href": "http://localhost/nodes/46ac576f-764e-4942-b285-c023544257a6/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/4d6a6fa1-140b-4285-9812-7b701279516a [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-cd025976-78e7-4f6d-827f-29592337a1b9 +Openstack-Request-Id: req-39e6cdbd-d240-4c99-8094-2e49745366dc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:29.582466+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/node_uuid', 'value': '12506333-a81c-4d59-9987-889ed5f8687b', 'op': 'replace'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "4d6a6fa1-140b-4285-9812-7b701279516a", "created_at": "2024-01-06T14:10:50.029496+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", "cpus": "8", "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/4d6a6fa1-140b-4285-9812-7b701279516a", "rel": "self"}, {"href": "http://localhost/nodes/4d6a6fa1-140b-4285-9812-7b701279516a", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/4d6a6fa1-140b-4285-9812-7b701279516a/ports", "rel": "self"}, {"href": "http://localhost/nodes/4d6a6fa1-140b-4285-9812-7b701279516a/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/e82cce12-3cfd-4382-971c-d17c55482d63 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4febc63b-18b3-45c0-9a83-27e9d0a82f9a +Openstack-Request-Id: req-07056ab6-7db3-4505-8a95-4005c35eab70 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 12506333-a81c-4d59-9987-889ed5f8687b could not be found.\", \"debuginfo\": null}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/address', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'replace'}] +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "e82cce12-3cfd-4382-971c-d17c55482d63", "created_at": "2024-01-06T14:10:50.145242+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", "cpus": "8", "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/e82cce12-3cfd-4382-971c-d17c55482d63", "rel": "self"}, {"href": "http://localhost/nodes/e82cce12-3cfd-4382-971c-d17c55482d63", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e82cce12-3cfd-4382-971c-d17c55482d63/ports", "rel": "self"}, {"href": "http://localhost/nodes/e82cce12-3cfd-4382-971c-d17c55482d63/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/362a53e2-8ebc-4b7a-8a6b-dc8a47a338e8 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8a2f4988-7e19-4538-a2db-7e1f4fcd4f61 +Openstack-Request-Id: req-53e21613-0c74-44de-862c-7b9402e52ae4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:30.372218+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/address', 'value': 'invalid-format', 'op': 'replace'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "362a53e2-8ebc-4b7a-8a6b-dc8a47a338e8", "created_at": "2024-01-06T14:10:50.273365+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", "cpus": "8", "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/362a53e2-8ebc-4b7a-8a6b-dc8a47a338e8", "rel": "self"}, {"href": "http://localhost/nodes/362a53e2-8ebc-4b7a-8a6b-dc8a47a338e8", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/362a53e2-8ebc-4b7a-8a6b-dc8a47a338e8/ports", "rel": "self"}, {"href": "http://localhost/nodes/362a53e2-8ebc-4b7a-8a6b-dc8a47a338e8/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/58746f4c-9028-4374-a89d-7388705b0dd3 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-11ffe1e9-d04d-40a8-9537-f4e80502664d +Openstack-Request-Id: req-5544ab19-0aba-4937-86a6-5513bbd4ce4e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-format\", \"debuginfo\": null}"} -PATCH: /v1/portgroups/52:54:00:cf:2d:31 [{'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\"}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "58746f4c-9028-4374-a89d-7388705b0dd3", "created_at": "2024-01-06T14:10:50.416116+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", "cpus": "8", "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/58746f4c-9028-4374-a89d-7388705b0dd3", "rel": "self"}, {"href": "http://localhost/nodes/58746f4c-9028-4374-a89d-7388705b0dd3", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/58746f4c-9028-4374-a89d-7388705b0dd3/ports", "rel": "self"}, {"href": "http://localhost/nodes/58746f4c-9028-4374-a89d-7388705b0dd3/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/d40124a6-6548-4170-8110-efc2097297fa [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_links +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_links ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d5ff0753-10af-4ea4-97f5-7b36a2b21a8f +Openstack-Request-Id: req-e047bb86-6d9b-417f-b822-6e2fd743b109 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:31.413754+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.34 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:48.432752+00:00", "updated_at": "2024-01-06T14:10:48.589876+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'physnet2', 'op': 'replace'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -PATCH: /v1/portgroups/pg.1 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 200 OK +Openstack-Request-Id: req-fdb41ec1-a335-40aa-8fed-6890f5222323 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/physical_network', 'value': 'physnet2', 'op': 'replace'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-26405ad8-e58e-4895-87cf-e10d880203da +Openstack-Request-Id: req-6d7ef1d4-992b-4cce-ac25-dde2f3f038f8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:32.055974+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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/pg.1.json [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.34 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/portgroup_uuid', 'value': 'c1de5993-ef3d-42a9-9a54-e511c87c3208', 'op': 'replace'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-bc3ff194-a6ab-4de5-8c67-dc9134ad985c +Openstack-Request-Id: req-e81bbbb3-6bf9-4e7b-8fc5-e028c0d234f2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:32.550492+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/address', 'value': 'AA:BB:CC:DD:EE:FF', 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_in_inspecting_allowed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_in_inspecting_allowed ... ok -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.24 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:49.104037+00:00", "updated_at": "2024-01-06T14:10:49.207930+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "c1de5993-ef3d-42a9-9a54-e511c87c3208"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/portgroup_uuid', 'value': '0fa73dd0-1b70-4d01-a549-3009e117d129', 'op': 'replace'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-ea50e190-a058-4c04-b5d2-6f555eebfbeb +Openstack-Request-Id: req-45f2135b-2498-4502-9ad0-fb98aa1034f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 a non-existent object 'non-existent'\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/extra', 'op': 'remove'}] +X-Openstack-Ironic-Api-Version: 1.15 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/portgroup_uuid', 'value': '6227957a-5c29-4955-8425-7918264abf61', 'op': 'remove'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8c877111-7c2c-45a2-81bb-456fb3d00bdd +Openstack-Request-Id: req-7b70ef64-b067-40bc-9c5e-a43d195a2a47 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:28.424321+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/uuid', 'op': 'remove'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.24 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:49.488153+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/portgroup_uuid', 'value': '9f1263ce-3775-43f1-97e8-63e0b388771d', 'op': 'remove'}, {'path': '/portgroup_uuid', 'value': '9468b72f-ac75-47f7-ae63-004be2a8580f', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3612584f-e8a0-491f-b9e7-641aa2ff93ea +Openstack-Request-Id: req-ef1b08d9-0220-4a3e-a6e5-3ed50a065bd8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_id', 'value': '1', 'op': 'replace'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.24 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:49.714683+00:00", "updated_at": "2024-01-06T14:10:49.814351+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "9468b72f-ac75-47f7-ae63-004be2a8580f"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/address', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-802b5aec-194f-4f6d-b213-dc1cdb478e27 +Openstack-Request-Id: req-26d480d1-2d05-4864-8aa2-23798e66e018 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_uuid', 'value': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'op': 'replace'}] -GOT:Response: 200 OK +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:49.963378+00:00", "updated_at": "2024-01-06T14:10:50.053474+00:00", "address": "aa:bb:cc:dd:ee:ff", "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/pxe_enabled', 'value': False, 'op': 'add'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-9be608ab-0b9c-4c33-9422-9b82ef89ef6e +Openstack-Request-Id: req-91cf759b-d63b-494f-9199-908fa4cb56b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:31.061208+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/console_enabled', 'op': 'replace', 'value': True}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/address', 'value': 'invalid-format', 'op': 'replace'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b1e26566-9e0f-4be4-a80b-2ff6769f69b8 +Openstack-Request-Id: req-47bb4cea-5311-482d-a7b2-a93944ecc930 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/power_state', 'op': 'replace', 'value': 'fake-state'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-format\", \"debuginfo\": null}"} +PATCH: /v1/ports/52:54:00:cf:2d:31 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b2e9eb14-85e4-4350-8399-f12765c0dddf +Openstack-Request-Id: req-f87860df-f251-4fad-82f5-ad1a1b8e0f8a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/maintenance', 'op': 'replace', 'value': True}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_maintenance -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_maintenance ... ok -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2 -Openstack-Request-Id: req-b93b07cf-23f1-49b6-85a4-c4fd92d2a63d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.40 -{"uuid": "9669aa42-abcb-4219-87cd-df629e75ccb2", "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", "cpus": "8", "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/9669aa42-abcb-4219-87cd-df629e75ccb2", "rel": "self"}, {"href": "http://localhost/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/ports", "rel": "self"}, {"href": "http://localhost/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/states", "rel": "self"}, {"href": "http://localhost/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/volume", "rel": "self"}, {"href": "http://localhost/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/volume", "rel": "bookmark"}]} -GET: /v1/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2 {} -GOT:{'uuid': '9669aa42-abcb-4219-87cd-df629e75ccb2', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2', 'rel': 'self'}, {'href': 'http://localhost/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/9669aa42-abcb-4219-87cd-df629e75ccb2/volume', 'rel': 'bookmark'}]} -POST: /v1/nodes {'uuid': '2074a0f8-cfe4-44c5-8c43-6573bffbc4f2', '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', 'cpus': '8', '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/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2 -Openstack-Request-Id: req-175534c1-f658-4f81-8085-c810a8358e06 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.40 -{"uuid": "2074a0f8-cfe4-44c5-8c43-6573bffbc4f2", "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", "cpus": "8", "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/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2", "rel": "self"}, {"href": "http://localhost/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/ports", "rel": "self"}, {"href": "http://localhost/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/states", "rel": "self"}, {"href": "http://localhost/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/volume", "rel": "self"}, {"href": "http://localhost/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/volume", "rel": "bookmark"}]} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_in_inspecting_not_allowed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_in_inspecting_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_invalid_name -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_invalid_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_maintenance_by_name -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_maintenance_by_name ... ok -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:32.701973+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': 'flat', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states', 'rel': 'bookmark'}]}]} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for port_uuid: 52:54:00:cf:2d:31\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_byid +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_byid ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_in_inspecting_allowed +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_in_inspecting_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_UPDATE_ALLOWED_STATES +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_UPDATE_ALLOWED_STATES ... ok +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:50.591590+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:33.125049+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:50.591590+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:50.829794+00:00', 'updated_at': None, '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': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:50.829794+00:00', 'updated_at': None, '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': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': 'fish', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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/detail {} -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:33.125049+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'foo', 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:50.994646+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:33.698254+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]}]} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_network_interface +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_network_interface ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_resource_class +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_resource_class ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_many +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_many ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_one +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_one ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_in_inspecting_not_allowed +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_in_inspecting_not_allowed ... ok +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:50.994646+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': 'flat', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_storage_interface -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_storage_interface ... ok -GET: /v1/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2 {} -GOT:{'uuid': '2074a0f8-cfe4-44c5-8c43-6573bffbc4f2', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2', 'rel': 'self'}, {'href': 'http://localhost/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/2074a0f8-cfe4-44c5-8c43-6573bffbc4f2/volume', 'rel': 'bookmark'}]} -POST: /v1/nodes {'uuid': 'caebc10d-817f-4559-ae85-f9a1e815491c', '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', 'cpus': '8', '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/caebc10d-817f-4559-ae85-f9a1e815491c -Openstack-Request-Id: req-4ed62ebd-79f5-46ee-b6fd-cbee49d67527 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.40 -{"uuid": "caebc10d-817f-4559-ae85-f9a1e815491c", "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", "cpus": "8", "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/caebc10d-817f-4559-ae85-f9a1e815491c", "rel": "self"}, {"href": "http://localhost/nodes/caebc10d-817f-4559-ae85-f9a1e815491c", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/ports", "rel": "self"}, {"href": "http://localhost/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/states", "rel": "self"}, {"href": "http://localhost/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/volume", "rel": "self"}, {"href": "http://localhost/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/volume", "rel": "bookmark"}]} -GET: /v1/nodes/caebc10d-817f-4559-ae85-f9a1e815491c {} -GOT:{'uuid': 'caebc10d-817f-4559-ae85-f9a1e815491c', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/caebc10d-817f-4559-ae85-f9a1e815491c', 'rel': 'self'}, {'href': 'http://localhost/nodes/caebc10d-817f-4559-ae85-f9a1e815491c', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/caebc10d-817f-4559-ae85-f9a1e815491c/volume', 'rel': 'bookmark'}]} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_not_found -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_not_found ... ok -POST: /v1/nodes {'uuid': '4d8a033a-1bea-49dc-8ced-b4df8ae9cb26', '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', 'cpus': '8', '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/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26 -Openstack-Request-Id: req-f8625b7d-bec7-4c49-b86b-59efa49873ef -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.40 -{"uuid": "4d8a033a-1bea-49dc-8ced-b4df8ae9cb26", "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", "cpus": "8", "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/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26", "rel": "self"}, {"href": "http://localhost/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/ports", "rel": "self"}, {"href": "http://localhost/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/states", "rel": "self"}, {"href": "http://localhost/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/volume", "rel": "self"}, {"href": "http://localhost/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/volume", "rel": "bookmark"}]} -GET: /v1/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26 {} -GOT:{'uuid': '4d8a033a-1bea-49dc-8ced-b4df8ae9cb26', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26', 'rel': 'self'}, {'href': 'http://localhost/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/4d8a033a-1bea-49dc-8ced-b4df8ae9cb26/volume', 'rel': 'bookmark'}]} -POST: /v1/nodes {'uuid': 'dcad128f-7887-49fe-be04-bbf7dcf98417', '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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'network_interface': 'flat', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_traits -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_traits ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_address_normalized -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_address_normalized ... ok -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417 -Openstack-Request-Id: req-f3f4f17e-67bf-4c2d-8a6e-d32e1a68b8d6 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.40 -{"uuid": "dcad128f-7887-49fe-be04-bbf7dcf98417", "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", "cpus": "8", "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/dcad128f-7887-49fe-be04-bbf7dcf98417", "rel": "self"}, {"href": "http://localhost/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/ports", "rel": "self"}, {"href": "http://localhost/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/states", "rel": "self"}, {"href": "http://localhost/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/volume", "rel": "self"}, {"href": "http://localhost/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/volume", "rel": "bookmark"}]} -GET: /v1/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417 {} -GOT:{'uuid': 'dcad128f-7887-49fe-be04-bbf7dcf98417', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417', 'rel': 'self'}, {'href': 'http://localhost/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/dcad128f-7887-49fe-be04-bbf7dcf98417/volume', 'rel': 'bookmark'}]} -POST: /v1/nodes {'uuid': '62c43cee-7b95-4219-8fb8-bde7de4e7ea3', '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', 'cpus': '8', '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/62c43cee-7b95-4219-8fb8-bde7de4e7ea3 -Openstack-Request-Id: req-9a737136-1ceb-4ed8-838a-f6a47300cf2c -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.40 -{"uuid": "62c43cee-7b95-4219-8fb8-bde7de4e7ea3", "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", "cpus": "8", "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/62c43cee-7b95-4219-8fb8-bde7de4e7ea3", "rel": "self"}, {"href": "http://localhost/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/ports", "rel": "self"}, {"href": "http://localhost/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/states", "rel": "self"}, {"href": "http://localhost/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/volume", "rel": "self"}, {"href": "http://localhost/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/volume", "rel": "bookmark"}]} -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_non_existent_chassis_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_non_existent_chassis_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_internal_info_not_allowed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_internal_info_not_allowed ... ok -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:33.698254+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': 'cinder', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]}]} +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:51.171689+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:34.158677+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]}]} +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:51.171689+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'foo', 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:34.158677+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': ['CUSTOM_1'], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_volume -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_volume ... ok -GET: /v1/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3 {} -GOT:{'uuid': '62c43cee-7b95-4219-8fb8-bde7de4e7ea3', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3', 'rel': 'self'}, {'href': 'http://localhost/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/62c43cee-7b95-4219-8fb8-bde7de4e7ea3/volume', 'rel': 'bookmark'}]} -POST: /v1/nodes {'uuid': '4a974b80-fa32-41e5-b236-3bb24c2e79bf', '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', 'cpus': '8', '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/4a974b80-fa32-41e5-b236-3bb24c2e79bf -Openstack-Request-Id: req-bbdf6c44-b3e8-48c7-83be-b8a75428ed66 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.40 -{"uuid": "4a974b80-fa32-41e5-b236-3bb24c2e79bf", "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", "cpus": "8", "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/4a974b80-fa32-41e5-b236-3bb24c2e79bf", "rel": "self"}, {"href": "http://localhost/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/ports", "rel": "self"}, {"href": "http://localhost/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/states", "rel": "self"}, {"href": "http://localhost/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/volume", "rel": "self"}, {"href": "http://localhost/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/volume", "rel": "bookmark"}]} -GET: /v1/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf {} -GOT:{'uuid': '4a974b80-fa32-41e5-b236-3bb24c2e79bf', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf', 'rel': 'self'}, {'href': 'http://localhost/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/4a974b80-fa32-41e5-b236-3bb24c2e79bf/volume', 'rel': 'bookmark'}]} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_provision_updated_at -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_provision_updated_at ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_mode_properties -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_mode_properties ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_links -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_links ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_mode_properties_bad_api_version -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_mode_properties_bad_api_version ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:34.722066+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:34.722066+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/c2a28713-34a5-4eea-9fe8-fbf1eab52adf {} -GOT:{'uuid': 'c2a28713-34a5-4eea-9fe8-fbf1eab52adf', 'created_at': '2024-01-06T13:32:35.206299+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf', 'rel': 'self'}, {'href': 'http://localhost/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf/ports', 'rel': 'bookmark'}]} -GET: /v1/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf {} -GOT:{'uuid': 'c2a28713-34a5-4eea-9fe8-fbf1eab52adf', 'created_at': '2024-01-06T13:32:35.206299+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf', 'rel': 'self'}, {'href': 'http://localhost/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf/ports', 'rel': 'bookmark'}]} -GET: /nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf {} -GOT:{'uuid': 'c2a28713-34a5-4eea-9fe8-fbf1eab52adf', 'created_at': '2024-01-06T13:32:35.206299+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf', 'rel': 'self'}, {'href': 'http://localhost/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/c2a28713-34a5-4eea-9fe8-fbf1eab52adf/ports', 'rel': 'bookmark'}]} -GET: /v1/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_links_public_url -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_links_public_url ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_standalone_ports_supported -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_standalone_ports_supported ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_standalone_ports_supported_bad_api_version -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_standalone_ports_supported_bad_api_version ... ok -POST: /v1/nodes {'uuid': '0aaac80e-552f-470d-a2ef-b6e4fcda5ce5', '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', 'cpus': '8', '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/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5 -Openstack-Request-Id: req-8a2001c5-43bb-4904-ab08-e2f814a6d0e0 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.40 -{"uuid": "0aaac80e-552f-470d-a2ef-b6e4fcda5ce5", "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", "cpus": "8", "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/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5", "rel": "self"}, {"href": "http://localhost/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/ports", "rel": "self"}, {"href": "http://localhost/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/states", "rel": "self"}, {"href": "http://localhost/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/volume", "rel": "self"}, {"href": "http://localhost/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/volume", "rel": "bookmark"}]} -GET: /v1/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5 {} -GOT:{'uuid': '0aaac80e-552f-470d-a2ef-b6e4fcda5ce5', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5', 'rel': 'self'}, {'href': 'http://localhost/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/0aaac80e-552f-470d-a2ef-b6e4fcda5ce5/volume', 'rel': 'bookmark'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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-35ccc2bb-d96a-4591-8fba-f797e5551dc7 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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 {'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', 'cpus': '8', '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-aa50ba3f-2a41-4057-9c67-f22d9fb76a33 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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 {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'deploy_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:51.357933+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_storage_interface +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_storage_interface ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_not_found +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_one_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_one_invalid_api_version ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e233edc7-7c53-4f78-b58d-4bb5777664f1 +Openstack-Request-Id: req-a4f1933f-7c6f-49c7-b17d-2cadf098484d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:32.628224+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/node-57.1 [{'path': '/maintenance', 'op': 'replace', 'value': True}] +{"uuid": "d40124a6-6548-4170-8110-efc2097297fa", "created_at": "2024-01-06T14:10:50.534144+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", "cpus": "8", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "error", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/d40124a6-6548-4170-8110-efc2097297fa", "rel": "self"}, {"href": "http://localhost/nodes/d40124a6-6548-4170-8110-efc2097297fa", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d40124a6-6548-4170-8110-efc2097297fa/ports", "rel": "self"}, {"href": "http://localhost/nodes/d40124a6-6548-4170-8110-efc2097297fa/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/507c6255-e2c6-453b-b4e8-9400b26bd8ca [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e5c8e412-d708-46d1-8bc9-b699bff0fd2a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.5 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:33.400412+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/chassis_uuid', 'value': 'eeeeeeee-dddd-cccc-bbbb-aaaaaaaaaaaa', 'op': 'replace'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-9d226a71-28da-4128-89e8-3cba3a3e972e +Openstack-Request-Id: req-4a3890fe-575a-49ff-85e1-2e7c5a526697 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/provision_updated_at', 'op': 'replace', 'value': '2000-01-01 00:00:00'}] -GOT:Response: 400 Bad Request +{"uuid": "507c6255-e2c6-453b-b4e8-9400b26bd8ca", "created_at": "2024-01-06T14:10:50.654223+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", "cpus": "8", "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/507c6255-e2c6-453b-b4e8-9400b26bd8ca", "rel": "self"}, {"href": "http://localhost/nodes/507c6255-e2c6-453b-b4e8-9400b26bd8ca", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/507c6255-e2c6-453b-b4e8-9400b26bd8ca/ports", "rel": "self"}, {"href": "http://localhost/nodes/507c6255-e2c6-453b-b4e8-9400b26bd8ca/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/940c41b5-5cee-481b-a9ea-ab1c5d5ff8dc [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-51b04025-e37f-4325-8af1-4e3c2ec0da51 +Openstack-Request-Id: req-3c842416-9533-4813-863b-3ed27870fe67 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862 [{'path': '/boot_interface', 'op': 'remove'}] +{"uuid": "940c41b5-5cee-481b-a9ea-ab1c5d5ff8dc", "created_at": "2024-01-06T14:10:50.775119+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", "cpus": "8", "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/940c41b5-5cee-481b-a9ea-ab1c5d5ff8dc", "rel": "self"}, {"href": "http://localhost/nodes/940c41b5-5cee-481b-a9ea-ab1c5d5ff8dc", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/940c41b5-5cee-481b-a9ea-ab1c5d5ff8dc/ports", "rel": "self"}, {"href": "http://localhost/nodes/940c41b5-5cee-481b-a9ea-ab1c5d5ff8dc/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/048d99a8-e792-4a80-8d6e-92df2bcb40aa [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b9f07958-3476-4ddb-8600-feb8fc2ce2d9 +Openstack-Request-Id: req-275dca4b-2a32-4878-b80f-479d460640d1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f5a0cf3f-77db-4164-8db8-5b8906bc0862", "created_at": "2024-01-06T13:32:35.725107+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", "cpus": "8", "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/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862 [{'path': '/console_interface', 'op': 'remove'}] -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes_associated -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes_associated ... ok +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "048d99a8-e792-4a80-8d6e-92df2bcb40aa", "created_at": "2024-01-06T14:10:50.898514+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", "cpus": "8", "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/048d99a8-e792-4a80-8d6e-92df2bcb40aa", "rel": "self"}, {"href": "http://localhost/nodes/048d99a8-e792-4a80-8d6e-92df2bcb40aa", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/048d99a8-e792-4a80-8d6e-92df2bcb40aa/ports", "rel": "self"}, {"href": "http://localhost/nodes/048d99a8-e792-4a80-8d6e-92df2bcb40aa/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/7cb8c707-abbb-44f4-a7de-3874bca21b0a [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8eef7a54-d3d5-4b94-9a51-f3a4f292311e +Openstack-Request-Id: req-d90eac1a-f294-4061-84f4-22d30325a5a4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.38 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:33.027588+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/address', 'value': 'AA:BB:CC:DD:EE:FF', 'op': 'replace'}] -GOT:Response: 409 Conflict +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "7cb8c707-abbb-44f4-a7de-3874bca21b0a", "created_at": "2024-01-06T14:10:51.090333+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", "cpus": "8", "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/7cb8c707-abbb-44f4-a7de-3874bca21b0a", "rel": "self"}, {"href": "http://localhost/nodes/7cb8c707-abbb-44f4-a7de-3874bca21b0a", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/7cb8c707-abbb-44f4-a7de-3874bca21b0a/ports", "rel": "self"}, {"href": "http://localhost/nodes/7cb8c707-abbb-44f4-a7de-3874bca21b0a/ports", "rel": "bookmark"}]} +PATCH: /v1/nodes/67cb2e3d-36fb-4aa4-b0eb-517a5058ad3a [{'path': '/instance_uuid', 'op': 'remove'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_inspecting_allowed +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_inspecting_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_traits +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_traits ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_sort_key +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_sort_key ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_inspecting_not_allowed +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_inspecting_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_port_address_normalized +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_port_address_normalized ... ok +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:51.357933+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': 'cinder', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:51.542581+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:51.542581+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': ['CUSTOM_1'], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_volume +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_volume ... ok +GOT:{'connectors': [{'connector_id': 'test-connector_id-0', 'links': [{'href': 'http://localhost/v1/volume/connectors/02438c4d-855d-42d5-a50b-9f9f00ee794c', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/02438c4d-855d-42d5-a50b-9f9f00ee794c', 'rel': 'bookmark'}]}, {'connector_id': 'test-connector_id-1', 'links': [{'href': 'http://localhost/v1/volume/connectors/2e0ee72c-e84b-447c-b50e-ed0e0ea1545d', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/2e0ee72c-e84b-447c-b50e-ed0e0ea1545d', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/volume/connectors?sort_key=id&sort_dir=asc&fields=connector_id&limit=2&marker=2e0ee72c-e84b-447c-b50e-ed0e0ea1545d'} +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,extra {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d6e63329-6c6a-4ee0-a05b-00765a2d9cb6 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -PATCH: /v1/portgroups/pg.1 [{'path': '/name', 'value': 'aa:bb_cc', 'op': 'replace'}] +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,spongebob {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-8687b47d-5be0-4ca3-84e8-4448ad3cd8bd +Openstack-Request-Id: req-d571ded3-d8e3-4005-bfeb-a61deee7d83d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup pg.1: Cannot change name to invalid name 'aa:bb_cc'\", \"debuginfo\": null}"} -PATCH: /v1/portgroups/18d719db-9ea0-4fa1-bab8-54484db2a5a2 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:50.521758+00:00', 'updated_at': None, '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?fields=connector_id,extra {} +GOT:{'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'}]} +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-912c2f1f-4b72-41bd-9ca8-d96aa714520a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 18d719db-9ea0-4fa1-bab8-54484db2a5a2 could not be found.\", \"debuginfo\": null}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/address', 'value': 'AA:BB:CC:DD:EE:FF', 'op': 'replace'}] +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/volume/connectors/89354a98-2e45-49d7-9671-38ef8f2a94ee {} +GOT:{'uuid': '89354a98-2e45-49d7-9671-38ef8f2a94ee', 'created_at': '2024-01-06T14:10:50.915881+00:00', 'updated_at': None, 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/89354a98-2e45-49d7-9671-38ef8f2a94ee', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/89354a98-2e45-49d7-9671-38ef8f2a94ee', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/volume/connectors/89354a98-2e45-49d7-9671-38ef8f2a94ee {} +GOT:{'uuid': '89354a98-2e45-49d7-9671-38ef8f2a94ee', 'created_at': '2024-01-06T14:10:50.915881+00:00', 'updated_at': None, 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/89354a98-2e45-49d7-9671-38ef8f2a94ee', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/89354a98-2e45-49d7-9671-38ef8f2a94ee', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /volume/connectors/89354a98-2e45-49d7-9671-38ef8f2a94ee {} +GOT:{'uuid': '89354a98-2e45-49d7-9671-38ef8f2a94ee', 'created_at': '2024-01-06T14:10:50.915881+00:00', 'updated_at': None, 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/89354a98-2e45-49d7-9671-38ef8f2a94ee', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/89354a98-2e45-49d7-9671-38ef8f2a94ee', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/volume/connectors {} +GOT:{'connectors': [{'uuid': '5677f3ce-7acc-4dfb-af25-00b51a423db3', 'connector_id': 'test-connector_id-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/5677f3ce-7acc-4dfb-af25-00b51a423db3', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/5677f3ce-7acc-4dfb-af25-00b51a423db3', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'fa6148bf-31be-4f5d-9a61-1c12c697b11a', 'connector_id': 'test-connector_id-1', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/fa6148bf-31be-4f5d-9a61-1c12c697b11a', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/fa6148bf-31be-4f5d-9a61-1c12c697b11a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'b2c87ce3-9f98-4350-9d4f-a297add7443a', 'connector_id': 'test-connector_id-2', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/b2c87ce3-9f98-4350-9d4f-a297add7443a', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/b2c87ce3-9f98-4350-9d4f-a297add7443a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '746e19e6-0124-4db5-8dd6-0f3ab635b73d', 'connector_id': 'test-connector_id-3', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/746e19e6-0124-4db5-8dd6-0f3ab635b73d', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/746e19e6-0124-4db5-8dd6-0f3ab635b73d', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'ceed28ab-9170-40b3-83d2-a3fdf793b8ad', 'connector_id': 'test-connector_id-4', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/ceed28ab-9170-40b3-83d2-a3fdf793b8ad', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/ceed28ab-9170-40b3-83d2-a3fdf793b8ad', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/volume/connectors {} +GOT:{'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'}]} +GET: /v1/volume/connectors {} +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/volume/connectors?sort_key=uuid {} +GOT:{'connectors': [{'uuid': '3de2c717-6000-4fde-8ad6-b0eede8a156d', 'connector_id': 'test-connector_id-1', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/3de2c717-6000-4fde-8ad6-b0eede8a156d', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/3de2c717-6000-4fde-8ad6-b0eede8a156d', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'bec78de2-50c3-4236-8f2a-5152c03cfcaf', 'connector_id': 'test-connector_id-2', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/bec78de2-50c3-4236-8f2a-5152c03cfcaf', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/bec78de2-50c3-4236-8f2a-5152c03cfcaf', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'c41f8dc2-62a1-4d22-a0aa-54df4776b38c', 'connector_id': 'test-connector_id-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/c41f8dc2-62a1-4d22-a0aa-54df4776b38c', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/c41f8dc2-62a1-4d22-a0aa-54df4776b38c', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/volume/connectors?sort_key=foo {} +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_sort_key_invalid +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_sort_key_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_byid +ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_byid ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_pxe_enabled_allowed +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_pxe_enabled_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_links +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_links ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_byid_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_byid_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_pxe_enabled_old_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_pxe_enabled_old_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_allow +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_allow ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_empty +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_empty ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_invalid_power_state +ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_invalid_power_state ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_local_link_connection_none_type +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_local_link_connection_none_type ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:51.741883+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:51.741883+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/748e5093-8dd9-43f7-be38-5da858357a4f {} +GOT:{'uuid': '748e5093-8dd9-43f7-be38-5da858357a4f', 'created_at': '2024-01-06T14:10:51.926833+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/748e5093-8dd9-43f7-be38-5da858357a4f', 'rel': 'self'}, {'href': 'http://localhost/nodes/748e5093-8dd9-43f7-be38-5da858357a4f', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/748e5093-8dd9-43f7-be38-5da858357a4f/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/748e5093-8dd9-43f7-be38-5da858357a4f/ports', 'rel': 'bookmark'}]} +GET: /v1/nodes/748e5093-8dd9-43f7-be38-5da858357a4f {} +GOT:{'uuid': '748e5093-8dd9-43f7-be38-5da858357a4f', 'created_at': '2024-01-06T14:10:51.926833+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/748e5093-8dd9-43f7-be38-5da858357a4f', 'rel': 'self'}, {'href': 'http://localhost/nodes/748e5093-8dd9-43f7-be38-5da858357a4f', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/748e5093-8dd9-43f7-be38-5da858357a4f/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/748e5093-8dd9-43f7-be38-5da858357a4f/ports', 'rel': 'bookmark'}]} +GET: /nodes/748e5093-8dd9-43f7-be38-5da858357a4f {} +GOT:{'uuid': '748e5093-8dd9-43f7-be38-5da858357a4f', 'created_at': '2024-01-06T14:10:51.926833+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/748e5093-8dd9-43f7-be38-5da858357a4f', 'rel': 'self'}, {'href': 'http://localhost/nodes/748e5093-8dd9-43f7-be38-5da858357a4f', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/748e5093-8dd9-43f7-be38-5da858357a4f/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/748e5093-8dd9-43f7-be38-5da858357a4f/ports', 'rel': 'bookmark'}]} +GET: /v1/nodes/a28aae70-fe95-4875-b8da-639ee155233e {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_links_public_url +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_links_public_url ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ed37034f-8c0f-4851-9d0d-9cfd1e1b6529 +Openstack-Request-Id: req-26be2673-a3fd-48b6-8aed-a848dd3f3701 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:34.486806+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/internal_info', 'value': False, 'op': 'replace'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.38 +{"uuid": "67cb2e3d-36fb-4aa4-b0eb-517a5058ad3a", "created_at": "2024-01-06T14:10:51.348030+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", "cpus": "8", "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/67cb2e3d-36fb-4aa4-b0eb-517a5058ad3a", "rel": "self"}, {"href": "http://localhost/nodes/67cb2e3d-36fb-4aa4-b0eb-517a5058ad3a", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/67cb2e3d-36fb-4aa4-b0eb-517a5058ad3a/ports", "rel": "self"}, {"href": "http://localhost/nodes/67cb2e3d-36fb-4aa4-b0eb-517a5058ad3a/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/67cb2e3d-36fb-4aa4-b0eb-517a5058ad3a/states", "rel": "self"}, {"href": "http://localhost/nodes/67cb2e3d-36fb-4aa4-b0eb-517a5058ad3a/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/67cb2e3d-36fb-4aa4-b0eb-517a5058ad3a/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/67cb2e3d-36fb-4aa4-b0eb-517a5058ad3a/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/67cb2e3d-36fb-4aa4-b0eb-517a5058ad3a/volume", "rel": "self"}, {"href": "http://localhost/nodes/67cb2e3d-36fb-4aa4-b0eb-517a5058ad3a/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/a448a118-631c-490c-a94d-480da555b4ce [{'path': '/instance_uuid', 'op': 'remove'}] +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-6b842f24-9d76-41f0-89ac-5b6b1839f470 +Openstack-Request-Id: req-3f350bda-b58c-4f26-a647-01731c551218 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/mode', 'value': '802.3ad', 'op': 'add'}, {'path': '/properties/bond_param', 'value': '100', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.39 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update node \\\"a448a118-631c-490c-a94d-480da555b4ce\\\" while it is in state \\\"inspecting\\\".\", \"debuginfo\": null}"} +PATCH: /v1/nodes/09554940-1594-476c-8378-e213a629ef82 [{'path': '/boot_interface', 'value': 'fake', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c38a2a31-77c5-44c1-8596-a60f7be412a2 +Openstack-Request-Id: req-b0318b65-57fc-4461-bb60-13b6405ba247 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:35.195495+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/mode', 'op': 'add', 'value': '802.3ad'}] -GOT:Response: 406 Not Acceptable -Content-Type: application/json -Openstack-Request-Id: req-2f0109b7-0d98-45e8-bece-5403cda7b2af -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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 [{'path': '/properties/abc', 'op': 'add', 'value': 123}] -GOT:Response: 406 Not Acceptable +{"uuid": "09554940-1594-476c-8378-e213a629ef82", "created_at": "2024-01-06T14:10:51.944714+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", "cpus": "8", "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/09554940-1594-476c-8378-e213a629ef82", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/09554940-1594-476c-8378-e213a629ef82 [{'path': '/console_interface', 'value': 'fake', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_none +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_none ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_not_allow +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_not_allow ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_node_locked +ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_node_locked ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-7c8d5d52-91e2-472b-9019-dbe4281581c5 +Openstack-Request-Id: req-bdbab955-ac14-49cd-a3e2-4f086ed8d89a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 [{'path': '/standalone_ports_supported', 'value': False, 'op': 'replace'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "09554940-1594-476c-8378-e213a629ef82", "created_at": "2024-01-06T14:10:51.944714+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", "cpus": "8", "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/09554940-1594-476c-8378-e213a629ef82", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/09554940-1594-476c-8378-e213a629ef82 [{'path': '/deploy_interface', 'value': 'fake', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-872ceaf3-136c-4147-b4e7-fdab36e5fdf6 +Openstack-Request-Id: req-664ed638-a24c-4eca-a890-f896e93942b5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:36.109546+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'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\": \"\"}"} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces_bad_version -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces_bad_version ... ok +{"uuid": "09554940-1594-476c-8378-e213a629ef82", "created_at": "2024-01-06T14:10:51.944714+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", "cpus": "8", "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/09554940-1594-476c-8378-e213a629ef82", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/09554940-1594-476c-8378-e213a629ef82 [{'path': '/inspect_interface', 'value': 'fake', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_physnet_allow +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_physnet_allow ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_physnet_not_allow +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_physnet_not_allow ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_portgroup_allow +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_portgroup_allow ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-be16ba7d-26b8-4f93-b3f7-a9f40a81b241 +Openstack-Request-Id: req-84fcf7e7-7500-47e9-a765-d46cb4f5dcee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f5a0cf3f-77db-4164-8db8-5b8906bc0862", "created_at": "2024-01-06T13:32:35.725107+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", "cpus": "8", "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/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862 [{'path': '/deploy_interface', 'op': 'remove'}] +{"uuid": "09554940-1594-476c-8378-e213a629ef82", "created_at": "2024-01-06T14:10:51.944714+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", "cpus": "8", "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/09554940-1594-476c-8378-e213a629ef82", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/09554940-1594-476c-8378-e213a629ef82 [{'path': '/management_interface', 'value': 'fake', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-464bf159-bf59-4cb1-aa0a-9ec0c6980a65 +Openstack-Request-Id: req-53803317-cb42-4db8-b46f-60f0b92ee03c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f5a0cf3f-77db-4164-8db8-5b8906bc0862", "created_at": "2024-01-06T13:32:35.725107+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", "cpus": "8", "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/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862 [{'path': '/inspect_interface', 'op': 'remove'}] +{"uuid": "09554940-1594-476c-8378-e213a629ef82", "created_at": "2024-01-06T14:10:51.944714+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", "cpus": "8", "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/09554940-1594-476c-8378-e213a629ef82", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/09554940-1594-476c-8378-e213a629ef82 [{'path': '/power_interface', 'value': 'fake', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_custom_fields +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_portgroup_not_allow +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_portgroup_not_allow ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes_associated +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes_associated ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__GetPortByAddress.test__get_ports_by_address +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__GetPortByAddress.test__get_ports_by_address ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_default_limit +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_default_limit ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes_error ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes_error ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_address_already_exist -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_address_already_exist ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-bcba2af0-828d-46a3-bf6c-b0ecae4b45af +Openstack-Request-Id: req-d1f2d1ad-821b-4a16-a231-f7ffdab6ebce X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f5a0cf3f-77db-4164-8db8-5b8906bc0862", "created_at": "2024-01-06T13:32:35.725107+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", "cpus": "8", "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/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862 [{'path': '/management_interface', 'op': 'remove'}] +{"uuid": "09554940-1594-476c-8378-e213a629ef82", "created_at": "2024-01-06T14:10:51.944714+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", "cpus": "8", "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/09554940-1594-476c-8378-e213a629ef82", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/09554940-1594-476c-8378-e213a629ef82 [{'path': '/raid_interface', 'value': 'fake', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-bdc5b104-d17b-42b4-92f0-98a6f2d31030 +Openstack-Request-Id: req-75164961-ac32-43b9-bd7b-eb3300eb734c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f5a0cf3f-77db-4164-8db8-5b8906bc0862", "created_at": "2024-01-06T13:32:35.725107+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", "cpus": "8", "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/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862 [{'path': '/power_interface', 'op': 'remove'}] -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_address_normalized -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_address_normalized ... ok -GOT:{'uuid': 'b7e88438-e84d-4e30-8128-4cc55a9451a0', 'created_at': '2024-01-06T13:32:35.647012+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://foo/v1/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0', 'rel': 'self'}, {'href': 'http://foo/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://foo/v1/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0/ports', 'rel': 'self'}, {'href': 'http://foo/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0/ports', 'rel': 'bookmark'}]} -GET: /v1/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0 {} -GOT:{'uuid': 'b7e88438-e84d-4e30-8128-4cc55a9451a0', 'created_at': '2024-01-06T13:32:35.647012+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://foo/v1/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0', 'rel': 'self'}, {'href': 'http://foo/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://foo/v1/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0/ports', 'rel': 'self'}, {'href': 'http://foo/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0/ports', 'rel': 'bookmark'}]} -GET: /nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0 {} -GOT:{'uuid': 'b7e88438-e84d-4e30-8128-4cc55a9451a0', 'created_at': '2024-01-06T13:32:35.647012+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://foo/v1/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0', 'rel': 'self'}, {'href': 'http://foo/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://foo/v1/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0/ports', 'rel': 'self'}, {'href': 'http://foo/nodes/b7e88438-e84d-4e30-8128-4cc55a9451a0/ports', 'rel': 'bookmark'}]} +{"uuid": "09554940-1594-476c-8378-e213a629ef82", "created_at": "2024-01-06T14:10:51.944714+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", "cpus": "8", "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/09554940-1594-476c-8378-e213a629ef82", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/09554940-1594-476c-8378-e213a629ef82 [{'path': '/vendor_interface', 'value': 'fake', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_interface_fields +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_interface_fields ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_bad_invalid_agent_status +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_bad_invalid_agent_status ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_detail +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_detail ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_interface_fields_bad_version +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_interface_fields_bad_version ... ok +GOT:{'uuid': 'a28aae70-fe95-4875-b8da-639ee155233e', 'created_at': '2024-01-06T14:10:52.202486+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://foo/v1/nodes/a28aae70-fe95-4875-b8da-639ee155233e', 'rel': 'self'}, {'href': 'http://foo/nodes/a28aae70-fe95-4875-b8da-639ee155233e', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://foo/v1/nodes/a28aae70-fe95-4875-b8da-639ee155233e/ports', 'rel': 'self'}, {'href': 'http://foo/nodes/a28aae70-fe95-4875-b8da-639ee155233e/ports', 'rel': 'bookmark'}]} +GET: /v1/nodes/a28aae70-fe95-4875-b8da-639ee155233e {} +GOT:{'uuid': 'a28aae70-fe95-4875-b8da-639ee155233e', 'created_at': '2024-01-06T14:10:52.202486+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://foo/v1/nodes/a28aae70-fe95-4875-b8da-639ee155233e', 'rel': 'self'}, {'href': 'http://foo/nodes/a28aae70-fe95-4875-b8da-639ee155233e', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://foo/v1/nodes/a28aae70-fe95-4875-b8da-639ee155233e/ports', 'rel': 'self'}, {'href': 'http://foo/nodes/a28aae70-fe95-4875-b8da-639ee155233e/ports', 'rel': 'bookmark'}]} +GET: /nodes/a28aae70-fe95-4875-b8da-639ee155233e {} +GOT:{'uuid': 'a28aae70-fe95-4875-b8da-639ee155233e', 'created_at': '2024-01-06T14:10:52.202486+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://foo/v1/nodes/a28aae70-fe95-4875-b8da-639ee155233e', 'rel': 'self'}, {'href': 'http://foo/nodes/a28aae70-fe95-4875-b8da-639ee155233e', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://foo/v1/nodes/a28aae70-fe95-4875-b8da-639ee155233e/ports', 'rel': 'self'}, {'href': 'http://foo/nodes/a28aae70-fe95-4875-b8da-639ee155233e/ports', 'rel': 'bookmark'}]} GET: /v1/nodes?maintenance=true {} -GOT:{'nodes': [{'uuid': 'ed1e7f0c-ad68-4f1a-b1b8-e764db8435ca', 'instance_uuid': None, 'maintenance': True, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/ed1e7f0c-ad68-4f1a-b1b8-e764db8435ca', 'rel': 'self'}, {'href': 'http://localhost/nodes/ed1e7f0c-ad68-4f1a-b1b8-e764db8435ca', 'rel': 'bookmark'}]}, {'uuid': 'fd52c5d2-ccdc-472d-8971-b69e8cbc8bc9', 'instance_uuid': None, 'maintenance': True, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/fd52c5d2-ccdc-472d-8971-b69e8cbc8bc9', 'rel': 'self'}, {'href': 'http://localhost/nodes/fd52c5d2-ccdc-472d-8971-b69e8cbc8bc9', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '36031a8a-e661-45ca-9909-07ff53a4bf1f', 'instance_uuid': None, 'maintenance': True, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/36031a8a-e661-45ca-9909-07ff53a4bf1f', 'rel': 'self'}, {'href': 'http://localhost/nodes/36031a8a-e661-45ca-9909-07ff53a4bf1f', 'rel': 'bookmark'}]}, {'uuid': '0e03b6ef-d268-45fb-8f21-30b78d404189', 'instance_uuid': None, 'maintenance': True, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/0e03b6ef-d268-45fb-8f21-30b78d404189', 'rel': 'self'}, {'href': 'http://localhost/nodes/0e03b6ef-d268-45fb-8f21-30b78d404189', 'rel': 'bookmark'}]}]} GET: /v1/nodes?maintenance=false {} -GOT:{'nodes': [{'uuid': '447f42e7-2479-46ad-a552-96a809133d19', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/447f42e7-2479-46ad-a552-96a809133d19', 'rel': 'self'}, {'href': 'http://localhost/nodes/447f42e7-2479-46ad-a552-96a809133d19', 'rel': 'bookmark'}]}, {'uuid': 'fd380bef-05a8-4bca-b97c-043a9d99455a', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/fd380bef-05a8-4bca-b97c-043a9d99455a', 'rel': 'self'}, {'href': 'http://localhost/nodes/fd380bef-05a8-4bca-b97c-043a9d99455a', 'rel': 'bookmark'}]}, {'uuid': '1b472783-b81b-448d-9728-85f543d784ec', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/1b472783-b81b-448d-9728-85f543d784ec', 'rel': 'self'}, {'href': 'http://localhost/nodes/1b472783-b81b-448d-9728-85f543d784ec', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '20b35b25-fc65-416d-8d87-26cbfc45ff1e', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/20b35b25-fc65-416d-8d87-26cbfc45ff1e', 'rel': 'self'}, {'href': 'http://localhost/nodes/20b35b25-fc65-416d-8d87-26cbfc45ff1e', 'rel': 'bookmark'}]}, {'uuid': '563b4e48-4829-4581-bc49-67a414d5202a', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/563b4e48-4829-4581-bc49-67a414d5202a', 'rel': 'self'}, {'href': 'http://localhost/nodes/563b4e48-4829-4581-bc49-67a414d5202a', 'rel': 'bookmark'}]}, {'uuid': 'e1b1b39f-192c-40f7-8092-b55acf688bf5', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/e1b1b39f-192c-40f7-8092-b55acf688bf5', 'rel': 'self'}, {'href': 'http://localhost/nodes/e1b1b39f-192c-40f7-8092-b55acf688bf5', 'rel': 'bookmark'}]}]} GET: /v1/nodes?associated=true&maintenance=false {} -GOT:{'nodes': [{'uuid': 'a31c876c-6393-478d-ad54-3d3a60d8f99f', 'instance_uuid': 'e61cc547-7209-4714-8b72-39d0fbf1f4d1', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/a31c876c-6393-478d-ad54-3d3a60d8f99f', 'rel': 'self'}, {'href': 'http://localhost/nodes/a31c876c-6393-478d-ad54-3d3a60d8f99f', 'rel': 'bookmark'}]}, {'uuid': '9c7447af-7303-425c-9c66-2e5452bbefcf', 'instance_uuid': '4e220063-87a2-4a5d-8dfa-0a0fdf326284', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/9c7447af-7303-425c-9c66-2e5452bbefcf', 'rel': 'self'}, {'href': 'http://localhost/nodes/9c7447af-7303-425c-9c66-2e5452bbefcf', 'rel': 'bookmark'}]}, {'uuid': '43426b7c-c1b2-47d1-ab82-024347fc5a92', 'instance_uuid': '6fa0b25b-2885-49d1-b39b-b4f055738243', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/43426b7c-c1b2-47d1-ab82-024347fc5a92', 'rel': 'self'}, {'href': 'http://localhost/nodes/43426b7c-c1b2-47d1-ab82-024347fc5a92', 'rel': 'bookmark'}]}, {'uuid': 'dc0fcb89-c5e6-4464-a6e1-d2e350b1705d', 'instance_uuid': '4a745a53-5df7-45d2-9f09-9ece29a0f15d', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/dc0fcb89-c5e6-4464-a6e1-d2e350b1705d', 'rel': 'self'}, {'href': 'http://localhost/nodes/dc0fcb89-c5e6-4464-a6e1-d2e350b1705d', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '4b774688-2244-498a-be9c-592f160c55b1', 'instance_uuid': '39a4407e-2bca-4e68-bf56-b7bb04ae1f3a', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/4b774688-2244-498a-be9c-592f160c55b1', 'rel': 'self'}, {'href': 'http://localhost/nodes/4b774688-2244-498a-be9c-592f160c55b1', 'rel': 'bookmark'}]}, {'uuid': '8d8f4e82-119c-4838-afa7-3db01301c24e', 'instance_uuid': '20afd2f7-21c5-4551-876b-9e171057aa78', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/8d8f4e82-119c-4838-afa7-3db01301c24e', 'rel': 'self'}, {'href': 'http://localhost/nodes/8d8f4e82-119c-4838-afa7-3db01301c24e', 'rel': 'bookmark'}]}, {'uuid': '55174618-4a8a-465b-8e6b-5b535efc49e9', 'instance_uuid': '133b803f-e31c-4d0c-9e52-3d23735cd058', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/55174618-4a8a-465b-8e6b-5b535efc49e9', 'rel': 'self'}, {'href': 'http://localhost/nodes/55174618-4a8a-465b-8e6b-5b535efc49e9', 'rel': 'bookmark'}]}, {'uuid': '05bf1383-c191-4c5a-bc81-724884f22849', 'instance_uuid': '4e9b7020-d8f3-465e-8a2a-b41cab648950', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/05bf1383-c191-4c5a-bc81-724884f22849', 'rel': 'self'}, {'href': 'http://localhost/nodes/05bf1383-c191-4c5a-bc81-724884f22849', 'rel': 'bookmark'}]}]} GET: /v1/nodes?associated=true&maintenance=true {} -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': '8a188257-f86a-4244-9d80-3591f2be8385', 'maintenance': True, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': 'e46f9792-c1c9-431a-8cda-7ac362bd7ee6', 'maintenance': True, 'power_state': None, 'provision_state': None, '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 {} -GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': '8a188257-f86a-4244-9d80-3591f2be8385', 'maintenance': True, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': 'e46f9792-c1c9-431a-8cda-7ac362bd7ee6', 'maintenance': True, 'power_state': None, 'provision_state': None, '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=blah {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-920acdfb-bba6-4761-9dad-4cf858908555 +Openstack-Request-Id: req-bc7afd25-089b-4c50-bc2f-786357536fe7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -12129,1584 +12222,1530 @@ ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_forbidden ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_forbidden ... ok -GOT:Response: 200 OK +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_heartbeat_rejects_different_callback_url +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_heartbeat_rejects_different_callback_url ... ok +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-252f8b60-7ec7-4ccc-a9bc-b5a84d0fadd5 +Openstack-Request-Id: req-c564eb0f-d8ef-448b-a063-d1934929efcf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f5a0cf3f-77db-4164-8db8-5b8906bc0862", "created_at": "2024-01-06T13:32:35.725107+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", "cpus": "8", "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/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862 [{'path': '/raid_interface', 'op': 'remove'}] -GOT:Response: 200 OK +{"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 {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-0c6f1c58-f7da-41a9-96c4-299a4b38c287 +Openstack-Request-Id: req-ad6d47d3-fac4-4c14-bc3c-a52c07b68e22 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f5a0cf3f-77db-4164-8db8-5b8906bc0862", "created_at": "2024-01-06T13:32:35.725107+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", "cpus": "8", "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/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862 [{'path': '/vendor_interface', 'op': 'remove'}] -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_default_mode -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_default_mode ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interface_fields -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interface_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interfaces_not_supported -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interfaces_not_supported ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_have_names -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_have_names ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_traits -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_traits ... ok -POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -Openstack-Request-Id: req-3fa10b76-3d5c-4139-a713-55c69a9ce1ca +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value extra is an invalid field for sorting\", \"debuginfo\": null}"} +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 204 No Content +Openstack-Request-Id: req-91ab2925-eae0-4859-acbe-bc93ad81e913 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} -GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created + +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -Openstack-Request-Id: req-9a4809cf-4b41-481d-ada7-797f2d9e182b +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-e5ed8fbc-0bc2-433d-81fb-007e409b45d3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:37.376894+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {'uuid': '096d6c71-fd8b-499e-b80d-af91a5596f12', 'name': '2c1e52c8-7960-4e01-a135-fbced56ca2e9', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +{"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}"} +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-7bd6e83c-ae29-446a-bdf4-ae37825bca13 +Openstack-Request-Id: req-1af21bf5-fcef-441e-8b5b-c7624f69b80b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A portgroup with MAC address aa:aa:aa:11:22:33 already exists.\", \"debuginfo\": null}"} -POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': 'AA:BB:CC:DD:EE:FF', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} +GET: /v1/volume/targets/?limit=3 {} +GOT:{'targets': [{'uuid': '2ed469db-188d-490e-ba82-125ae069b4ff', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/2ed469db-188d-490e-ba82-125ae069b4ff', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/2ed469db-188d-490e-ba82-125ae069b4ff', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'e6b3b824-9510-4c02-9201-685e8cc46792', 'boot_index': 1, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/e6b3b824-9510-4c02-9201-685e8cc46792', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/e6b3b824-9510-4c02-9201-685e8cc46792', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '6a85709b-2f6e-4470-9212-2680db01c1f1', 'boot_index': 2, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/6a85709b-2f6e-4470-9212-2680db01c1f1', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/6a85709b-2f6e-4470-9212-2680db01c1f1', '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=6a85709b-2f6e-4470-9212-2680db01c1f1'} +GET: /v1/volume/targets?fields=uuid,extra {} +GOT:{'targets': [{'uuid': 'ddfed5c6-c043-4adf-80ef-0f378bc8bb28', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/targets/ddfed5c6-c043-4adf-80ef-0f378bc8bb28', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/ddfed5c6-c043-4adf-80ef-0f378bc8bb28', 'rel': 'bookmark'}]}, {'uuid': '4fa4db0b-2de2-4245-bba8-60e2f7bfe8d1', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/targets/4fa4db0b-2de2-4245-bba8-60e2f7bfe8d1', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/4fa4db0b-2de2-4245-bba8-60e2f7bfe8d1', 'rel': 'bookmark'}]}, {'uuid': '53e0d31e-afb4-48d2-a448-0e9f73c66eb8', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/targets/53e0d31e-afb4-48d2-a448-0e9f73c66eb8', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/53e0d31e-afb4-48d2-a448-0e9f73c66eb8', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/volume/targets?sort_key=id&sort_dir=asc&fields=uuid,extra&limit=3&marker=53e0d31e-afb4-48d2-a448-0e9f73c66eb8'} +GET: /v1/volume/targets {} +GOT:{'targets': [{'uuid': 'e1617619-0e9b-48af-b8e8-f658e2acd40f', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/e1617619-0e9b-48af-b8e8-f658e2acd40f', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/e1617619-0e9b-48af-b8e8-f658e2acd40f', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '8389513e-b6ce-4378-bd36-18e48a20dc0d', 'boot_index': 1, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/8389513e-b6ce-4378-bd36-18e48a20dc0d', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/8389513e-b6ce-4378-bd36-18e48a20dc0d', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'ba9285c1-1767-4aae-b857-251ec02cc6a8', 'boot_index': 2, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/ba9285c1-1767-4aae-b857-251ec02cc6a8', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/ba9285c1-1767-4aae-b857-251ec02cc6a8', '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=ba9285c1-1767-4aae-b857-251ec02cc6a8'} +GET: /v1/volume/targets?detail=True&limit=3 {} +GOT:{'targets': [{'uuid': '95263cb7-7db1-4e10-9e76-f07ca31281d2', 'created_at': '2024-01-06T14:10:53.165210+00:00', 'updated_at': None, 'boot_index': 0, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/95263cb7-7db1-4e10-9e76-f07ca31281d2', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/95263cb7-7db1-4e10-9e76-f07ca31281d2', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'ec3974d0-dfc5-42d6-818b-63ee2f9c42f7', 'created_at': '2024-01-06T14:10:53.169211+00:00', 'updated_at': None, 'boot_index': 1, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/ec3974d0-dfc5-42d6-818b-63ee2f9c42f7', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/ec3974d0-dfc5-42d6-818b-63ee2f9c42f7', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '3e08b677-3cca-4b60-b47a-f8e4d5ecd444', 'created_at': '2024-01-06T14:10:53.172983+00:00', 'updated_at': None, 'boot_index': 2, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/3e08b677-3cca-4b60-b47a-f8e4d5ecd444', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/3e08b677-3cca-4b60-b47a-f8e4d5ecd444', '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=3e08b677-3cca-4b60-b47a-f8e4d5ecd444'} +GET: /v1/volume/targets?detail=True {} +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_have_names +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_have_names ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_node_not_found +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_node_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_against_single +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_against_single ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbid_project_mismatch +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbid_project_mismatch ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_and_fields +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_and_fields ... ok +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -Openstack-Request-Id: req-00c02c9c-c38d-40a4-8287-88f4e807ac16 +Openstack-Request-Id: req-0075f1e5-4c88-483b-af3a-f9bc7d2168a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:37.851045+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} -GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:32:37.851045+00:00', 'updated_at': None, 'address': 'aa:bb:cc:dd:ee:ff', 'extra': {}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -Openstack-Request-Id: req-81bb1c92-3893-4072-8225-7bc6d121fe3a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.26 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:38.241165+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {'foo': 123}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_doesnt_contain_id -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_doesnt_contain_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbid_project_mismatch -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbid_project_mismatch ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interfaces_without_driver -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interfaces_without_driver ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_error -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_error ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_storage_interface_old_api_version -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_storage_interface_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_generate_uuid -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_generate_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbidden -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_network_interface -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_network_interface ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbidden_no_project -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbidden_no_project ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_internal_info_not_allowed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_internal_info_not_allowed ... ok +{"uuid": "09554940-1594-476c-8378-e213a629ef82", "created_at": "2024-01-06T14:10:51.944714+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", "cpus": "8", "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/09554940-1594-476c-8378-e213a629ef82", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "self"}, {"href": "http://localhost/nodes/09554940-1594-476c-8378-e213a629ef82/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/c12b59fc-8486-4117-94c9-e483d1f9cec4 [{'path': '/boot_interface', 'value': 'fake', 'op': 'add'}] GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-e95e6096-12e3-4b94-845f-531a80e08cfa +Openstack-Request-Id: req-4364d511-be68-4fa4-ba2e-aea15b67a55a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'inspect_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +PATCH: /v1/nodes/c12b59fc-8486-4117-94c9-e483d1f9cec4 [{'path': '/console_interface', 'value': 'fake', 'op': 'add'}] GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-23bc89fe-8577-4654-9a3b-4436d1ccc54b +Openstack-Request-Id: req-f54e6afd-cb53-4b7c-8c60-0413b75c6e32 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'management_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +PATCH: /v1/nodes/c12b59fc-8486-4117-94c9-e483d1f9cec4 [{'path': '/deploy_interface', 'value': 'fake', 'op': 'add'}] GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-e91b0c40-ffb9-4679-a85d-4a62e1fabd8a +Openstack-Request-Id: req-f4cdbc84-c07b-4cbf-b885-83fb706df42f X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'power_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +PATCH: /v1/nodes/c12b59fc-8486-4117-94c9-e483d1f9cec4 [{'path': '/inspect_interface', 'value': 'fake', 'op': 'add'}] GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-a23e28ec-99a7-4179-bafc-035b0e428076 +Openstack-Request-Id: req-5bf09374-34f9-4084-91c5-51ddb0fc1c01 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'raid_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +PATCH: /v1/nodes/c12b59fc-8486-4117-94c9-e483d1f9cec4 [{'path': '/management_interface', 'value': 'fake', 'op': 'add'}] GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-e2bf42b7-4762-469f-a7c0-c417ae1230e7 +Openstack-Request-Id: req-0646350c-7081-4f06-a9f0-34a48b891150 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'vendor_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +PATCH: /v1/nodes/c12b59fc-8486-4117-94c9-e483d1f9cec4 [{'path': '/power_interface', 'value': 'fake', 'op': 'add'}] GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-d0759311-7b8b-431f-b68b-d0d515255e0c +Openstack-Request-Id: req-0ce29297-e5fe-49b7-8dd9-d75abdbd0fe4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'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', 'cpus': '8', '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 +PATCH: /v1/nodes/c12b59fc-8486-4117-94c9-e483d1f9cec4 [{'path': '/raid_interface', 'value': 'fake', 'op': 'add'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-55c6a19c-670c-43ad-930c-f30d7a5caed7 +Openstack-Request-Id: req-329c5fb1-a5b0-4140-a9a2-632a1e4e3013 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for node: Additional properties are not allowed ('traits' was unexpected)\", \"debuginfo\": null}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'storage_interface': 'cinder', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +X-Openstack-Ironic-Api-Version: 1.30 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/c12b59fc-8486-4117-94c9-e483d1f9cec4 [{'path': '/vendor_interface', 'value': 'fake', 'op': 'add'}] GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-dd820450-ff7f-4b62-87e5-94336a19490a +Openstack-Request-Id: req-575b1f36-ec7a-4d6a-80e0-b2524ba25e2c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.32 +X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_driver_info -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_driver_info ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_addr_format -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_addr_format ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_api_version ... ok -GOT:{'nodes': [{'uuid': 'fab5e7ac-9573-4c88-ae48-d7d92113cb25', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/fab5e7ac-9573-4c88-ae48-d7d92113cb25', 'rel': 'self'}, {'href': 'http://localhost/nodes/fab5e7ac-9573-4c88-ae48-d7d92113cb25', 'rel': 'bookmark'}]}, {'uuid': '4f48d2be-067e-4c3e-aeac-720720e1ea3f', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/4f48d2be-067e-4c3e-aeac-720720e1ea3f', 'rel': 'self'}, {'href': 'http://localhost/nodes/4f48d2be-067e-4c3e-aeac-720720e1ea3f', 'rel': 'bookmark'}]}, {'uuid': '117fe50a-9e8a-45d8-9185-f8f10458c539', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/117fe50a-9e8a-45d8-9185-f8f10458c539', 'rel': 'self'}, {'href': 'http://localhost/nodes/117fe50a-9e8a-45d8-9185-f8f10458c539', 'rel': 'bookmark'}]}, {'uuid': '0913e0b0-3a2f-48c5-956b-e721969d5154', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/0913e0b0-3a2f-48c5-956b-e721969d5154', 'rel': 'self'}, {'href': 'http://localhost/nodes/0913e0b0-3a2f-48c5-956b-e721969d5154', 'rel': 'bookmark'}]}, {'uuid': '0b3a87bf-26ec-4062-bc4e-f4027e4bdc7c', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/0b3a87bf-26ec-4062-bc4e-f4027e4bdc7c', 'rel': 'self'}, {'href': 'http://localhost/nodes/0b3a87bf-26ec-4062-bc4e-f4027e4bdc7c', 'rel': 'bookmark'}]}]} +PATCH: /v1/nodes/ffff226c-46eb-406e-96bc-b1b30d68b3bd [{'path': '/lessee', 'value': 'new-project', 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_lessee +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_lessee ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_lessee_old_api +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_lessee_old_api ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbidden +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbidden ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_by_node_name_ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_by_node_name_ok ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_status_and_status +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_status_and_status ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbidden_no_project +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbidden_no_project ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_false +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_false ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_token +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_token ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_verify_ca +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_verify_ca ... ok +GOT:{'nodes': [{'uuid': 'c89ef89b-ae17-419f-b819-1d500876c009', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/c89ef89b-ae17-419f-b819-1d500876c009', 'rel': 'self'}, {'href': 'http://localhost/nodes/c89ef89b-ae17-419f-b819-1d500876c009', 'rel': 'bookmark'}]}, {'uuid': '15761975-8351-4585-97a1-96b53c96c475', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/15761975-8351-4585-97a1-96b53c96c475', 'rel': 'self'}, {'href': 'http://localhost/nodes/15761975-8351-4585-97a1-96b53c96c475', 'rel': 'bookmark'}]}, {'uuid': '4b2231e2-0414-4815-9ff8-4a9e6d39eea7', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/4b2231e2-0414-4815-9ff8-4a9e6d39eea7', 'rel': 'self'}, {'href': 'http://localhost/nodes/4b2231e2-0414-4815-9ff8-4a9e6d39eea7', 'rel': 'bookmark'}]}, {'uuid': '080f3399-6ca5-4bc0-bb31-b2a37595b5d7', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/080f3399-6ca5-4bc0-bb31-b2a37595b5d7', 'rel': 'self'}, {'href': 'http://localhost/nodes/080f3399-6ca5-4bc0-bb31-b2a37595b5d7', 'rel': 'bookmark'}]}, {'uuid': '2d5f5a6b-0437-4340-bbee-accb1aacd0d9', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/2d5f5a6b-0437-4340-bbee-accb1aacd0d9', 'rel': 'self'}, {'href': 'http://localhost/nodes/2d5f5a6b-0437-4340-bbee-accb1aacd0d9', 'rel': 'bookmark'}]}]} GET: /v1/nodes {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-29c196cd-8248-48cd-97e8-dbfeaf22c6e8 +Openstack-Request-Id: req-c229f1ab-dfee-4ef5-a098-47a27e69161a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} GET: /v1/nodes {} -GOT:{'nodes': [{'uuid': '094e39a8-51c6-4db5-853e-47ffd9aed664', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': 'node-0', 'links': [{'href': 'http://localhost/v1/nodes/094e39a8-51c6-4db5-853e-47ffd9aed664', 'rel': 'self'}, {'href': 'http://localhost/nodes/094e39a8-51c6-4db5-853e-47ffd9aed664', 'rel': 'bookmark'}]}, {'uuid': 'd281003d-2f27-41e9-a532-3d59158096aa', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': 'node-1', 'links': [{'href': 'http://localhost/v1/nodes/d281003d-2f27-41e9-a532-3d59158096aa', 'rel': 'self'}, {'href': 'http://localhost/nodes/d281003d-2f27-41e9-a532-3d59158096aa', 'rel': 'bookmark'}]}, {'uuid': '27667d68-c2a2-41b8-96e9-68287e647ffb', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': 'node-2', 'links': [{'href': 'http://localhost/v1/nodes/27667d68-c2a2-41b8-96e9-68287e647ffb', 'rel': 'self'}, {'href': 'http://localhost/nodes/27667d68-c2a2-41b8-96e9-68287e647ffb', 'rel': 'bookmark'}]}, {'uuid': '4e1dd527-b978-434d-9049-a3aa1511ae34', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': 'node-3', 'links': [{'href': 'http://localhost/v1/nodes/4e1dd527-b978-434d-9049-a3aa1511ae34', 'rel': 'self'}, {'href': 'http://localhost/nodes/4e1dd527-b978-434d-9049-a3aa1511ae34', 'rel': 'bookmark'}]}, {'uuid': '525451a2-9006-43cd-9918-c2f26f724421', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': 'node-4', 'links': [{'href': 'http://localhost/v1/nodes/525451a2-9006-43cd-9918-c2f26f724421', 'rel': 'self'}, {'href': 'http://localhost/nodes/525451a2-9006-43cd-9918-c2f26f724421', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '8dd1dbdb-001c-493f-b083-48911afdde53', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': 'node-0', 'links': [{'href': 'http://localhost/v1/nodes/8dd1dbdb-001c-493f-b083-48911afdde53', 'rel': 'self'}, {'href': 'http://localhost/nodes/8dd1dbdb-001c-493f-b083-48911afdde53', 'rel': 'bookmark'}]}, {'uuid': '131e48e3-4b1b-471f-a150-1f7b2545e97f', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': 'node-1', 'links': [{'href': 'http://localhost/v1/nodes/131e48e3-4b1b-471f-a150-1f7b2545e97f', 'rel': 'self'}, {'href': 'http://localhost/nodes/131e48e3-4b1b-471f-a150-1f7b2545e97f', 'rel': 'bookmark'}]}, {'uuid': '3a342b2e-e1e7-4933-9fa3-8fa0593f4896', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': 'node-2', 'links': [{'href': 'http://localhost/v1/nodes/3a342b2e-e1e7-4933-9fa3-8fa0593f4896', 'rel': 'self'}, {'href': 'http://localhost/nodes/3a342b2e-e1e7-4933-9fa3-8fa0593f4896', 'rel': 'bookmark'}]}, {'uuid': '35f94830-baae-4aee-9321-56c4086174db', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': 'node-3', 'links': [{'href': 'http://localhost/v1/nodes/35f94830-baae-4aee-9321-56c4086174db', 'rel': 'self'}, {'href': 'http://localhost/nodes/35f94830-baae-4aee-9321-56c4086174db', 'rel': 'bookmark'}]}, {'uuid': 'a605ac80-3e73-41b8-abc8-cf2e3582d3c3', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': 'node-4', 'links': [{'href': 'http://localhost/v1/nodes/a605ac80-3e73-41b8-abc8-cf2e3582d3c3', 'rel': 'self'}, {'href': 'http://localhost/nodes/a605ac80-3e73-41b8-abc8-cf2e3582d3c3', 'rel': 'bookmark'}]}]} GET: /v1/nodes?project=54321 {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1662f05c-f9aa-41e9-98b5-7f2ef7977042 +Openstack-Request-Id: req-72dfb148-d134-4faf-9045-4f75c5d8ebf8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} GET: /v1/nodes {} -GOT:{'nodes': [{'uuid': '5b7b27e2-e2a2-4094-ae50-a32f5781079b', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/5b7b27e2-e2a2-4094-ae50-a32f5781079b', 'rel': 'self'}, {'href': 'http://localhost/nodes/5b7b27e2-e2a2-4094-ae50-a32f5781079b', 'rel': 'bookmark'}]}, {'uuid': 'f9e8b2b8-3ed5-48b9-bf77-d258096510b3', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/f9e8b2b8-3ed5-48b9-bf77-d258096510b3', 'rel': 'self'}, {'href': 'http://localhost/nodes/f9e8b2b8-3ed5-48b9-bf77-d258096510b3', 'rel': 'bookmark'}]}, {'uuid': 'bdc603b3-0bc7-4c98-9d53-17de6f404713', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/bdc603b3-0bc7-4c98-9d53-17de6f404713', 'rel': 'self'}, {'href': 'http://localhost/nodes/bdc603b3-0bc7-4c98-9d53-17de6f404713', 'rel': 'bookmark'}]}, {'uuid': 'e292cad5-347f-47f6-bcb0-0b51a398fb34', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/e292cad5-347f-47f6-bcb0-0b51a398fb34', 'rel': 'self'}, {'href': 'http://localhost/nodes/e292cad5-347f-47f6-bcb0-0b51a398fb34', 'rel': 'bookmark'}]}, {'uuid': '7110ca4c-e206-4c82-85d6-90634785efe4', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/7110ca4c-e206-4c82-85d6-90634785efe4', 'rel': 'self'}, {'href': 'http://localhost/nodes/7110ca4c-e206-4c82-85d6-90634785efe4', 'rel': 'bookmark'}]}, {'uuid': 'e90e77c8-b193-4b62-b643-56d09db29763', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/e90e77c8-b193-4b62-b643-56d09db29763', 'rel': 'self'}, {'href': 'http://localhost/nodes/e90e77c8-b193-4b62-b643-56d09db29763', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'fdbd0b5e-d4f0-4073-8a07-a232f0ebd354', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/fdbd0b5e-d4f0-4073-8a07-a232f0ebd354', 'rel': 'self'}, {'href': 'http://localhost/nodes/fdbd0b5e-d4f0-4073-8a07-a232f0ebd354', 'rel': 'bookmark'}]}, {'uuid': '9bf0e53b-c508-4fdc-9995-ad71cbc36455', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/9bf0e53b-c508-4fdc-9995-ad71cbc36455', 'rel': 'self'}, {'href': 'http://localhost/nodes/9bf0e53b-c508-4fdc-9995-ad71cbc36455', 'rel': 'bookmark'}]}, {'uuid': '9dd99a18-91ca-4567-95b7-78626fb21770', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/9dd99a18-91ca-4567-95b7-78626fb21770', 'rel': 'self'}, {'href': 'http://localhost/nodes/9dd99a18-91ca-4567-95b7-78626fb21770', 'rel': 'bookmark'}]}, {'uuid': 'a71afcc1-a420-422d-afeb-537843db1164', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/a71afcc1-a420-422d-afeb-537843db1164', 'rel': 'self'}, {'href': 'http://localhost/nodes/a71afcc1-a420-422d-afeb-537843db1164', 'rel': 'bookmark'}]}, {'uuid': '5fdaabdf-83e8-4bcc-bf7d-077c1656e72b', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/5fdaabdf-83e8-4bcc-bf7d-077c1656e72b', 'rel': 'self'}, {'href': 'http://localhost/nodes/5fdaabdf-83e8-4bcc-bf7d-077c1656e72b', 'rel': 'bookmark'}]}, {'uuid': '839c793b-efa6-401b-9b94-25e6bc45183c', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/839c793b-efa6-401b-9b94-25e6bc45183c', 'rel': 'self'}, {'href': 'http://localhost/nodes/839c793b-efa6-401b-9b94-25e6bc45183c', 'rel': 'bookmark'}]}]} GET: /v1/nodes {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-cbd70f58-89c9-4b5d-b242-267655a77b99 +Openstack-Request-Id: req-fecdfad2-c7fe-4ae4-91bd-9bd58c36c919 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:40.105489+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:54.106741+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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 {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_mask_available_state ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_mask_available_state ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_next_link_with_association +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_next_link_with_association ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_sepecified_by_path +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_sepecified_by_path ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1f1d7fc9-a174-4375-af16-1ec5b6fe23d8 +Openstack-Request-Id: req-6e590e7b-a1c8-4e33-8bd8-64567378377e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f5a0cf3f-77db-4164-8db8-5b8906bc0862", "created_at": "2024-01-06T13:32:35.725107+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", "cpus": "8", "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/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "self"}, {"href": "http://localhost/nodes/f5a0cf3f-77db-4164-8db8-5b8906bc0862/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?reset_interfaces=True [{'path': '/driver', 'value': 'ipmi', 'op': 'replace'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:50.661229+00:00", "updated_at": "2024-01-06T14:10:50.777921+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo": "bar"}, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8859487d-a23c-4619-9582-bb92d58b9429 +Openstack-Request-Id: req-0c6bf7d3-cd1e-4cc7-bb77-66f570444aa8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?reset_interfaces=True [{'path': '/name', 'value': 'new name', 'op': 'replace'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.38 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:50.997638+00:00", "updated_at": "2024-01-06T14:10:51.160750+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-6e4f7190-edde-484d-913f-fdb995b99d38 +Openstack-Request-Id: req-5d8fb774-44f9-4b8a-ab3b-d48f879fe5c5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/03c0f647-17c8-492a-93f1-1b12e96ed86c [{'path': '/network_interface', 'op': 'remove'}] -GOT:Response: 200 OK +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}"} +PATCH: /v1/ports/a6e60905-59f5-45fc-82e1-f56bffedfb29 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ca8cb2ef-7737-4adf-9560-53b070e3286a +Openstack-Request-Id: req-cdfb8c8d-258a-41c0-b270-7ce73fe10284 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "03c0f647-17c8-492a-93f1-1b12e96ed86c", "created_at": "2024-01-06T13:32:39.263762+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", "cpus": "8", "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/03c0f647-17c8-492a-93f1-1b12e96ed86c", "rel": "self"}, {"href": "http://localhost/nodes/03c0f647-17c8-492a-93f1-1b12e96ed86c", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/03c0f647-17c8-492a-93f1-1b12e96ed86c/ports", "rel": "self"}, {"href": "http://localhost/nodes/03c0f647-17c8-492a-93f1-1b12e96ed86c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/03c0f647-17c8-492a-93f1-1b12e96ed86c/states", "rel": "self"}, {"href": "http://localhost/nodes/03c0f647-17c8-492a-93f1-1b12e96ed86c/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/03c0f647-17c8-492a-93f1-1b12e96ed86c/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/03c0f647-17c8-492a-93f1-1b12e96ed86c/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/03c0f647-17c8-492a-93f1-1b12e96ed86c/volume", "rel": "self"}, {"href": "http://localhost/nodes/03c0f647-17c8-492a-93f1-1b12e96ed86c/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/d63bb750-0441-46a7-b1f1-c55b922e20e2 [{'path': '/storage_interface', 'op': 'remove'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_storage_interface -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_storage_interface ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_next_link_with_association -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_next_link_with_association ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_extra -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_extra ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_node_uuid_format -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_node_uuid_format ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_allowed_in_maintenance -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_allowed_in_maintenance ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_next_link_with_association_with_detail -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_next_link_with_association_with_detail ... ok -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port a6e60905-59f5-45fc-82e1-f56bffedfb29 could not be found.\", \"debuginfo\": null}"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/address', 'value': 'AA:BB:CC:DD:EE:FF', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -Openstack-Request-Id: req-a64c17fb-f4c8-4a51-8f80-bd72050489c0 +Openstack-Request-Id: req-1051fe31-ae56-4d3d-84a4-1c2d7f4c576f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:38.592317+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} -GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:32:38.592317+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {'foo': 123}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 500 Internal Server Error +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:51.725438+00:00", "updated_at": "2024-01-06T14:10:51.812943+00:00", "address": "aa:bb:cc:dd:ee:ff", "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/pxe_enabled', 'value': True, 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0fe59361-4fc3-4290-ac27-d0152ed0e634 +Openstack-Request-Id: req-03594e9a-8908-4da4-a60c-c85cfe366d16 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} -POST: /v1/portgroups {'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.19 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:51.927178+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/pxe_enabled', 'value': True, 'op': 'replace'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Location: http://localhost/v1/portgroups/0494b33f-8765-4960-be80-ff3856981424 -Openstack-Request-Id: req-32740c63-c95a-462d-b22f-a1611acb3f11 +Openstack-Request-Id: req-b466f7bf-f4b1-4807-8edf-a35230443316 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "0494b33f-8765-4960-be80-ff3856981424", "created_at": "2024-01-06T13:32:39.409630+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, "links": [{"href": "http://localhost/v1/portgroups/0494b33f-8765-4960-be80-ff3856981424", "rel": "self"}, {"href": "http://localhost/portgroups/0494b33f-8765-4960-be80-ff3856981424", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "ports": [{"href": "http://localhost/v1/portgroups/0494b33f-8765-4960-be80-ff3856981424/ports", "rel": "self"}, {"href": "http://localhost/portgroups/0494b33f-8765-4960-be80-ff3856981424/ports", "rel": "bookmark"}]} -GET: /v1/portgroups/0494b33f-8765-4960-be80-ff3856981424 {} -GOT:{'uuid': '0494b33f-8765-4960-be80-ff3856981424', 'created_at': '2024-01-06T13:32:39.409630+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/0494b33f-8765-4960-be80-ff3856981424', 'rel': 'self'}, {'href': 'http://localhost/portgroups/0494b33f-8765-4960-be80-ff3856981424', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/0494b33f-8765-4960-be80-ff3856981424/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/0494b33f-8765-4960-be80-ff3856981424/ports', 'rel': 'bookmark'}]} -POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'internal_info': 'info'} +X-Openstack-Ironic-Api-Version: 1.14 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': '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-36bba9f6-5706-45c4-b020-cfee5c4cfc83 +Openstack-Request-Id: req-79cc5350-3616-477b-953b-02ed1721513b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for portgroup: Additional properties are not allowed ('internal_info' was unexpected)\", \"debuginfo\": null}"} -POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': 'invalid-format', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Agent status is invalid. Valid states are start,end,error.\", \"debuginfo\": null}"} +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url2'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-86a1feb2-5b90-498e-b7a1-bd9c49f144e8 +Openstack-Request-Id: req-0e9cbdfd-c8e3-4b59-8ec8-71926a41cd2d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-format\", \"debuginfo\": null}"} -POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Detected change in ramdisk provided \\\"callback_url\\\"\", \"debuginfo\": null}"} +POST: /v1/heartbeat/948cac06-5b48-4458-950f-1b47de4da8d7 {'callback_url': 'url'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b854a9b2-a082-4df9-8b50-c4c9c473d095 +Openstack-Request-Id: req-21557796-fce7-4e9d-a40c-3e0a8dd26a49 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': 'invalid-format'} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-dffe1100-d2ab-4ef7-999a-4efeefba4ef8 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 948cac06-5b48-4458-950f-1b47de4da8d7 could not be found.\", \"debuginfo\": null}"} +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'x'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-da66e9bd-f5c8-440a-adbe-889fe1cf7da3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for node_uuid: invalid-format\", \"debuginfo\": null}"} -POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'mode': '802.3ad', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 406 Not Acceptable -Content-Type: application/json -Openstack-Request-Id: req-22fa259c-35d4-451a-9622-f23325ef45ef + +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_status': 'start', 'agent_status_message': 'woof', 'agent_verify_ca': 'abcdef1'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-d89fa0ce-8a1c-476a-a0b4-ad75672e149a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'properties': {'bond_prop': 123}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_mode_old_api_version -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_mode_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_allowed_in_power_transition -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_allowed_in_power_transition ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:40.105489+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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/?limit=3&associated=True {} -GOT:{'nodes': [{'uuid': '3e97b4b8-25e2-4596-8225-0fe76e2c85c5', 'instance_uuid': '8a31a2dc-89dc-4929-aa7a-a5e6f160a0d6', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/3e97b4b8-25e2-4596-8225-0fe76e2c85c5', 'rel': 'self'}, {'href': 'http://localhost/nodes/3e97b4b8-25e2-4596-8225-0fe76e2c85c5', 'rel': 'bookmark'}]}, {'uuid': 'fb7a1338-7524-4c1c-b9f4-bb6378f68c91', 'instance_uuid': '65a97941-6bcb-41c7-9954-732681bc5768', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/fb7a1338-7524-4c1c-b9f4-bb6378f68c91', 'rel': 'self'}, {'href': 'http://localhost/nodes/fb7a1338-7524-4c1c-b9f4-bb6378f68c91', 'rel': 'bookmark'}]}, {'uuid': 'c1a3676f-fa52-4739-816f-dc5887307d20', 'instance_uuid': '2a31d68a-5ef3-492d-9fda-17557ba3db60', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/c1a3676f-fa52-4739-816f-dc5887307d20', 'rel': 'self'}, {'href': 'http://localhost/nodes/c1a3676f-fa52-4739-816f-dc5887307d20', '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=c1a3676f-fa52-4739-816f-dc5887307d20'} -GET: /v1/nodes/detail?limit=3&associated=true {} -GOT:{'nodes': [{'uuid': '046668b1-7833-49ad-b3c1-5f7929bc9562', 'created_at': '2024-01-06T13:32:41.120908+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': 'c6427d03-9d8c-422a-88b4-567d38f00c5e', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/046668b1-7833-49ad-b3c1-5f7929bc9562', 'rel': 'self'}, {'href': 'http://localhost/nodes/046668b1-7833-49ad-b3c1-5f7929bc9562', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/046668b1-7833-49ad-b3c1-5f7929bc9562/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/046668b1-7833-49ad-b3c1-5f7929bc9562/ports', 'rel': 'bookmark'}]}, {'uuid': '6b7bd3e7-d974-42e9-9b30-3a6092d3cb10', 'created_at': '2024-01-06T13:32:41.150799+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': 'a9cc9998-030d-4688-8635-682bafbe43d6', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/6b7bd3e7-d974-42e9-9b30-3a6092d3cb10', 'rel': 'self'}, {'href': 'http://localhost/nodes/6b7bd3e7-d974-42e9-9b30-3a6092d3cb10', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/6b7bd3e7-d974-42e9-9b30-3a6092d3cb10/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/6b7bd3e7-d974-42e9-9b30-3a6092d3cb10/ports', 'rel': 'bookmark'}]}, {'uuid': 'da72df13-d49c-4165-b192-b35a91bbea75', 'created_at': '2024-01-06T13:32:41.163486+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': 'adc80d61-5a60-456d-ad8b-a8337ad890fe', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/da72df13-d49c-4165-b192-b35a91bbea75', 'rel': 'self'}, {'href': 'http://localhost/nodes/da72df13-d49c-4165-b192-b35a91bbea75', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/da72df13-d49c-4165-b192-b35a91bbea75/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/da72df13-d49c-4165-b192-b35a91bbea75/ports', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/nodes/detail?sort_key=id&sort_dir=asc&associated=True&limit=3&marker=da72df13-d49c-4165-b192-b35a91bbea75'} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_false_field -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_false_field ... ok -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-eb85ee14-29db-4a79-9973-0b8a291f0ee7 +X-Openstack-Ironic-Api-Version: 1.80 + +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'abcdef1'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-d7c951e3-438b-4f22-a3b7-05bbc80e092f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:39.755009+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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:39.755009+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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-d97c79a2-9226-4d4b-bab3-b03e6d904037 +X-Openstack-Ironic-Api-Version: 1.80 + +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_verify_ca': 'abcdef1'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-62e3e8bb-b9b2-4bdb-aca8-c90d9b3c7629 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:40.682806+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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:40.682806+00:00', 'updated_at': None, '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': None, 'dict': {'cat': 'meow'}}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} -POST: /v1/nodes {'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'} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_properties -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_properties ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_mode_properties -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_mode_properties ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_name_invalid -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_name_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_chassis_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_chassis_uuid ... ok +X-Openstack-Ironic-Api-Version: 1.80 + +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_version': '1.4.1', 'agent_token': 'meow'} +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_version +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_version ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_by_name +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_by_name ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_next_link_with_association_with_detail +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_next_link_with_association_with_detail ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_empty +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_empty ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_with_json +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_with_json ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-89e05713-5423-411f-85ba-8540e7754db9 +Openstack-Request-Id: req-e5dea8e9-5ff1-4c9f-b4d8-c78a64bf8db7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "d63bb750-0441-46a7-b1f1-c55b922e20e2", "created_at": "2024-01-06T13:32:40.015960+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", "cpus": "8", "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/d63bb750-0441-46a7-b1f1-c55b922e20e2", "rel": "self"}, {"href": "http://localhost/nodes/d63bb750-0441-46a7-b1f1-c55b922e20e2", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d63bb750-0441-46a7-b1f1-c55b922e20e2/ports", "rel": "self"}, {"href": "http://localhost/nodes/d63bb750-0441-46a7-b1f1-c55b922e20e2/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/d63bb750-0441-46a7-b1f1-c55b922e20e2/states", "rel": "self"}, {"href": "http://localhost/nodes/d63bb750-0441-46a7-b1f1-c55b922e20e2/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/d63bb750-0441-46a7-b1f1-c55b922e20e2/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/d63bb750-0441-46a7-b1f1-c55b922e20e2/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/d63bb750-0441-46a7-b1f1-c55b922e20e2/volume", "rel": "self"}, {"href": "http://localhost/nodes/d63bb750-0441-46a7-b1f1-c55b922e20e2/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/a629a9fc-b4b0-4108-ac04-a16471c935a1 [{'path': '/instance_uuid', 'op': 'remove'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.65 +{"uuid": "ffff226c-46eb-406e-96bc-b1b30d68b3bd", "created_at": "2024-01-06T14:10:53.501678+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", "cpus": "8", "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/ffff226c-46eb-406e-96bc-b1b30d68b3bd", "rel": "self"}, {"href": "http://localhost/nodes/ffff226c-46eb-406e-96bc-b1b30d68b3bd", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ffff226c-46eb-406e-96bc-b1b30d68b3bd/ports", "rel": "self"}, {"href": "http://localhost/nodes/ffff226c-46eb-406e-96bc-b1b30d68b3bd/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ffff226c-46eb-406e-96bc-b1b30d68b3bd/states", "rel": "self"}, {"href": "http://localhost/nodes/ffff226c-46eb-406e-96bc-b1b30d68b3bd/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ffff226c-46eb-406e-96bc-b1b30d68b3bd/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ffff226c-46eb-406e-96bc-b1b30d68b3bd/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ffff226c-46eb-406e-96bc-b1b30d68b3bd/volume", "rel": "self"}, {"href": "http://localhost/nodes/ffff226c-46eb-406e-96bc-b1b30d68b3bd/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/5f8b0da9-1887-42a5-9995-abc943b77d5a [{'path': '/lessee', 'value': 'new-project', 'op': 'replace'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-d85a29a3-4c45-4c1e-9b22-1c54ea7c8808 +Openstack-Request-Id: req-dc649f02-3fec-4160-a6c1-0322e1967db0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "a629a9fc-b4b0-4108-ac04-a16471c935a1", "created_at": "2024-01-06T13:32:40.812122+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", "cpus": "8", "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/a629a9fc-b4b0-4108-ac04-a16471c935a1", "rel": "self"}, {"href": "http://localhost/nodes/a629a9fc-b4b0-4108-ac04-a16471c935a1", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/a629a9fc-b4b0-4108-ac04-a16471c935a1/ports", "rel": "self"}, {"href": "http://localhost/nodes/a629a9fc-b4b0-4108-ac04-a16471c935a1/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/465c3c26-c69f-432b-aa13-f918aad718e1 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.64 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/e7f7f766-8ca0-420a-8e75-329f28ea4a5b [{'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.1ad', '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-a24b0da5-a014-42c9-aa5c-1baa5c058fb2 +Openstack-Request-Id: req-510f5576-4e2f-47d8-9418-2dcb2c73febc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "465c3c26-c69f-432b-aa13-f918aad718e1", "created_at": "2024-01-06T13:32:41.458316+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", "cpus": "8", "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/465c3c26-c69f-432b-aa13-f918aad718e1", "rel": "self"}, {"href": "http://localhost/nodes/465c3c26-c69f-432b-aa13-f918aad718e1", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/465c3c26-c69f-432b-aa13-f918aad718e1/ports", "rel": "self"}, {"href": "http://localhost/nodes/465c3c26-c69f-432b-aa13-f918aad718e1/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/de8889ae-76c4-46f3-957f-66fdcfc7bbad [{'path': '/automated_clean', 'value': True, 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:41.517965+00:00', 'updated_at': None, 'automated_clean': False, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +X-Openstack-Ironic-Api-Version: 1.66 +{"uuid": "e7f7f766-8ca0-420a-8e75-329f28ea4a5b", "created_at": "2024-01-06T14:10:54.005888+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", "cpus": "8", "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/e7f7f766-8ca0-420a-8e75-329f28ea4a5b", "rel": "self"}, {"href": "http://localhost/nodes/e7f7f766-8ca0-420a-8e75-329f28ea4a5b", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e7f7f766-8ca0-420a-8e75-329f28ea4a5b/ports", "rel": "self"}, {"href": "http://localhost/nodes/e7f7f766-8ca0-420a-8e75-329f28ea4a5b/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e7f7f766-8ca0-420a-8e75-329f28ea4a5b/states", "rel": "self"}, {"href": "http://localhost/nodes/e7f7f766-8ca0-420a-8e75-329f28ea4a5b/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e7f7f766-8ca0-420a-8e75-329f28ea4a5b/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e7f7f766-8ca0-420a-8e75-329f28ea4a5b/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e7f7f766-8ca0-420a-8e75-329f28ea4a5b/volume", "rel": "self"}, {"href": "http://localhost/nodes/e7f7f766-8ca0-420a-8e75-329f28ea4a5b/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/f8224324-33f1-4219-a9c4-3ba2f641b354 [{'path': '/network_data', 'value': {'cat': 'meow'}, 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_custom +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_custom ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_all_by_node_name_ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_all_by_node_name_ok ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_old_api +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_old_api ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_API_agent_verify_ca_error +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_API_agent_verify_ca_error ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:54.106741+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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/?limit=3&associated=True {} +GOT:{'nodes': [{'uuid': '91c2d5a7-4ba2-41b0-8cab-94a933c37bb1', 'instance_uuid': 'b4377515-f350-4d85-b17f-093e72e72cad', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/91c2d5a7-4ba2-41b0-8cab-94a933c37bb1', 'rel': 'self'}, {'href': 'http://localhost/nodes/91c2d5a7-4ba2-41b0-8cab-94a933c37bb1', 'rel': 'bookmark'}]}, {'uuid': '721b1b05-7965-47a0-a803-953d184551a4', 'instance_uuid': '4425006a-22d4-4158-85b6-087abbd0830b', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/721b1b05-7965-47a0-a803-953d184551a4', 'rel': 'self'}, {'href': 'http://localhost/nodes/721b1b05-7965-47a0-a803-953d184551a4', 'rel': 'bookmark'}]}, {'uuid': '2a182bb3-2d5d-4672-abe7-c16d1cda3b60', 'instance_uuid': 'ee6d40a8-9cc5-472c-872c-7112a6be801c', 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/2a182bb3-2d5d-4672-abe7-c16d1cda3b60', 'rel': 'self'}, {'href': 'http://localhost/nodes/2a182bb3-2d5d-4672-abe7-c16d1cda3b60', '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=2a182bb3-2d5d-4672-abe7-c16d1cda3b60'} +GET: /v1/nodes/detail?limit=3&associated=true {} +GOT:{'nodes': [{'uuid': '4b6be52b-a021-46ce-a954-9d79006c84ae', 'created_at': '2024-01-06T14:10:54.524519+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': '1d40f531-b8b6-40fa-999b-06f6a33d507d', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/4b6be52b-a021-46ce-a954-9d79006c84ae', 'rel': 'self'}, {'href': 'http://localhost/nodes/4b6be52b-a021-46ce-a954-9d79006c84ae', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/4b6be52b-a021-46ce-a954-9d79006c84ae/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/4b6be52b-a021-46ce-a954-9d79006c84ae/ports', 'rel': 'bookmark'}]}, {'uuid': '1f99ccea-223f-443d-a96c-6d78a18c69f5', 'created_at': '2024-01-06T14:10:54.535125+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': '48d6a657-8923-4834-a671-5c04d2b5c89a', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/1f99ccea-223f-443d-a96c-6d78a18c69f5', 'rel': 'self'}, {'href': 'http://localhost/nodes/1f99ccea-223f-443d-a96c-6d78a18c69f5', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1f99ccea-223f-443d-a96c-6d78a18c69f5/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1f99ccea-223f-443d-a96c-6d78a18c69f5/ports', 'rel': 'bookmark'}]}, {'uuid': '6dde41d0-ba0c-4e3f-bfae-c24279a89a9c', 'created_at': '2024-01-06T14:10:54.553900+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': 'bb63bb0e-9776-414d-b5db-17b03eff2d11', 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/6dde41d0-ba0c-4e3f-bfae-c24279a89a9c', 'rel': 'self'}, {'href': 'http://localhost/nodes/6dde41d0-ba0c-4e3f-bfae-c24279a89a9c', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/6dde41d0-ba0c-4e3f-bfae-c24279a89a9c/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/6dde41d0-ba0c-4e3f-bfae-c24279a89a9c/ports', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/nodes/detail?sort_key=id&sort_dir=asc&associated=True&limit=3&marker=6dde41d0-ba0c-4e3f-bfae-c24279a89a9c'} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_false_field +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_false_field ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_collection_custom_fields +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_collection_custom_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_API_agent_version_error +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_API_agent_version_error ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_wrong_format +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_wrong_format ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_collection_pagination_no_uuid +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_collection_pagination_no_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_api_agent_status_error +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_api_agent_status_error ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_api_version +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_custom_fields_invalid_fields +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_custom_fields_invalid_fields ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:54.750198+00:00', 'updated_at': None, 'automated_clean': False, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:41.873568+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:54.934940+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:41.873568+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:54.934940+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_null_field ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_null_field ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_true_field ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_true_field ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_name_ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_name_ok ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean_old_api -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean_old_api ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_no_address -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_no_address ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:42.331042+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_fast_deploy_lookup +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_fast_deploy_lookup ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one_custom_fields +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one_custom_fields ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:55.108413+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:42.613830+00:00', 'updated_at': None, 'automated_clean': True, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:55.255606+00:00', 'updated_at': None, 'automated_clean': True, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:42.945423+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:55.397946+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_bios_hidden_in_lower_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_bios_hidden_in_lower_version ... ok -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-3c9f5163-b372-4b46-8aff-eb96c34caae9 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:41.467268+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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:41.467268+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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-4e6c68aa-0077-4145-8a81-c95c621091c9 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:42.327874+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", "cpus": "8", "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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:42.327874+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} -GOT:Response: 201 Created +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one_invalid_api_version ... ok +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -Openstack-Request-Id: req-33078c4e-67b5-497e-8e11-bd64ac875957 +Openstack-Request-Id: req-4b881f9d-bdb5-4c5c-892c-c38373e3a887 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:32:43.064213+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", "cpus": "8", "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 {} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_default_resource_class -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_default_resource_class ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean_with_false -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean_with_false ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_internal_field -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_internal_field ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_no_mandatory_field_node_uuid -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_no_mandatory_field_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_by_name_unsupported -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_by_name_unsupported ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_node_uuid_not_found -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_node_uuid_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_portgroups_subresource -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_portgroups_subresource ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:42.945423+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/a5a0706e-ebeb-4899-acc1-063ea92488e8 {} -GOT:{'uuid': 'a5a0706e-ebeb-4899-acc1-063ea92488e8', 'created_at': '2024-01-06T13:32:43.332235+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': 'bios', 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/a5a0706e-ebeb-4899-acc1-063ea92488e8', 'rel': 'self'}, {'href': 'http://localhost/nodes/a5a0706e-ebeb-4899-acc1-063ea92488e8', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/a5a0706e-ebeb-4899-acc1-063ea92488e8/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/a5a0706e-ebeb-4899-acc1-063ea92488e8/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/a5a0706e-ebeb-4899-acc1-063ea92488e8/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/a5a0706e-ebeb-4899-acc1-063ea92488e8/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/a5a0706e-ebeb-4899-acc1-063ea92488e8/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/a5a0706e-ebeb-4899-acc1-063ea92488e8/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/a5a0706e-ebeb-4899-acc1-063ea92488e8/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/a5a0706e-ebeb-4899-acc1-063ea92488e8/volume', 'rel': 'bookmark'}]} -GET: /v1/nodes/7635ed5d-b5f7-428e-9b63-23a7047db24f {} -GOT:{'uuid': '7635ed5d-b5f7-428e-9b63-23a7047db24f', 'created_at': '2024-01-06T13:32:43.451753+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': 'uefi', 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/7635ed5d-b5f7-428e-9b63-23a7047db24f', 'rel': 'self'}, {'href': 'http://localhost/nodes/7635ed5d-b5f7-428e-9b63-23a7047db24f', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/7635ed5d-b5f7-428e-9b63-23a7047db24f/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/7635ed5d-b5f7-428e-9b63-23a7047db24f/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/7635ed5d-b5f7-428e-9b63-23a7047db24f/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/7635ed5d-b5f7-428e-9b63-23a7047db24f/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/7635ed5d-b5f7-428e-9b63-23a7047db24f/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/7635ed5d-b5f7-428e-9b63-23a7047db24f/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/7635ed5d-b5f7-428e-9b63-23a7047db24f/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/7635ed5d-b5f7-428e-9b63-23a7047db24f/volume', 'rel': 'bookmark'}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode_null_field -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode_null_field ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_conductor_group -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_conductor_group ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_ports_subresource -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_ports_subresource ... ok +X-Openstack-Ironic-Api-Version: 1.66 +{"uuid": "f8224324-33f1-4219-a9c4-3ba2f641b354", "created_at": "2024-01-06T14:10:54.512069+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", "cpus": "8", "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/f8224324-33f1-4219-a9c4-3ba2f641b354", "rel": "self"}, {"href": "http://localhost/nodes/f8224324-33f1-4219-a9c4-3ba2f641b354", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f8224324-33f1-4219-a9c4-3ba2f641b354/ports", "rel": "self"}, {"href": "http://localhost/nodes/f8224324-33f1-4219-a9c4-3ba2f641b354/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f8224324-33f1-4219-a9c4-3ba2f641b354/states", "rel": "self"}, {"href": "http://localhost/nodes/f8224324-33f1-4219-a9c4-3ba2f641b354/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f8224324-33f1-4219-a9c4-3ba2f641b354/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f8224324-33f1-4219-a9c4-3ba2f641b354/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f8224324-33f1-4219-a9c4-3ba2f641b354/volume", "rel": "self"}, {"href": "http://localhost/nodes/f8224324-33f1-4219-a9c4-3ba2f641b354/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/4b9c8f28-0f79-4a5d-acab-ca12e23a47f3 [{'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.1ad', '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-65f8b3e8-4025-4572-8ccd-fcbedeee3a7d +Openstack-Request-Id: req-e5d79c44-b224-4df3-8c43-81be58d8897e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.25 +X-Openstack-Ironic-Api-Version: 1.62 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} -POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'mode': '802.3ad', 'properties': {'bond_prop': 123}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created +PATCH: /v1/nodes/847f0abe-1f0e-4797-b801-fc2431b0f550 [{'path': '/network_data', 'value': {'cat': 'meow'}, 'op': 'replace'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -Openstack-Request-Id: req-872600a1-cdec-448a-a7bb-a61e6e6ec87c +Openstack-Request-Id: req-83cd0c77-6345-459e-bfaf-ede0a10354a5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.26 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:41.849145+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'aa:bb_cc', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +X-Openstack-Ironic-Api-Version: 1.66 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid network_data: 'links' is a required property \", \"debuginfo\": null}"} +PATCH: /v1/nodes/e08ce5fa-9a0d-4eb7-b3e7-984fa94d3e32 [{'path': '/network_interface', 'value': 'flat', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_interface +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_interface ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_addresses +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_addresses ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_interface_old_api +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_interface_old_api ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_only_uuid +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_only_uuid ... ok +GOT:{'targets': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:53.360292+00:00', 'updated_at': None, '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?detail=True {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-560f8f58-ca2b-4ee6-b848-3ab6f7666487 +Openstack-Request-Id: req-8a0d0d71-e2f6-4373-994f-3f41a59fd0a3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create portgroup with invalid name 'aa:bb_cc'\", \"debuginfo\": null}"} -POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'foo', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: detail\", \"debuginfo\": null}"} +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?detail=True&fields=boot_index,extra {} +GOT:Response: 400 Bad Request Content-Type: application/json -Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -Openstack-Request-Id: req-8b74b78d-3892-45b1-9afe-41a1f0bf6738 +Openstack-Request-Id: req-8f192ad7-f4d4-4a77-8ecb-d259c03f3858 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:42.671201+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} -GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:32:42.671201+00:00', 'updated_at': None, 'address': 'aa:aa:aa:11:22:33', 'extra': {}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'foo', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: detail\", \"debuginfo\": null}"} +GET: /v1/volume/targets?detail=True&node=test-node {} +GOT:{'targets': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:53.913675+00:00', 'updated_at': None, '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?detail=False {} +GOT:{'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'}]} +GET: /v1/volume/targets?detail=True {} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -Openstack-Request-Id: req-a2bebacd-6a5c-456d-bced-1a278c90200d +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/volume/targets/detail {} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-e6b7961b-b380-491c-8fce-2e6c695ed221 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:43.112592+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} -GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:32:43.112592+00:00', 'updated_at': None, 'address': None, 'extra': {}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for target_uuid: detail\", \"debuginfo\": null}"} +GET: /v1/volume/targets {} +GOT:{'targets': []} +GET: /v1/volume/targets?node=test-node {} +GOT:{'targets': [{'uuid': '43e172d3-96f4-468c-ba21-3aa6b9a72328', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/43e172d3-96f4-468c-ba21-3aa6b9a72328', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/43e172d3-96f4-468c-ba21-3aa6b9a72328', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '819bae01-87b7-4de6-82d9-f5c7962c6cf4', 'boot_index': 1, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/819bae01-87b7-4de6-82d9-f5c7962c6cf4', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/819bae01-87b7-4de6-82d9-f5c7962c6cf4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '83981224-a708-48d1-a2ad-b146027fb7fc', 'boot_index': 2, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/83981224-a708-48d1-a2ad-b146027fb7fc', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/83981224-a708-48d1-a2ad-b146027fb7fc', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/volume/targets?fields=uuid,extra {} +GOT:{'targets': [{'uuid': '4e46c8f7-89fc-4655-9c07-2b971222c3ec', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/targets/4e46c8f7-89fc-4655-9c07-2b971222c3ec', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/4e46c8f7-89fc-4655-9c07-2b971222c3ec', 'rel': 'bookmark'}]}, {'uuid': '1c41b66f-6ad6-4ac2-acc4-87a87e8fbf6c', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/targets/1c41b66f-6ad6-4ac2-acc4-87a87e8fbf6c', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/1c41b66f-6ad6-4ac2-acc4-87a87e8fbf6c', 'rel': 'bookmark'}]}, {'uuid': 'ef96269d-9f09-44d9-9c21-59c18bc68c34', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/targets/ef96269d-9f09-44d9-9c21-59c18bc68c34', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/ef96269d-9f09-44d9-9c21-59c18bc68c34', 'rel': 'bookmark'}]}]} +GET: /v1/volume/targets?fields=boot_index&limit=2 {} +GOT:{'targets': [{'boot_index': 0, 'links': [{'href': 'http://localhost/v1/volume/targets/70c05920-928a-40ec-b785-3c0596e45650', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/70c05920-928a-40ec-b785-3c0596e45650', 'rel': 'bookmark'}]}, {'boot_index': 1, 'links': [{'href': 'http://localhost/v1/volume/targets/15e9dc9b-2ff4-4817-808c-3cb168318527', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/15e9dc9b-2ff4-4817-808c-3cb168318527', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/volume/targets?sort_key=id&sort_dir=asc&fields=boot_index&limit=2&marker=15e9dc9b-2ff4-4817-808c-3cb168318527'} +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,spongebob {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-50301b6b-1089-42d5-bfcb-97ab9b027b66 +Openstack-Request-Id: req-868ed5b4-369c-4ca1-b1c9-2a60c4a42974 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for portgroup: 'node_uuid' is a required property\", \"debuginfo\": null}"} -POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:10:55.378909+00:00', 'updated_at': None, '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?fields=boot_index,extra {} +GOT:{'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'}]} +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a4eee5fb-87ad-4a35-9c40-f2027d048768 +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/volume/targets/b35ee8b9-b1b2-49c8-bf3e-6f5a1e9d7f3a {} +GOT:{'uuid': 'b35ee8b9-b1b2-49c8-bf3e-6f5a1e9d7f3a', 'created_at': '2024-01-06T14:10:55.776729+00:00', 'updated_at': None, 'boot_index': 0, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/b35ee8b9-b1b2-49c8-bf3e-6f5a1e9d7f3a', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/b35ee8b9-b1b2-49c8-bf3e-6f5a1e9d7f3a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/volume/targets/b35ee8b9-b1b2-49c8-bf3e-6f5a1e9d7f3a {} +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_links +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_links ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:55.397946+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/b949e17c-df75-4ce3-9551-89782af63f7d {} +GOT:{'uuid': 'b949e17c-df75-4ce3-9551-89782af63f7d', 'created_at': '2024-01-06T14:10:55.574410+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': 'bios', 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/b949e17c-df75-4ce3-9551-89782af63f7d', 'rel': 'self'}, {'href': 'http://localhost/nodes/b949e17c-df75-4ce3-9551-89782af63f7d', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/b949e17c-df75-4ce3-9551-89782af63f7d/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/b949e17c-df75-4ce3-9551-89782af63f7d/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/b949e17c-df75-4ce3-9551-89782af63f7d/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/b949e17c-df75-4ce3-9551-89782af63f7d/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/b949e17c-df75-4ce3-9551-89782af63f7d/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/b949e17c-df75-4ce3-9551-89782af63f7d/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/b949e17c-df75-4ce3-9551-89782af63f7d/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/b949e17c-df75-4ce3-9551-89782af63f7d/volume', 'rel': 'bookmark'}]} +GET: /v1/nodes/6f9d6840-8fc3-4a1e-bfec-1936f86eeadc {} +GOT:{'uuid': '6f9d6840-8fc3-4a1e-bfec-1936f86eeadc', 'created_at': '2024-01-06T14:10:55.647034+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': 'uefi', 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/6f9d6840-8fc3-4a1e-bfec-1936f86eeadc', 'rel': 'self'}, {'href': 'http://localhost/nodes/6f9d6840-8fc3-4a1e-bfec-1936f86eeadc', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/6f9d6840-8fc3-4a1e-bfec-1936f86eeadc/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/6f9d6840-8fc3-4a1e-bfec-1936f86eeadc/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/6f9d6840-8fc3-4a1e-bfec-1936f86eeadc/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/6f9d6840-8fc3-4a1e-bfec-1936f86eeadc/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/6f9d6840-8fc3-4a1e-bfec-1936f86eeadc/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/6f9d6840-8fc3-4a1e-bfec-1936f86eeadc/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/6f9d6840-8fc3-4a1e-bfec-1936f86eeadc/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/6f9d6840-8fc3-4a1e-bfec-1936f86eeadc/volume', 'rel': 'bookmark'}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode_null_field +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode_null_field ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_many +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_many ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_one +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_one ... ok +GOT:Response: 202 Accepted +Openstack-Request-Id: req-03bc0a5e-3262-444b-9324-a24788b645ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e could not be found.\", \"debuginfo\": null}"} -POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_v123 -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_v123 ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_ports_subresource_no_node_id -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_ports_subresource_no_node_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_conductor_group_old_api -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_conductor_group_old_api ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:43.845527+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:43.845527+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:44.339221+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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?instance_uuid=29596131-411f-452f-938f-914036840d9b {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid_invalid_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid_invalid_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_valid_extra -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_valid_extra ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_connectors_subresource -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_connectors_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_with_hyphens_delimiter -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_with_hyphens_delimiter ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_connectors_subresource_no_node_id -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_connectors_subresource_no_node_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid_wrong_uuid -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid_wrong_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_node_uuid_to_node_id_mapping -ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_node_uuid_to_node_id_mapping ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_targets_subresource -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_targets_subresource ... ok -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-2bbdf469-ff4d-4b9f-b5fc-98393ea50096 + +POST: /v1/heartbeat/test.1 {'callback_url': 'url', 'agent_token': 'token'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-b1285728-95b3-4270-ac46-c29f50954cfc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.47 -{"uuid": "de8889ae-76c4-46f3-957f-66fdcfc7bbad", "created_at": "2024-01-06T13:32:42.103754+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", "cpus": "8", "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/de8889ae-76c4-46f3-957f-66fdcfc7bbad", "rel": "self"}, {"href": "http://localhost/nodes/de8889ae-76c4-46f3-957f-66fdcfc7bbad", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/de8889ae-76c4-46f3-957f-66fdcfc7bbad/ports", "rel": "self"}, {"href": "http://localhost/nodes/de8889ae-76c4-46f3-957f-66fdcfc7bbad/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/de8889ae-76c4-46f3-957f-66fdcfc7bbad/states", "rel": "self"}, {"href": "http://localhost/nodes/de8889ae-76c4-46f3-957f-66fdcfc7bbad/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/de8889ae-76c4-46f3-957f-66fdcfc7bbad/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/de8889ae-76c4-46f3-957f-66fdcfc7bbad/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/de8889ae-76c4-46f3-957f-66fdcfc7bbad/volume", "rel": "self"}, {"href": "http://localhost/nodes/de8889ae-76c4-46f3-957f-66fdcfc7bbad/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/210971fb-6181-4d88-b0bc-736c84c49405 [{'path': '/automated_clean', 'value': True, 'op': 'replace'}] -GOT:Response: 406 Not Acceptable -Content-Type: application/json -Openstack-Request-Id: req-6dc048cc-ba8a-447a-b2e3-4b333363ac00 +X-Openstack-Ironic-Api-Version: 1.80 + +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123.json {'callback_url': 'url', 'agent_token': 'maybe some magic'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-241bd3f8-5adf-473b-be2c-29eaf24d4f9a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/ec3759f7-7596-431a-8f91-e7d876d6b9ef [{'path': '/automated_clean', 'value': False, 'op': 'replace'}] -GOT:Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.80 + +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_verify_ca': 'abcd'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-aac5f14f-0d4c-49df-b7c8-f3f4a89eda9c +Openstack-Request-Id: req-5e3191e7-02eb-4a17-bd39-542e7bdbfb8d X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/node-57.1 [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'replace'}] -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.67 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field \\\"agent_verify_ca\\\" not recognised in this version\", \"debuginfo\": null}"} +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_version': '1.4.1'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-5897c926-7a52-4f2d-be94-ff63b4094578 +Openstack-Request-Id: req-a02a5eff-2659-4a1a-9cc8-f77dac7d784b X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/d6663d05-37c5-454b-9016-63cb73425100 [{'path': '/conductor_group', 'value': 'foogroup', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.35 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field \\\"agent_version\\\" not recognised\", \"debuginfo\": null}"} +POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': '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-98ffd3cd-e559-4f6f-a81a-f693cedcf5ff +Openstack-Request-Id: req-b13d266c-b7cf-4014-aba0-4c3cc6ffad86 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.46 -{"uuid": "d6663d05-37c5-454b-9016-63cb73425100", "created_at": "2024-01-06T13:32:44.120179+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", "cpus": "8", "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/d6663d05-37c5-454b-9016-63cb73425100", "rel": "self"}, {"href": "http://localhost/nodes/d6663d05-37c5-454b-9016-63cb73425100", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d6663d05-37c5-454b-9016-63cb73425100/ports", "rel": "self"}, {"href": "http://localhost/nodes/d6663d05-37c5-454b-9016-63cb73425100/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/d6663d05-37c5-454b-9016-63cb73425100/states", "rel": "self"}, {"href": "http://localhost/nodes/d6663d05-37c5-454b-9016-63cb73425100/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/d6663d05-37c5-454b-9016-63cb73425100/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/d6663d05-37c5-454b-9016-63cb73425100/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/d6663d05-37c5-454b-9016-63cb73425100/volume", "rel": "self"}, {"href": "http://localhost/nodes/d6663d05-37c5-454b-9016-63cb73425100/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/dac562f1-c141-4874-a12e-d9aeafffedf0 [{'path': '/conductor_group', 'value': 'foogroup', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.71 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Fields \\\"agent_status\\\" and \\\"agent_status_message\\\" not recognised.\", \"debuginfo\": null}"} +POST: /v1/heartbeat/8dbc9329-7970-46d8-a23d-2f3ce04c4838 {'callback_url': 'url'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-be02afcc-0d79-4116-86f1-0c6d77c4afca +Openstack-Request-Id: req-fc93e76e-4447-4179-b7cd-8e8899d88412 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/a01297ac-4249-48b6-8265-0485c4e9819a [{'path': '/description', 'value': 'meow', 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_description -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_description ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_bad_invalid_agent_status -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_bad_invalid_agent_status ... ok +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=9e84669c-f081-4f3e-9888-c1f2cc7723e5 {} +GOT:{'node': {'uuid': '9e84669c-f081-4f3e-9888-c1f2cc7723e5', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/9e84669c-f081-4f3e-9888-c1f2cc7723e5', 'rel': 'self'}, {'href': 'http://localhost/nodes/9e84669c-f081-4f3e-9888-c1f2cc7723e5', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'abcxyz', 'agent_token_required': True}} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=9e84669c-f081-4f3e-9888-c1f2cc7723e5 {} +GOT:{'node': {'uuid': '9e84669c-f081-4f3e-9888-c1f2cc7723e5', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/9e84669c-f081-4f3e-9888-c1f2cc7723e5', 'rel': 'self'}, {'href': 'http://localhost/nodes/9e84669c-f081-4f3e-9888-c1f2cc7723e5', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'abcxyz', 'agent_token_required': True}} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=9e84669c-f081-4f3e-9888-c1f2cc7723e5 {} +GOT:{'node': {'uuid': '9e84669c-f081-4f3e-9888-c1f2cc7723e5', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/9e84669c-f081-4f3e-9888-c1f2cc7723e5', 'rel': 'self'}, {'href': 'http://localhost/nodes/9e84669c-f081-4f3e-9888-c1f2cc7723e5', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'abcxyz', 'agent_token_required': True}} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 {} +GOT:{'node': {'uuid': '280e68c1-c340-42a0-813e-4ebc90772bb6', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/280e68c1-c340-42a0-813e-4ebc90772bb6', 'rel': 'self'}, {'href': 'http://localhost/nodes/280e68c1-c340-42a0-813e-4ebc90772bb6', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'some-value', 'agent_token_required': True}} +GET: /v1/lookup?node_uuid=9b85ce76-35e6-46db-9ec5-b9710388d24c {} +GOT:{'node': {'uuid': '9b85ce76-35e6-46db-9ec5-b9710388d24c', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/9b85ce76-35e6-46db-9ec5-b9710388d24c', 'rel': 'self'}, {'href': 'http://localhost/nodes/9b85ce76-35e6-46db-9ec5-b9710388d24c', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'xyzabc', 'agent_token_required': True}} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=bb842ab1-29d1-442e-834d-e0db34f7dca0 {} +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_uuid +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_ignore_malformed_address +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_ignore_malformed_address ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:55.777134+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:55.777134+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:55.979979+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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?instance_uuid=3fc1a93d-2646-45f3-afb2-b436dfaf6525 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid_invalid_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid_invalid_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_one_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_one_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok_by_name +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok_by_name ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_no_restrict_lookup +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_no_restrict_lookup ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid_wrong_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid_wrong_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_sort_key +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_sort_key ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_not_found +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_not_found ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_conductor_group_hidden_in_lower_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_conductor_group_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_description_oversize -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_description_oversize ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_async -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_async ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_heartbeat_rejects_different_callback_url -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_heartbeat_rejects_different_callback_url ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_by_name -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_by_name ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_node_not_found -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_node_not_found ... ok -GOT:{'nodes': [{'uuid': 'b2959490-b16c-4a99-80d4-4532c798365e', 'instance_uuid': '29596131-411f-452f-938f-914036840d9b', 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/b2959490-b16c-4a99-80d4-4532c798365e', 'rel': 'self'}, {'href': 'http://localhost/nodes/b2959490-b16c-4a99-80d4-4532c798365e', 'rel': 'bookmark'}]}]} +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_sort_key_invalid +ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_sort_key_invalid ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_nothing_provided +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_nothing_provided ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok_by_name_with_json +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok_by_name_with_json ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_old_api_version +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_old_api_version ... ok +GOT:{'nodes': [{'uuid': '6123eeb4-0df1-4da2-b8d5-6f8e86d6b89c', 'instance_uuid': '3fc1a93d-2646-45f3-afb2-b436dfaf6525', 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/6123eeb4-0df1-4da2-b8d5-6f8e86d6b89c', 'rel': 'self'}, {'href': 'http://localhost/nodes/6123eeb4-0df1-4da2-b8d5-6f8e86d6b89c', 'rel': 'bookmark'}]}]} GET: /v1/nodes?instance_uuid=fake {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-6fc863af-184d-4a6d-a415-161405de2698 +Openstack-Request-Id: req-0b3585c1-a936-4586-a93a-5fdf8d7d81d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes?instance_uuid=d5636bfa-b9a7-4e29-bf13-8454e3fa73f9 {} +GET: /v1/nodes?instance_uuid=20177feb-8fbc-4e95-baeb-4e5705877ff1 {} GOT:{'nodes': []} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:45.815418+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:56.673078+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:45.815418+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:56.673078+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:46.354862+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:56.838652+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_conductor_hidden_in_lower_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_conductor_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_delete -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_delete ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_bad_driver -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_bad_driver ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_get -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_get ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_deploy_step_hidden_in_lower_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_deploy_step_hidden_in_lower_version ... ok -GOT:Response: 201 Created +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_restrict_lookup +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_restrict_lookup ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_001_values +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_001_values ... skipped 'These are fake reference values for YAML templating' +ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_invalid_major_version +ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_invalid_major_version ... ok +ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_ok +ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_ok ... ok +ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_too_high +ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_too_high ... ok +ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_too_low +ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_too_low ... ok +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:56.838652+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:57.030361+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:57.030361+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_description_null_field +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_description_null_field ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_fault_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_fault_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_002_nodes_post_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_002_nodes_post_admin ... ok +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -Openstack-Request-Id: req-0f0e5ff0-44ec-4c0b-a651-67a378d6b981 +Openstack-Request-Id: req-7074da60-3ad4-4bf7-aa9e-68ef0075a739 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} -GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "e08ce5fa-9a0d-4eb7-b3e7-984fa94d3e32", "created_at": "2024-01-06T14:10:55.296320+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", "cpus": "8", "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/e08ce5fa-9a0d-4eb7-b3e7-984fa94d3e32", "rel": "self"}, {"href": "http://localhost/nodes/e08ce5fa-9a0d-4eb7-b3e7-984fa94d3e32", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e08ce5fa-9a0d-4eb7-b3e7-984fa94d3e32/ports", "rel": "self"}, {"href": "http://localhost/nodes/e08ce5fa-9a0d-4eb7-b3e7-984fa94d3e32/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e08ce5fa-9a0d-4eb7-b3e7-984fa94d3e32/states", "rel": "self"}, {"href": "http://localhost/nodes/e08ce5fa-9a0d-4eb7-b3e7-984fa94d3e32/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e08ce5fa-9a0d-4eb7-b3e7-984fa94d3e32/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e08ce5fa-9a0d-4eb7-b3e7-984fa94d3e32/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e08ce5fa-9a0d-4eb7-b3e7-984fa94d3e32/volume", "rel": "self"}, {"href": "http://localhost/nodes/e08ce5fa-9a0d-4eb7-b3e7-984fa94d3e32/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/9d53b06c-9be1-48d2-845a-adde65bad5f2 [{'path': '/network_interface', 'value': 'flat', 'op': 'add'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -Openstack-Request-Id: req-7d5a2f7a-51a2-4293-ac50-a393f844fbb1 +Openstack-Request-Id: req-34d19207-32bc-4b9d-817a-e84c851fc5ed X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:45.179707+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} -GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:32:45.179707+00:00', 'updated_at': None, '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'}}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52-54-00-cf-2d-31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.15 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b87f03be-5fab-46a6-b5c2-c338d0668023 +Openstack-Request-Id: req-e6209ebe-439d-4f4a-adc4-0daa0da6d585 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: 52-54-00-cf-2d-31\", \"debuginfo\": null}"} -POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:55.933958+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/node-57.1 [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -Openstack-Request-Id: req-098877b1-cdf1-40cf-a475-a5451768ff3f +Openstack-Request-Id: req-b03f40c9-7eec-4774-9b3d-62b0c7ab08e7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:32:45.705070+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_status': 'invalid_state', 'agent_status_message': 'woof', 'agent_verify_ca': 'abcdef1'} +X-Openstack-Ironic-Api-Version: 1.5 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:56.300958+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/node-57.1.json [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'replace'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-333966d7-f03b-4dc9-80cd-541ba07aa47b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.5 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:56.636975+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", "cpus": "8", "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"}]} +PATCH: /v1/nodes/0766fabd-c967-44d0-8eb8-b614d2514ec7 [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_forbidden +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_forbidden ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:57.192950+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:57.321428+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:57.321428+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_inspect_wait_state_between_api_versions +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_inspect_wait_state_between_api_versions ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_forbidden_no_project +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_forbidden_no_project ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_interface_fields_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_interface_fields_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_non_admin +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_non_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_allocation +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_allocation ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_non_admin_owner_proj_mismatch +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_non_admin_owner_proj_mismatch ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_003_nodes_post_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_003_nodes_post_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_allocation_owned +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_allocation_owned ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:57.520812+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'inspecting', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:57.520812+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'inspect wait', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:57.709415+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_with_owner +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_with_owner ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_null_field +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_null_field ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_fields +ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_fields ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_links +ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_links ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_old_api +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_old_api ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_no_args +ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_no_args ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_no_base_attributes +ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_no_base_attributes ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:57.856807+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:57.856807+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:58.032043+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_present +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_present ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_network_data +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_network_data ... ok +GOT:{'uuid': 'b35ee8b9-b1b2-49c8-bf3e-6f5a1e9d7f3a', 'created_at': '2024-01-06T14:10:55.776729+00:00', 'updated_at': None, 'boot_index': 0, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/b35ee8b9-b1b2-49c8-bf3e-6f5a1e9d7f3a', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/b35ee8b9-b1b2-49c8-bf3e-6f5a1e9d7f3a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /volume/targets/b35ee8b9-b1b2-49c8-bf3e-6f5a1e9d7f3a {} +GOT:{'uuid': 'b35ee8b9-b1b2-49c8-bf3e-6f5a1e9d7f3a', 'created_at': '2024-01-06T14:10:55.776729+00:00', 'updated_at': None, 'boot_index': 0, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/b35ee8b9-b1b2-49c8-bf3e-6f5a1e9d7f3a', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/b35ee8b9-b1b2-49c8-bf3e-6f5a1e9d7f3a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GET: /v1/volume/targets {} +GOT:{'targets': [{'uuid': 'afa63f8c-2544-432a-9302-7603a37014e9', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/afa63f8c-2544-432a-9302-7603a37014e9', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/afa63f8c-2544-432a-9302-7603a37014e9', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '3e9db71a-0552-4b05-adf7-bf8750adb098', 'boot_index': 1, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/3e9db71a-0552-4b05-adf7-bf8750adb098', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/3e9db71a-0552-4b05-adf7-bf8750adb098', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'b321303c-ebe0-4a18-a933-317cd2495293', 'boot_index': 2, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/b321303c-ebe0-4a18-a933-317cd2495293', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/b321303c-ebe0-4a18-a933-317cd2495293', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '7021c097-1bfd-4e1b-bd1b-29b476a5da19', 'boot_index': 3, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/7021c097-1bfd-4e1b-bd1b-29b476a5da19', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/7021c097-1bfd-4e1b-bd1b-29b476a5da19', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '2f24c3d5-cd06-4697-982d-d60ef52642c2', 'boot_index': 4, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/2f24c3d5-cd06-4697-982d-d60ef52642c2', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/2f24c3d5-cd06-4697-982d-d60ef52642c2', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/volume/targets {} +GOT:{'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'}]} +GET: /v1/volume/targets {} +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/volume/targets?sort_key=uuid {} +GOT:{'targets': [{'uuid': '6602434e-4f3d-45fc-b665-1e4c6ab7259e', 'boot_index': 2, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/6602434e-4f3d-45fc-b665-1e4c6ab7259e', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/6602434e-4f3d-45fc-b665-1e4c6ab7259e', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '8276fbf0-9751-4557-b428-87fd9fb61ed9', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/8276fbf0-9751-4557-b428-87fd9fb61ed9', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/8276fbf0-9751-4557-b428-87fd9fb61ed9', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'ce0059fa-eaa7-471e-b71e-10509068d1da', 'boot_index': 1, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/ce0059fa-eaa7-471e-b71e-10509068d1da', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/ce0059fa-eaa7-471e-b71e-10509068d1da', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/volume/targets?sort_key=foo {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-89347c62-7ec5-48ec-9900-6cdc1b1758f0 +Openstack-Request-Id: req-a98f7629-af2f-4715-b07f-28eff9cca1b9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Agent status is invalid. Valid states are start,end,error.\", \"debuginfo\": null}"} -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url2'} +{"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 {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-83c971da-0d7d-4438-b3dc-de24836fae6f +Openstack-Request-Id: req-afc1d45f-c61d-4a16-974b-99411e5e47b2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Detected change in ramdisk provided \\\"callback_url\\\"\", \"debuginfo\": null}"} -POST: /v1/heartbeat/8cafb23d-17bc-4a18-9cd9-80fb8df6ad71 {'callback_url': 'url'} -GOT:Response: 404 Not Found +{"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 {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c1504d0a-cfd1-4011-a775-58231292530f +Openstack-Request-Id: req-62452be2-cebe-4594-b277-3a1142c8d1f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 8cafb23d-17bc-4a18-9cd9-80fb8df6ad71 could not be found.\", \"debuginfo\": null}"} -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'x'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-e482a1a8-5326-4c96-b4d5-d1c013f79ac1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value properties is an invalid field for sorting\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-b68606c2-c50a-42c9-af75-77da5f6853cb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_status_and_status -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_status_and_status ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_methods -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_methods ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_token -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_token ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-f8e0d9e8-ff5a-4842-9183-69847e3a1cf3 +Openstack-Request-Id: req-b68606c2-c50a-42c9-af75-77da5f6853cb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.51 -{"uuid": "a01297ac-4249-48b6-8265-0485c4e9819a", "created_at": "2024-01-06T13:32:45.215614+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", "cpus": "8", "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/a01297ac-4249-48b6-8265-0485c4e9819a", "rel": "self"}, {"href": "http://localhost/nodes/a01297ac-4249-48b6-8265-0485c4e9819a", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/a01297ac-4249-48b6-8265-0485c4e9819a/ports", "rel": "self"}, {"href": "http://localhost/nodes/a01297ac-4249-48b6-8265-0485c4e9819a/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/a01297ac-4249-48b6-8265-0485c4e9819a/states", "rel": "self"}, {"href": "http://localhost/nodes/a01297ac-4249-48b6-8265-0485c4e9819a/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/a01297ac-4249-48b6-8265-0485c4e9819a/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/a01297ac-4249-48b6-8265-0485c4e9819a/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/a01297ac-4249-48b6-8265-0485c4e9819a/volume", "rel": "self"}, {"href": "http://localhost/nodes/a01297ac-4249-48b6-8265-0485c4e9819a/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/7663abc6-f515-4704-b3fc-d1ae72fa0a48 [{'path': '/description', 'value': '1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678last weed', 'op': 'replace'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-29274008-a9d1-4f57-bf6c-b1f50ab53a55 +Openstack-Request-Id: req-686e4656-0f01-46df-933a-f51576fc769c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/driver', 'value': 'bad-driver', 'op': 'replace'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-77639105-d64c-425e-976d-f6b731fbe653 +Openstack-Request-Id: req-686e4656-0f01-46df-933a-f51576fc769c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Fake Error\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/driver_info/this', 'value': 'foo', 'op': 'add'}, {'path': '/driver_info/that', 'value': 'bar', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_bad_driver_info -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_bad_driver_info ... ok -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:46.354862+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:47.005583+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:47.005583+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_description_null_field -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_description_null_field ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_no_such_method -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_no_such_method ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_fault_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_fault_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_verify_ca -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_verify_ca ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_put -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_put ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:47.556954+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:47.981824+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:47.981824+00:00', 'updated_at': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_inspect_wait_state_between_api_versions -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_inspect_wait_state_between_api_versions ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:43.064213+00:00', 'updated_at': None, 'clean_step': {}, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': 'flat', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'class1', 'target_power_state': None, 'target_provision_state': None, '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'}]} -POST: /v1/nodes {'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', 'cpus': '8', '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 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_004_nodes_post_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_004_nodes_post_observer ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_multi +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_multi ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_005_nodes_get_node_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_005_nodes_get_node_admin ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d2197309-22d1-4731-bdf0-e70468011ff9 +Openstack-Request-Id: req-80708686-0539-4d34-bbfb-a6b50fad697a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.50 +{"uuid": "0766fabd-c967-44d0-8eb8-b614d2514ec7", "created_at": "2024-01-06T14:10:57.099610+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", "cpus": "8", "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/0766fabd-c967-44d0-8eb8-b614d2514ec7", "rel": "self"}, {"href": "http://localhost/nodes/0766fabd-c967-44d0-8eb8-b614d2514ec7", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/0766fabd-c967-44d0-8eb8-b614d2514ec7/ports", "rel": "self"}, {"href": "http://localhost/nodes/0766fabd-c967-44d0-8eb8-b614d2514ec7/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/0766fabd-c967-44d0-8eb8-b614d2514ec7/states", "rel": "self"}, {"href": "http://localhost/nodes/0766fabd-c967-44d0-8eb8-b614d2514ec7/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/0766fabd-c967-44d0-8eb8-b614d2514ec7/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/0766fabd-c967-44d0-8eb8-b614d2514ec7/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/0766fabd-c967-44d0-8eb8-b614d2514ec7/volume", "rel": "self"}, {"href": "http://localhost/nodes/0766fabd-c967-44d0-8eb8-b614d2514ec7/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/492dc644-1fba-4a0f-81a8-dbf27ef37f93 [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a76d699e-ed5d-4a86-a36a-cbfeac37c776 +Openstack-Request-Id: req-af45e506-9393-4241-9cd5-22a4df2da334 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.50 +{"uuid": "492dc644-1fba-4a0f-81a8-dbf27ef37f93", "created_at": "2024-01-06T14:10:57.587338+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", "cpus": "8", "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/492dc644-1fba-4a0f-81a8-dbf27ef37f93", "rel": "self"}, {"href": "http://localhost/nodes/492dc644-1fba-4a0f-81a8-dbf27ef37f93", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/492dc644-1fba-4a0f-81a8-dbf27ef37f93/ports", "rel": "self"}, {"href": "http://localhost/nodes/492dc644-1fba-4a0f-81a8-dbf27ef37f93/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/492dc644-1fba-4a0f-81a8-dbf27ef37f93/states", "rel": "self"}, {"href": "http://localhost/nodes/492dc644-1fba-4a0f-81a8-dbf27ef37f93/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/492dc644-1fba-4a0f-81a8-dbf27ef37f93/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/492dc644-1fba-4a0f-81a8-dbf27ef37f93/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/492dc644-1fba-4a0f-81a8-dbf27ef37f93/volume", "rel": "self"}, {"href": "http://localhost/nodes/492dc644-1fba-4a0f-81a8-dbf27ef37f93/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/1635e46b-adaf-424e-befb-3dff5109caee [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-103a3ed2-455a-4428-af80-041374c29afc +Openstack-Request-Id: req-50f03dfa-e0da-49f0-89e4-5e4a0b9fe610 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/nodes/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {'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 +X-Openstack-Ironic-Api-Version: 1.50 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update owner of node \\\"1635e46b-adaf-424e-befb-3dff5109caee\\\" while it is allocated to an allocation with an owner.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/7171f851-0306-4a3f-8d9d-e221cb958dfe [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-eaeed57d-e7a0-4ad8-8d5e-78050538aa06 +Openstack-Request-Id: req-7e72dd5d-a1a4-4e42-b6a6-52a61d666d1d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} -POST: /v1/nodes/volume/connectors {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +X-Openstack-Ironic-Api-Version: 1.47 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/bb29750c-fe58-4203-9e0e-459554de3951 [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_provisioned +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_provisioned ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:58.196976+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': 'some-lucky-project', 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/b39a8072-f5b0-4177-81b9-235b468ca1c3 {} +GOT:{'uuid': 'b39a8072-f5b0-4177-81b9-235b468ca1c3', 'created_at': '2024-01-06T14:10:58.352078+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, '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.1ad', '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': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/b39a8072-f5b0-4177-81b9-235b468ca1c3', 'rel': 'self'}, {'href': 'http://localhost/nodes/b39a8072-f5b0-4177-81b9-235b468ca1c3', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/b39a8072-f5b0-4177-81b9-235b468ca1c3/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/b39a8072-f5b0-4177-81b9-235b468ca1c3/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/b39a8072-f5b0-4177-81b9-235b468ca1c3/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/b39a8072-f5b0-4177-81b9-235b468ca1c3/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/b39a8072-f5b0-4177-81b9-235b468ca1c3/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/b39a8072-f5b0-4177-81b9-235b468ca1c3/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/b39a8072-f5b0-4177-81b9-235b468ca1c3/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/b39a8072-f5b0-4177-81b9-235b468ca1c3/volume', 'rel': 'bookmark'}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_network_data_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_network_data_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_id +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_id ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_provisioned_forbidden +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_provisioned_forbidden ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_006_nodes_get_node_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_006_nodes_get_node_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_uuid +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_uuid_invalid_type +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_uuid_invalid_type ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_old_api +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_old_api ... ok +GOT:{'node': {'uuid': 'bb842ab1-29d1-442e-834d-e0db34f7dca0', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/bb842ab1-29d1-442e-834d-e0db34f7dca0', 'rel': 'self'}, {'href': 'http://localhost/nodes/bb842ab1-29d1-442e-834d-e0db34f7dca0', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'this_thing_on?', 'agent_token_required': True}} +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 {} +GOT:{'node': {'uuid': '487d3825-9ede-452b-aed1-ba739b958f6d', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/487d3825-9ede-452b-aed1-ba739b958f6d', 'rel': 'self'}, {'href': 'http://localhost/nodes/487d3825-9ede-452b-aed1-ba739b958f6d', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': '123456', 'agent_token_required': True}} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=daf8ca27-caa9-49e1-bc04-c95ee915db9a {} +GOT:{'node': {'uuid': 'daf8ca27-caa9-49e1-bc04-c95ee915db9a', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/daf8ca27-caa9-49e1-bc04-c95ee915db9a', 'rel': 'self'}, {'href': 'http://localhost/nodes/daf8ca27-caa9-49e1-bc04-c95ee915db9a', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': '234567890', 'agent_token_required': True}} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 {} GOT:Response: 404 Not Found Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {'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-f17d39d4-a998-4168-9687-23d739ab5dfb +Openstack-Request-Id: req-4e39ab5a-6e9e-4b57-b55a-b0d73d05afbf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/test {'foo': 'bar'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-19a14f7c-5683-4c8a-94f0-34bcdbbe7c27 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 - -POST: /v1/nodes/node-109/vendor_passthru/test {'foo': 'bar'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-3f0fece9-6afc-4a31-b047-d5a385659fd2 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.5 - -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/do_test -GOT:Response: 202 Accepted -Openstack-Request-Id: req-e3c0ed0f-52ef-40af-8f1a-2842fb9ed2ae -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 - -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/do_test {} -GOT:foo -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} -GOT:{'foo': 'bar'} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} -GOT:{'foo': 'bar'} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/test {'foo': 'bar'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +GET: /v1/lookup {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-e7065194-3058-4af8-b57c-dfad1db0b2da +Openstack-Request-Id: req-e092a5af-d1d3-42c0-8d1e-70f77dc5b711 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/do_test {'test_key': 'test_value'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-a07be78a-391f-4600-b575-df5ff76c3a33 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"At least one of 'addresses' and 'node_uuid' parameters is required\", \"debuginfo\": null}"} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-05e1e551-0dd4-448f-ae7e-21e052416f92 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 - -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/test {'foo': 'bar'} -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_sync -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_sync ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_version -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_without_method -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_without_method ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_by_name -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_by_name ... ok -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_chassis_notification -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_chassis_notification ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_interface_fields_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_interface_fields_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_common_params -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_common_params ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_with_json -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_with_json ... ok -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_emit_maintenance_notification -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_emit_maintenance_notification ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_API_agent_verify_ca_error -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_API_agent_verify_ca_error ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:48.339589+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'inspecting', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:48.339589+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'inspect wait', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:48.879127+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_API_agent_version_error -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_API_agent_version_error ... ok -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=a051694a-df28-43c3-8883-4e1ecb27882a {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-2d23f7b1-2b18-45bb-8257-6bdf4dd3a77b +Openstack-Request-Id: req-b6c64a59-ec2c-4874-8d43-5d62ee1de26f X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/08cefd2f-5c06-49aa-b509-10ae8aa8d6d4 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'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-ad1b5346-dd0d-49e6-b85b-a8a5fedb830c +Openstack-Request-Id: req-6877b46c-3313-46fb-ab60-b8768dfb931a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "08cefd2f-5c06-49aa-b509-10ae8aa8d6d4", "created_at": "2024-01-06T13:32:48.163640+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", "cpus": "8", "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/08cefd2f-5c06-49aa-b509-10ae8aa8d6d4", "rel": "self"}, {"href": "http://localhost/nodes/08cefd2f-5c06-49aa-b509-10ae8aa8d6d4", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/08cefd2f-5c06-49aa-b509-10ae8aa8d6d4/ports", "rel": "self"}, {"href": "http://localhost/nodes/08cefd2f-5c06-49aa-b509-10ae8aa8d6d4/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/4cd09d72-e9c5-474e-a9b5-0e42bb7505f9 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:58.483070+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"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'value': '1', 'op': 'add'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-e97ee942-67e4-44b5-9c0f-32e32f8378b8 +Openstack-Request-Id: req-0f87f8fd-6833-4d28-98c6-adc262015a12 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "4cd09d72-e9c5-474e-a9b5-0e42bb7505f9", "created_at": "2024-01-06T13:32:48.720059+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", "cpus": "8", "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/4cd09d72-e9c5-474e-a9b5-0e42bb7505f9", "rel": "self"}, {"href": "http://localhost/nodes/4cd09d72-e9c5-474e-a9b5-0e42bb7505f9", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/4cd09d72-e9c5-474e-a9b5-0e42bb7505f9/ports", "rel": "self"}, {"href": "http://localhost/nodes/4cd09d72-e9c5-474e-a9b5-0e42bb7505f9/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/60f22c96-6f6f-4fb4-b6f1-5b17d08a29ef [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c62e69c4-939d-4528-a234-85335a857bd3 +Openstack-Request-Id: req-060e1b79-7fe7-49d6-bad8-3c93708357ef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "60f22c96-6f6f-4fb4-b6f1-5b17d08a29ef", "created_at": "2024-01-06T13:32:48.843814+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", "cpus": "8", "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/60f22c96-6f6f-4fb4-b6f1-5b17d08a29ef", "rel": "self"}, {"href": "http://localhost/nodes/60f22c96-6f6f-4fb4-b6f1-5b17d08a29ef", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/60f22c96-6f6f-4fb4-b6f1-5b17d08a29ef/ports", "rel": "self"}, {"href": "http://localhost/nodes/60f22c96-6f6f-4fb4-b6f1-5b17d08a29ef/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/b1ed26ff-2447-4427-b6f9-e143f8dc17f8 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:58.861072+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"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': 123, 'op': 'add'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-ce8a4216-b024-4aac-af2b-881fd8cf3208 +Openstack-Request-Id: req-e3686578-6fb0-4a1f-a21b-f5fc5e300ab8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "b1ed26ff-2447-4427-b6f9-e143f8dc17f8", "created_at": "2024-01-06T13:32:49.020114+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", "cpus": "8", "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/b1ed26ff-2447-4427-b6f9-e143f8dc17f8", "rel": "self"}, {"href": "http://localhost/nodes/b1ed26ff-2447-4427-b6f9-e143f8dc17f8", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/b1ed26ff-2447-4427-b6f9-e143f8dc17f8/ports", "rel": "self"}, {"href": "http://localhost/nodes/b1ed26ff-2447-4427-b6f9-e143f8dc17f8/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/dd0e9723-28ab-48c1-8e72-3bdae2124f2f [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a UUID for node_uuid, but received 123.\", \"debuginfo\": null}"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/boot_index', 'value': 100, 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_root +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_root ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-23043c1c-ea59-4e8d-b3e5-35387238b96a +Openstack-Request-Id: req-ca85e5a9-c2be-443e-a5fc-11ed447455c4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "dd0e9723-28ab-48c1-8e72-3bdae2124f2f", "created_at": "2024-01-06T13:32:49.205622+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", "cpus": "8", "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/dd0e9723-28ab-48c1-8e72-3bdae2124f2f", "rel": "self"}, {"href": "http://localhost/nodes/dd0e9723-28ab-48c1-8e72-3bdae2124f2f", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/dd0e9723-28ab-48c1-8e72-3bdae2124f2f/ports", "rel": "self"}, {"href": "http://localhost/nodes/dd0e9723-28ab-48c1-8e72-3bdae2124f2f/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/5a818fa2-870a-49c7-b24d-f5d07016820d [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_maintenance_notification -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_maintenance_notification ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_null_field -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_null_field ... ok -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_notification -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_notification ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_api_agent_status_error -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_api_agent_status_error ... ok -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_notification_mask_secrets -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_notification_mask_secrets ... ok -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_port_notification -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_port_notification ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_api_version -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_api_version ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:49.470406+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:49.470406+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:49.950781+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_present -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_present ... ok -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_portgroup_notification -ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_portgroup_notification ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_byaddress -ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_byaddress ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_UPDATE_ALLOWED_STATES -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_UPDATE_ALLOWED_STATES ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_network_data -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_network_data ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_no_node -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_no_node ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_byid -ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_byid ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_no_node_policy_notfound -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_no_node_policy_notfound ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_policy_forbidden -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_policy_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_node_locked -ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_node_locked ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:50.329693+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': 'some-lucky-project', 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/e379c6d5-82e3-4e12-a694-e2d88b3cad4b {} -GOT:{'uuid': 'e379c6d5-82e3-4e12-a694-e2d88b3cad4b', 'created_at': '2024-01-06T13:32:50.871614+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, '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.1ad', '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': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/e379c6d5-82e3-4e12-a694-e2d88b3cad4b', 'rel': 'self'}, {'href': 'http://localhost/nodes/e379c6d5-82e3-4e12-a694-e2d88b3cad4b', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/e379c6d5-82e3-4e12-a694-e2d88b3cad4b/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/e379c6d5-82e3-4e12-a694-e2d88b3cad4b/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/e379c6d5-82e3-4e12-a694-e2d88b3cad4b/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/e379c6d5-82e3-4e12-a694-e2d88b3cad4b/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/e379c6d5-82e3-4e12-a694-e2d88b3cad4b/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/e379c6d5-82e3-4e12-a694-e2d88b3cad4b/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/e379c6d5-82e3-4e12-a694-e2d88b3cad4b/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/e379c6d5-82e3-4e12-a694-e2d88b3cad4b/volume', 'rel': 'bookmark'}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_network_data_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_network_data_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_with_suffix -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_with_suffix ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_portgroups_subresource_delete -ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_portgroups_subresource_delete ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy ... ok -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d63152ba-5016-4fd9-b44f-976095fafbf5 +Openstack-Request-Id: req-ca85e5a9-c2be-443e-a5fc-11ed447455c4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "5a818fa2-870a-49c7-b24d-f5d07016820d", "created_at": "2024-01-06T13:32:49.492241+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", "cpus": "8", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "error", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/5a818fa2-870a-49c7-b24d-f5d07016820d", "rel": "self"}, {"href": "http://localhost/nodes/5a818fa2-870a-49c7-b24d-f5d07016820d", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5a818fa2-870a-49c7-b24d-f5d07016820d/ports", "rel": "self"}, {"href": "http://localhost/nodes/5a818fa2-870a-49c7-b24d-f5d07016820d/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/18d3804c-5d4f-4655-a265-277226f66a7f [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8c3289a6-39f6-4c78-bcd7-d7e393ca3dd6 +Openstack-Request-Id: req-290068cf-3639-4dbf-9ca7-833eacda34a8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "18d3804c-5d4f-4655-a265-277226f66a7f", "created_at": "2024-01-06T13:32:49.768384+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", "cpus": "8", "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/18d3804c-5d4f-4655-a265-277226f66a7f", "rel": "self"}, {"href": "http://localhost/nodes/18d3804c-5d4f-4655-a265-277226f66a7f", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/18d3804c-5d4f-4655-a265-277226f66a7f/ports", "rel": "self"}, {"href": "http://localhost/nodes/18d3804c-5d4f-4655-a265-277226f66a7f/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/6e22106f-749c-4708-b508-30e24fcdb1ed [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:58.442770+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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 +{node_ident} +driver +fake-driverz +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-85d4e7d5-585b-42f1-b15d-2f350a5cb13b +Openstack-Request-Id: req-290068cf-3639-4dbf-9ca7-833eacda34a8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "6e22106f-749c-4708-b508-30e24fcdb1ed", "created_at": "2024-01-06T13:32:50.147963+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", "cpus": "8", "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/6e22106f-749c-4708-b508-30e24fcdb1ed", "rel": "self"}, {"href": "http://localhost/nodes/6e22106f-749c-4708-b508-30e24fcdb1ed", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/6e22106f-749c-4708-b508-30e24fcdb1ed/ports", "rel": "self"}, {"href": "http://localhost/nodes/6e22106f-749c-4708-b508-30e24fcdb1ed/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/69425d7b-2652-4d7e-a204-9ad213007250 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:58.442770+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-37628ba2-e326-47ec-8de7-0bfe10d00503 +Openstack-Request-Id: req-936592c0-d268-48ca-9f18-3944179f0ac3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "69425d7b-2652-4d7e-a204-9ad213007250", "created_at": "2024-01-06T13:32:50.404039+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", "cpus": "8", "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/69425d7b-2652-4d7e-a204-9ad213007250", "rel": "self"}, {"href": "http://localhost/nodes/69425d7b-2652-4d7e-a204-9ad213007250", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/69425d7b-2652-4d7e-a204-9ad213007250/ports", "rel": "self"}, {"href": "http://localhost/nodes/69425d7b-2652-4d7e-a204-9ad213007250/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/6c5d9618-8fd4-4171-baae-dee07a4a9298 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bf928dd4-7948-440d-858b-65523fa9d34d +Openstack-Request-Id: req-936592c0-d268-48ca-9f18-3944179f0ac3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "6c5d9618-8fd4-4171-baae-dee07a4a9298", "created_at": "2024-01-06T13:32:50.683617+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", "cpus": "8", "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/6c5d9618-8fd4-4171-baae-dee07a4a9298", "rel": "self"}, {"href": "http://localhost/nodes/6c5d9618-8fd4-4171-baae-dee07a4a9298", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/6c5d9618-8fd4-4171-baae-dee07a4a9298/ports", "rel": "self"}, {"href": "http://localhost/nodes/6c5d9618-8fd4-4171-baae-dee07a4a9298/ports", "rel": "bookmark"}]} -PATCH: /v1/nodes/899e20f6-7667-4bea-a67f-439b382ed352 [{'path': '/instance_uuid', 'op': 'remove'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_inspecting_allowed -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_inspecting_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_allow -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_allow ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_forbidden -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_forbidden ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:51.267665+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:51.267665+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_007_nodes_get_node_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_007_nodes_get_node_observer ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:58.557172+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:51.721356+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:58.557172+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:59.233342+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_owner_hidden_in_lower_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_owner_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_empty -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_empty ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_forbidden_no_project -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_forbidden_no_project ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_non_admin -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_non_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_owner_null_field ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_owner_null_field ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_local_link_connection_none_type -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_local_link_connection_none_type ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_inspecting_not_allowed -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_inspecting_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_allow_node_logical_names_post_name -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_allow_node_logical_names_post_name ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_none -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_none ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_owner_present ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_owner_present ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_allow_node_logical_names_pre_name -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_allow_node_logical_names_pre_name ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_not_allow -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_not_allow ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_by_name_no_logical_name -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_by_name_no_logical_name ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_physnet_allow -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_physnet_allow ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_by_uuid_no_logical_name -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_by_uuid_no_logical_name ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_physnet_not_allow -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_physnet_not_allow ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_expect_name -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_expect_name ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:51.721356+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:52.335467+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:52.677881+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': 'akindofmagic', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/afe690a5-d5c2-48fd-98fb-f8fb94e18d14 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_portgroup_allow -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_portgroup_allow ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_expect_uuid -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_expect_uuid ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5f2170b8-2f44-4d3f-9f90-5398ed779e9a +Openstack-Request-Id: req-144e4353-96f7-4d70-a453-b8ccdb152203 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.38 -{"uuid": "899e20f6-7667-4bea-a67f-439b382ed352", "created_at": "2024-01-06T13:32:51.350594+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", "cpus": "8", "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/899e20f6-7667-4bea-a67f-439b382ed352", "rel": "self"}, {"href": "http://localhost/nodes/899e20f6-7667-4bea-a67f-439b382ed352", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/899e20f6-7667-4bea-a67f-439b382ed352/ports", "rel": "self"}, {"href": "http://localhost/nodes/899e20f6-7667-4bea-a67f-439b382ed352/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/899e20f6-7667-4bea-a67f-439b382ed352/states", "rel": "self"}, {"href": "http://localhost/nodes/899e20f6-7667-4bea-a67f-439b382ed352/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/899e20f6-7667-4bea-a67f-439b382ed352/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/899e20f6-7667-4bea-a67f-439b382ed352/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/899e20f6-7667-4bea-a67f-439b382ed352/volume", "rel": "self"}, {"href": "http://localhost/nodes/899e20f6-7667-4bea-a67f-439b382ed352/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/8c064798-a5a3-4ce2-80ce-cbcf166b8b32 [{'path': '/instance_uuid', 'op': 'remove'}] -GOT:Response: 409 Conflict +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:58.979777+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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 +{node_ident} +driver +fake-driverz +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c69d494f-d952-41be-b635-7ead543cc9f4 +Openstack-Request-Id: req-144e4353-96f7-4d70-a453-b8ccdb152203 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.39 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update node \\\"8c064798-a5a3-4ce2-80ce-cbcf166b8b32\\\" while it is in state \\\"inspecting\\\".\", \"debuginfo\": null}"} -PATCH: /v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919 [{'path': '/boot_interface', 'value': 'fake', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:58.979777+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_008_nodes_get_node_other_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_008_nodes_get_node_other_admin ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_root_non_existent +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_root_non_existent ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c21563f3-833a-4937-873f-fe922a7accd2 +Openstack-Request-Id: req-f3b86992-f8d9-4d69-9297-c81b36e741cc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5561ff6a-8a67-40a0-afb5-2a5ed354c919", "created_at": "2024-01-06T13:32:52.816510+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", "cpus": "8", "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/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919 [{'path': '/console_interface', 'value': 'fake', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_portgroup_not_allow -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_portgroup_not_allow ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_invalid_name -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_invalid_name ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__GetPortsCollection.test__get_ports_collection -ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__GetPortsCollection.test__get_ports_collection ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_is_valid_node_name -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_is_valid_node_name ... ok -GOT:Response: 200 OK +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:59.267790+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a8791bd2-2395-471f-a702-93b8f3df0a13 +Openstack-Request-Id: req-f3b86992-f8d9-4d69-9297-c81b36e741cc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5561ff6a-8a67-40a0-afb5-2a5ed354c919", "created_at": "2024-01-06T13:32:52.816510+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", "cpus": "8", "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/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919 [{'path': '/deploy_interface', 'value': 'fake', 'op': 'add'}] +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:10:59.267790+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-027a0191-8901-4f2b-b6e3-3f1048255ad7 +Openstack-Request-Id: req-ad55aade-dd26-468a-8f3d-db96ba44f4b7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5561ff6a-8a67-40a0-afb5-2a5ed354c919", "created_at": "2024-01-06T13:32:52.816510+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", "cpus": "8", "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/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919 [{'path': '/inspect_interface', 'value': 'fake', 'op': 'add'}] -GOT:{'uuid': 'afe690a5-d5c2-48fd-98fb-f8fb94e18d14', 'created_at': '2024-01-06T13:32:52.988542+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': True, 'protected_reason': None, 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/afe690a5-d5c2-48fd-98fb-f8fb94e18d14', 'rel': 'self'}, {'href': 'http://localhost/nodes/afe690a5-d5c2-48fd-98fb-f8fb94e18d14', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/afe690a5-d5c2-48fd-98fb-f8fb94e18d14/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/afe690a5-d5c2-48fd-98fb-f8fb94e18d14/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/afe690a5-d5c2-48fd-98fb-f8fb94e18d14/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/afe690a5-d5c2-48fd-98fb-f8fb94e18d14/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/afe690a5-d5c2-48fd-98fb-f8fb94e18d14/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/afe690a5-d5c2-48fd-98fb-f8fb94e18d14/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/afe690a5-d5c2-48fd-98fb-f8fb94e18d14/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/afe690a5-d5c2-48fd-98fb-f8fb94e18d14/volume', 'rel': 'bookmark'}]} -GET: /v1/nodes/9b81b3b3-2b9b-4f87-984e-2bd46ad3f55e {} -GOT:{'uuid': '9b81b3b3-2b9b-4f87-984e-2bd46ad3f55e', 'created_at': '2024-01-06T13:32:53.163200+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/9b81b3b3-2b9b-4f87-984e-2bd46ad3f55e', 'rel': 'self'}, {'href': 'http://localhost/nodes/9b81b3b3-2b9b-4f87-984e-2bd46ad3f55e', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/9b81b3b3-2b9b-4f87-984e-2bd46ad3f55e/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/9b81b3b3-2b9b-4f87-984e-2bd46ad3f55e/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/9b81b3b3-2b9b-4f87-984e-2bd46ad3f55e/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/9b81b3b3-2b9b-4f87-984e-2bd46ad3f55e/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/9b81b3b3-2b9b-4f87-984e-2bd46ad3f55e/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/9b81b3b3-2b9b-4f87-984e-2bd46ad3f55e/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/9b81b3b3-2b9b-4f87-984e-2bd46ad3f55e/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/9b81b3b3-2b9b-4f87-984e-2bd46ad3f55e/volume', 'rel': 'bookmark'}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:53.587743+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_populate_node_uuid -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_populate_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_id_with_uuid -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_id_with_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_reason_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_reason_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_id_with_uuid_not_found -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_id_with_uuid_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_fast_deploy_lookup -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_fast_deploy_lookup ... ok +{"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": "5fbe7296-0b25-45af-90d0-aa9234816ee6", "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"}]}]} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_009_nodes_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_009_nodes_get_admin ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-374c3ff5-03a4-4bed-aa11-699dd955223a +Openstack-Request-Id: req-8fd3225b-a58c-4e87-a63d-20c24d32cebf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5561ff6a-8a67-40a0-afb5-2a5ed354c919", "created_at": "2024-01-06T13:32:52.816510+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", "cpus": "8", "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/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919 [{'path': '/management_interface', 'value': 'fake', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.50 +{"uuid": "bb29750c-fe58-4203-9e0e-459554de3951", "created_at": "2024-01-06T14:10:58.283668+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", "cpus": "8", "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/bb29750c-fe58-4203-9e0e-459554de3951", "rel": "self"}, {"href": "http://localhost/nodes/bb29750c-fe58-4203-9e0e-459554de3951", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/bb29750c-fe58-4203-9e0e-459554de3951/ports", "rel": "self"}, {"href": "http://localhost/nodes/bb29750c-fe58-4203-9e0e-459554de3951/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/bb29750c-fe58-4203-9e0e-459554de3951/states", "rel": "self"}, {"href": "http://localhost/nodes/bb29750c-fe58-4203-9e0e-459554de3951/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/bb29750c-fe58-4203-9e0e-459554de3951/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/bb29750c-fe58-4203-9e0e-459554de3951/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/bb29750c-fe58-4203-9e0e-459554de3951/volume", "rel": "self"}, {"href": "http://localhost/nodes/bb29750c-fe58-4203-9e0e-459554de3951/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/7bbae8a0-caae-40ed-ad11-013da723d9d7 [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] +GOT:Response: 409 Conflict +Content-Type: application/json +Openstack-Request-Id: req-618701a3-004d-4c66-82fe-ccc062977e92 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 \\\"7bbae8a0-caae-40ed-ad11-013da723d9d7\\\" while it is in state \\\"active\\\".\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1342da97-1944-4681-aaaa-9d4bb773d004 [{'path': '/protected', 'value': True, 'op': 'replace'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d8bee9e1-3bdd-41ee-9f5b-18f6af9ad2b2 +Openstack-Request-Id: req-0b4ecb80-dd41-48e9-b825-2c8d6de51200 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5561ff6a-8a67-40a0-afb5-2a5ed354c919", "created_at": "2024-01-06T13:32:52.816510+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", "cpus": "8", "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/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919 [{'path': '/power_interface', 'value': 'fake', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_uuid_with_id -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_uuid_with_id ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_uuid_with_id_not_found -ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_uuid_with_id_not_found ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:53.587743+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +X-Openstack-Ironic-Api-Version: 1.48 +{"uuid": "1342da97-1944-4681-aaaa-9d4bb773d004", "created_at": "2024-01-06T14:10:58.927136+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", "cpus": "8", "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/1342da97-1944-4681-aaaa-9d4bb773d004", "rel": "self"}, {"href": "http://localhost/nodes/1342da97-1944-4681-aaaa-9d4bb773d004", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1342da97-1944-4681-aaaa-9d4bb773d004/ports", "rel": "self"}, {"href": "http://localhost/nodes/1342da97-1944-4681-aaaa-9d4bb773d004/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1342da97-1944-4681-aaaa-9d4bb773d004/states", "rel": "self"}, {"href": "http://localhost/nodes/1342da97-1944-4681-aaaa-9d4bb773d004/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1342da97-1944-4681-aaaa-9d4bb773d004/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1342da97-1944-4681-aaaa-9d4bb773d004/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1342da97-1944-4681-aaaa-9d4bb773d004/volume", "rel": "self"}, {"href": "http://localhost/nodes/1342da97-1944-4681-aaaa-9d4bb773d004/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/96ad6de0-ae78-46da-b06e-21ee544636a4 [{'path': '/protected', 'value': True, 'op': 'replace'}] +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-431f64f7-3b4a-4401-857d-0e251b721a3f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PATCH: /v1/nodes/97b8f27c-275d-4e80-9e97-a57d5bad440e [{'path': '/protected_reason', 'value': 'reason!', 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_reason +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_reason ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:59.233342+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:59.411538+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:59.618176+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': 'akindofmagic', 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/df2cd377-cb49-4bac-a92e-eef0955dc55e {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_mandatory_field +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_mandatory_field ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_010_nodes_get_other_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_010_nodes_get_other_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_remove +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_remove ... ok +GOT:{'uuid': 'df2cd377-cb49-4bac-a92e-eef0955dc55e', 'created_at': '2024-01-06T14:10:59.788263+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': True, 'protected_reason': None, 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/df2cd377-cb49-4bac-a92e-eef0955dc55e', 'rel': 'self'}, {'href': 'http://localhost/nodes/df2cd377-cb49-4bac-a92e-eef0955dc55e', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/df2cd377-cb49-4bac-a92e-eef0955dc55e/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/df2cd377-cb49-4bac-a92e-eef0955dc55e/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/df2cd377-cb49-4bac-a92e-eef0955dc55e/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/df2cd377-cb49-4bac-a92e-eef0955dc55e/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/df2cd377-cb49-4bac-a92e-eef0955dc55e/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/df2cd377-cb49-4bac-a92e-eef0955dc55e/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/df2cd377-cb49-4bac-a92e-eef0955dc55e/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/df2cd377-cb49-4bac-a92e-eef0955dc55e/volume', 'rel': 'bookmark'}]} +GET: /v1/nodes/9e982e43-2ca1-4324-8d29-6d7459ae0329 {} +GOT:{'uuid': '9e982e43-2ca1-4324-8d29-6d7459ae0329', 'created_at': '2024-01-06T14:10:59.842174+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/9e982e43-2ca1-4324-8d29-6d7459ae0329', 'rel': 'self'}, {'href': 'http://localhost/nodes/9e982e43-2ca1-4324-8d29-6d7459ae0329', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/9e982e43-2ca1-4324-8d29-6d7459ae0329/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/9e982e43-2ca1-4324-8d29-6d7459ae0329/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/9e982e43-2ca1-4324-8d29-6d7459ae0329/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/9e982e43-2ca1-4324-8d29-6d7459ae0329/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/9e982e43-2ca1-4324-8d29-6d7459ae0329/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/9e982e43-2ca1-4324-8d29-6d7459ae0329/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/9e982e43-2ca1-4324-8d29-6d7459ae0329/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/9e982e43-2ca1-4324-8d29-6d7459ae0329/volume', 'rel': 'bookmark'}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:59.973368+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_reason_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_reason_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_multi +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_multi ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_string +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_string ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:10:59.973368+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:54.169077+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:00.139730+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:54.169077+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:00.139730+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_with_reason ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_with_reason ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_fields -ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_fields ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_node_id +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_node_id ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0d254538-e584-4fb1-91fa-779b861560a6 +Openstack-Request-Id: req-6fbf7a7a-ec3f-422c-adc1-e2c74f568b1a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5561ff6a-8a67-40a0-afb5-2a5ed354c919", "created_at": "2024-01-06T13:32:52.816510+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", "cpus": "8", "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/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919 [{'path': '/raid_interface', 'value': 'fake', 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.48 +{"uuid": "97b8f27c-275d-4e80-9e97-a57d5bad440e", "created_at": "2024-01-06T14:10:59.502958+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", "cpus": "8", "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/97b8f27c-275d-4e80-9e97-a57d5bad440e", "rel": "self"}, {"href": "http://localhost/nodes/97b8f27c-275d-4e80-9e97-a57d5bad440e", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/97b8f27c-275d-4e80-9e97-a57d5bad440e/ports", "rel": "self"}, {"href": "http://localhost/nodes/97b8f27c-275d-4e80-9e97-a57d5bad440e/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/97b8f27c-275d-4e80-9e97-a57d5bad440e/states", "rel": "self"}, {"href": "http://localhost/nodes/97b8f27c-275d-4e80-9e97-a57d5bad440e/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/97b8f27c-275d-4e80-9e97-a57d5bad440e/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/97b8f27c-275d-4e80-9e97-a57d5bad440e/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/97b8f27c-275d-4e80-9e97-a57d5bad440e/volume", "rel": "self"}, {"href": "http://localhost/nodes/97b8f27c-275d-4e80-9e97-a57d5bad440e/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/9b77bf5f-1ac7-4151-9f83-81363b5993ce [{'op': 'remove', 'path': '/protected'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a5ef5bd0-d502-467e-ba4e-eff88e274ef2 +Openstack-Request-Id: req-d22e4d4c-6b05-45ab-85a9-19c11c03df9b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5561ff6a-8a67-40a0-afb5-2a5ed354c919", "created_at": "2024-01-06T13:32:52.816510+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", "cpus": "8", "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/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919 [{'path': '/vendor_interface', 'value': 'fake', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_interface_fields -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_interface_fields ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_addresses -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_addresses ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_links -ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_links ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_no_args -ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_no_args ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_only_uuid -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_only_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_no_base_attributes -ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_no_base_attributes ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_interface_fields_bad_version -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_interface_fields_bad_version ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:54.683973+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': True, 'protected_reason': 'reason!', 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/39dcb2d2-2496-456f-a51d-038fd228c375 {} -GOT:{'uuid': '39dcb2d2-2496-456f-a51d-038fd228c375', 'created_at': '2024-01-06T13:32:55.034427+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': True, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/39dcb2d2-2496-456f-a51d-038fd228c375', 'rel': 'self'}, {'href': 'http://localhost/nodes/39dcb2d2-2496-456f-a51d-038fd228c375', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/39dcb2d2-2496-456f-a51d-038fd228c375/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/39dcb2d2-2496-456f-a51d-038fd228c375/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/39dcb2d2-2496-456f-a51d-038fd228c375/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/39dcb2d2-2496-456f-a51d-038fd228c375/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/39dcb2d2-2496-456f-a51d-038fd228c375/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/39dcb2d2-2496-456f-a51d-038fd228c375/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/39dcb2d2-2496-456f-a51d-038fd228c375/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/39dcb2d2-2496-456f-a51d-038fd228c375/volume', 'rel': 'bookmark'}]} -GET: /v1/nodes/f234f2d1-d717-44c8-8857-3b696f79b789 {} -GOT:{'uuid': 'f234f2d1-d717-44c8-8857-3b696f79b789', 'created_at': '2024-01-06T13:32:55.286954+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/f234f2d1-d717-44c8-8857-3b696f79b789', 'rel': 'self'}, {'href': 'http://localhost/nodes/f234f2d1-d717-44c8-8857-3b696f79b789', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/f234f2d1-d717-44c8-8857-3b696f79b789/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/f234f2d1-d717-44c8-8857-3b696f79b789/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/f234f2d1-d717-44c8-8857-3b696f79b789/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/f234f2d1-d717-44c8-8857-3b696f79b789/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/f234f2d1-d717-44c8-8857-3b696f79b789/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/f234f2d1-d717-44c8-8857-3b696f79b789/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/f234f2d1-d717-44c8-8857-3b696f79b789/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/f234f2d1-d717-44c8-8857-3b696f79b789/volume', 'rel': 'bookmark'}]} +X-Openstack-Ironic-Api-Version: 1.48 +{"uuid": "9b77bf5f-1ac7-4151-9f83-81363b5993ce", "created_at": "2024-01-06T14:10:59.957506+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", "cpus": "8", "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/9b77bf5f-1ac7-4151-9f83-81363b5993ce", "rel": "self"}, {"href": "http://localhost/nodes/9b77bf5f-1ac7-4151-9f83-81363b5993ce", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/9b77bf5f-1ac7-4151-9f83-81363b5993ce/ports", "rel": "self"}, {"href": "http://localhost/nodes/9b77bf5f-1ac7-4151-9f83-81363b5993ce/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/9b77bf5f-1ac7-4151-9f83-81363b5993ce/states", "rel": "self"}, {"href": "http://localhost/nodes/9b77bf5f-1ac7-4151-9f83-81363b5993ce/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/9b77bf5f-1ac7-4151-9f83-81363b5993ce/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/9b77bf5f-1ac7-4151-9f83-81363b5993ce/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/9b77bf5f-1ac7-4151-9f83-81363b5993ce/volume", "rel": "self"}, {"href": "http://localhost/nodes/9b77bf5f-1ac7-4151-9f83-81363b5993ce/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/eebc4fba-4fee-464a-9518-80a99ee23b7d [{'path': '/protected', 'value': 'True', 'op': 'replace'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-cfc5e1d5-a307-4ff4-9f66-fdf5a7f0caae +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.48 +{"uuid": "eebc4fba-4fee-464a-9518-80a99ee23b7d", "created_at": "2024-01-06T14:11:00.290225+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", "cpus": "8", "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/eebc4fba-4fee-464a-9518-80a99ee23b7d", "rel": "self"}, {"href": "http://localhost/nodes/eebc4fba-4fee-464a-9518-80a99ee23b7d", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/eebc4fba-4fee-464a-9518-80a99ee23b7d/ports", "rel": "self"}, {"href": "http://localhost/nodes/eebc4fba-4fee-464a-9518-80a99ee23b7d/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/eebc4fba-4fee-464a-9518-80a99ee23b7d/states", "rel": "self"}, {"href": "http://localhost/nodes/eebc4fba-4fee-464a-9518-80a99ee23b7d/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/eebc4fba-4fee-464a-9518-80a99ee23b7d/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/eebc4fba-4fee-464a-9518-80a99ee23b7d/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/eebc4fba-4fee-464a-9518-80a99ee23b7d/volume", "rel": "self"}, {"href": "http://localhost/nodes/eebc4fba-4fee-464a-9518-80a99ee23b7d/volume", "rel": "bookmark"}]} +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_string_invalid +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_string_invalid ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:00.336160+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': True, 'protected_reason': 'reason!', 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/7b2447db-28f4-4aa1-89d5-649ff5bb3704 {} +GOT:{'uuid': '7b2447db-28f4-4aa1-89d5-649ff5bb3704', 'created_at': '2024-01-06T14:11:00.479997+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': True, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/7b2447db-28f4-4aa1-89d5-649ff5bb3704', 'rel': 'self'}, {'href': 'http://localhost/nodes/7b2447db-28f4-4aa1-89d5-649ff5bb3704', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/7b2447db-28f4-4aa1-89d5-649ff5bb3704/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/7b2447db-28f4-4aa1-89d5-649ff5bb3704/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/7b2447db-28f4-4aa1-89d5-649ff5bb3704/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/7b2447db-28f4-4aa1-89d5-649ff5bb3704/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/7b2447db-28f4-4aa1-89d5-649ff5bb3704/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/7b2447db-28f4-4aa1-89d5-649ff5bb3704/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/7b2447db-28f4-4aa1-89d5-649ff5bb3704/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/7b2447db-28f4-4aa1-89d5-649ff5bb3704/volume', 'rel': 'bookmark'}]} +GET: /v1/nodes/50a76784-c433-4b9e-919c-f95288c856c7 {} +GOT:{'uuid': '50a76784-c433-4b9e-919c-f95288c856c7', 'created_at': '2024-01-06T14:11:00.553650+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/50a76784-c433-4b9e-919c-f95288c856c7', 'rel': 'self'}, {'href': 'http://localhost/nodes/50a76784-c433-4b9e-919c-f95288c856c7', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/50a76784-c433-4b9e-919c-f95288c856c7/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/50a76784-c433-4b9e-919c-f95288c856c7/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/50a76784-c433-4b9e-919c-f95288c856c7/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/50a76784-c433-4b9e-919c-f95288c856c7/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/50a76784-c433-4b9e-919c-f95288c856c7/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/50a76784-c433-4b9e-919c-f95288c856c7/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/50a76784-c433-4b9e-919c-f95288c856c7/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/50a76784-c433-4b9e-919c-f95288c856c7/volume', 'rel': 'bookmark'}]} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_hidden_in_lower_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_byid -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_byid ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_uuid -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_byid_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_byid_invalid_api_version ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:55.705158+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_non_existent_property_fail +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_non_existent_property_fail ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_uuid +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_with_reason +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_with_reason ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_boot_index_already_exist +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_boot_index_already_exist ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:00.675440+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:55.705158+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:00.675440+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:56.191569+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:00.862257+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_reason_hidden_in_lower_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_reason_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_with_reason +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_with_reason ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_invalid_power_state +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_invalid_power_state ... ok +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-ad55aade-dd26-468a-8f3d-db96ba44f4b7 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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": "5fbe7296-0b25-45af-90d0-aa9234816ee6", "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"}]}]} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e44b8c4e-afb7-431e-8a27-1e3f358baec4 +Openstack-Request-Id: req-703fefd1-1082-4da7-9961-f0cf108bf850 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"cat": "meow"} -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru {'foo': 'bar'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"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": "d2e0ba26-68d2-40d5-a81b-c386f7d9c42f", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-bef610c7-f9ef-4868-b5ac-fba5b6c1e6fa +Openstack-Request-Id: req-703fefd1-1082-4da7-9961-f0cf108bf850 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/ports/52:54:00:cf:2d:31 -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"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": "d2e0ba26-68d2-40d5-a81b-c386f7d9c42f", "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"}]}]} +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-72717814-bb6d-4a66-bf87-4005d5c943c5 +Openstack-Request-Id: req-97480d7d-3e47-4086-8bf2-7f41325fd17c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 204 No Content -Openstack-Request-Id: req-63fb8258-a315-4ae6-b80f-eb9c152dab18 +X-Openstack-Ironic-Api-Version: 1.80 +{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:00.740058+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T14:11:00.749715+00:00", "updated_at": "2024-01-06T14:11:00.764070+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "6062621e-429d-45a8-8ed2-fa902e65a652", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "6062621e-429d-45a8-8ed2-fa902e65a652", "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": "2024-01-06T14:11:00.816331+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", "cpus": "8", "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/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"}]}]} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-97480d7d-3e47-4086-8bf2-7f41325fd17c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:00.740058+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T14:11:00.749715+00:00", "updated_at": "2024-01-06T14:11:00.764070+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "6062621e-429d-45a8-8ed2-fa902e65a652", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "6062621e-429d-45a8-8ed2-fa902e65a652", "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": "2024-01-06T14:11:00.816331+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", "cpus": "8", "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/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"}]}]}ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_011_nodes_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_011_nodes_detail_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_012_nodes_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_012_nodes_detail_get_member ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:00.862257+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:01.049587+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': True, 'retired_reason': 'warranty expired', 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/a0df9071-2007-4d55-a068-9cbaadaa9a27 {} +GOT:{'uuid': 'a0df9071-2007-4d55-a068-9cbaadaa9a27', 'created_at': '2024-01-06T14:11:01.184784+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': 'uefi', 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': True, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/a0df9071-2007-4d55-a068-9cbaadaa9a27', 'rel': 'self'}, {'href': 'http://localhost/nodes/a0df9071-2007-4d55-a068-9cbaadaa9a27', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/a0df9071-2007-4d55-a068-9cbaadaa9a27/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/a0df9071-2007-4d55-a068-9cbaadaa9a27/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/a0df9071-2007-4d55-a068-9cbaadaa9a27/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/a0df9071-2007-4d55-a068-9cbaadaa9a27/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/a0df9071-2007-4d55-a068-9cbaadaa9a27/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/a0df9071-2007-4d55-a068-9cbaadaa9a27/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/a0df9071-2007-4d55-a068-9cbaadaa9a27/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/a0df9071-2007-4d55-a068-9cbaadaa9a27/volume', 'rel': 'bookmark'}]} +GET: /v1/nodes/5f43cd89-ab64-41d5-90f0-c8754b1be189 {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_secure_boot +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_secure_boot ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_secure_boot_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_secure_boot_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_multi +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_multi ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_id +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_id ... ok +GOT:{'uuid': '5f43cd89-ab64-41d5-90f0-c8754b1be189', 'created_at': '2024-01-06T14:11:01.236164+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': 'uefi', 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': False, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/5f43cd89-ab64-41d5-90f0-c8754b1be189', 'rel': 'self'}, {'href': 'http://localhost/nodes/5f43cd89-ab64-41d5-90f0-c8754b1be189', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/5f43cd89-ab64-41d5-90f0-c8754b1be189/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/5f43cd89-ab64-41d5-90f0-c8754b1be189/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/5f43cd89-ab64-41d5-90f0-c8754b1be189/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/5f43cd89-ab64-41d5-90f0-c8754b1be189/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/5f43cd89-ab64-41d5-90f0-c8754b1be189/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/5f43cd89-ab64-41d5-90f0-c8754b1be189/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/5f43cd89-ab64-41d5-90f0-c8754b1be189/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/5f43cd89-ab64-41d5-90f0-c8754b1be189/volume', 'rel': 'bookmark'}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:01.425705+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:01.425705+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/states {} +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_boot_mode +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_boot_mode ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_boot_mode_hidden_in_lower_version +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_boot_mode_hidden_in_lower_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_max_length +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_max_length ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_by_name +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_by_name ... ok -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 409 Conflict +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-df69b4e8-e08d-4457-bebf-010d1f8322b0 +Openstack-Request-Id: req-32d901bf-19ea-4676-a3b1-84d4045310b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/09582bd9-d980-424f-b259-27be405240a1 -GOT:Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d498ad96-f721-4f18-9e31-32fd1e6abeeb +Openstack-Request-Id: req-32d901bf-19ea-4676-a3b1-84d4045310b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=93cb4f9c-39b2-43f1-9d20-b6d520aa6d73 {} -GOT:{'node': {'uuid': '93cb4f9c-39b2-43f1-9d20-b6d520aa6d73', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/93cb4f9c-39b2-43f1-9d20-b6d520aa6d73', 'rel': 'self'}, {'href': 'http://localhost/nodes/93cb4f9c-39b2-43f1-9d20-b6d520aa6d73', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'abcxyz', 'agent_token_required': True}} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=93cb4f9c-39b2-43f1-9d20-b6d520aa6d73 {} -GOT:{'node': {'uuid': '93cb4f9c-39b2-43f1-9d20-b6d520aa6d73', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/93cb4f9c-39b2-43f1-9d20-b6d520aa6d73', 'rel': 'self'}, {'href': 'http://localhost/nodes/93cb4f9c-39b2-43f1-9d20-b6d520aa6d73', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'abcxyz', 'agent_token_required': True}} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=93cb4f9c-39b2-43f1-9d20-b6d520aa6d73 {} -GOT:{'node': {'uuid': '93cb4f9c-39b2-43f1-9d20-b6d520aa6d73', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/93cb4f9c-39b2-43f1-9d20-b6d520aa6d73', 'rel': 'self'}, {'href': 'http://localhost/nodes/93cb4f9c-39b2-43f1-9d20-b6d520aa6d73', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'abcxyz', 'agent_token_required': True}} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 {} -GOT:{'node': {'uuid': '0007c5f2-45a1-4f74-9de1-63dd1d461751', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/0007c5f2-45a1-4f74-9de1-63dd1d461751', 'rel': 'self'}, {'href': 'http://localhost/nodes/0007c5f2-45a1-4f74-9de1-63dd1d461751', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'some-value', 'agent_token_required': True}} -GET: /v1/lookup?node_uuid=5d57809f-e416-46d9-a42a-6849f48e95d7 {} -GOT:{'node': {'uuid': '5d57809f-e416-46d9-a42a-6849f48e95d7', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/5d57809f-e416-46d9-a42a-6849f48e95d7', 'rel': 'self'}, {'href': 'http://localhost/nodes/5d57809f-e416-46d9-a42a-6849f48e95d7', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'xyzabc', 'agent_token_required': True}} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=1cc297b5-fbe3-4a94-84d7-8a9f0724eeb0 {} -GOT:{'node': {'uuid': '1cc297b5-fbe3-4a94-84d7-8a9f0724eeb0', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/1cc297b5-fbe3-4a94-84d7-8a9f0724eeb0', 'rel': 'self'}, {'href': 'http://localhost/nodes/1cc297b5-fbe3-4a94-84d7-8a9f0724eeb0', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'this_thing_on?', 'agent_token_required': True}} -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 {} -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_ignore_malformed_address -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_ignore_malformed_address ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_invalid_power_state -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_invalid_power_state ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_with_reason -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_with_reason ... ok +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-273f580f-9ea8-4c77-9e2d-af84566ecdda +Openstack-Request-Id: req-156f0290-6dd9-41bd-872d-07dc7d72f076 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5561ff6a-8a67-40a0-afb5-2a5ed354c919", "created_at": "2024-01-06T13:32:52.816510+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", "cpus": "8", "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/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "self"}, {"href": "http://localhost/nodes/5561ff6a-8a67-40a0-afb5-2a5ed354c919/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/d6721691-c767-4835-ab41-c503cf926c23 [{'path': '/boot_interface', 'value': 'fake', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:01.503866+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T14:11:01.525302+00:00", "updated_at": "2024-01-06T14:11:01.551001+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "0ee674f9-4997-4198-8901-79f22230a661", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "0ee674f9-4997-4198-8901-79f22230a661", "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": "2024-01-06T14:11:01.602056+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", "cpus": "8", "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/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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-bf069abf-da5d-4483-bb2a-b3dadba4b94b +Openstack-Request-Id: req-156f0290-6dd9-41bd-872d-07dc7d72f076 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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/d6721691-c767-4835-ab41-c503cf926c23 [{'path': '/console_interface', 'value': 'fake', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:01.503866+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T14:11:01.525302+00:00", "updated_at": "2024-01-06T14:11:01.551001+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "0ee674f9-4997-4198-8901-79f22230a661", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "0ee674f9-4997-4198-8901-79f22230a661", "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": "2024-01-06T14:11:01.602056+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", "cpus": "8", "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/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"}]}]}ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_013_nodes_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_013_nodes_detail_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_014_nodes_node_ident_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_014_nodes_node_ident_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_015_nodes_node_ident_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_015_nodes_node_ident_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_old_api +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_old_api ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f5160db4-9b6a-4532-81ae-fa358fa9e17a +Openstack-Request-Id: req-a39216e2-9ce2-416d-a557-57062608d071 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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/d6721691-c767-4835-ab41-c503cf926c23 [{'path': '/deploy_interface', 'value': 'fake', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:10:59.157589+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"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-154af563-dd21-40eb-b68d-0f7d849af098 +Openstack-Request-Id: req-87dc4c09-0b74-4a74-acdb-8bc349cde449 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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/d6721691-c767-4835-ab41-c503cf926c23 [{'path': '/inspect_interface', 'value': 'fake', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/boot_index', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-e71be7fa-c1ac-446c-8a69-8c8a6b0e9ce9 +Openstack-Request-Id: req-4b515bf5-382f-462a-8cb3-8dfd363ee92e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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/d6721691-c767-4835-ab41-c503cf926c23 [{'path': '/management_interface', 'value': 'fake', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'boot_index' is a required property\", \"debuginfo\": null}"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo1', 'op': 'remove'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0c73319f-4f8f-408e-ae2d-bd48922427f0 +Openstack-Request-Id: req-f471029e-0ddf-41a8-bb6f-b8660a098ca9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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/d6721691-c767-4835-ab41-c503cf926c23 [{'path': '/power_interface', 'value': 'fake', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:00.269649+00:00", "updated_at": "2024-01-06T14:11:00.281466+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 [{'path': '/extra', 'op': 'remove'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5ab16ae6-4f5f-4e65-b35b-b054ee8e5f4d +Openstack-Request-Id: req-7ee43fd5-9a84-4499-9498-6b8df55a9e8e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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/d6721691-c767-4835-ab41-c503cf926c23 [{'path': '/raid_interface', 'value': 'fake', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:00.269649+00:00", "updated_at": "2024-01-06T14:11:00.281466+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"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b8c33683-cff8-4cff-8434-9dcb9dd2a09b +Openstack-Request-Id: req-52ffaa67-54a4-42f9-b107-736c03a729af X-Openstack-Ironic-Api-Maximum-Version: 1.80 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/d6721691-c767-4835-ab41-c503cf926c23 [{'path': '/vendor_interface', 'value': 'fake', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/non-existent', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-09577b3d-c296-4c15-99cb-1442a2855129 +Openstack-Request-Id: req-f1a30afc-1b65-4469-bc44-682135502f0d X-Openstack-Ironic-Api-Maximum-Version: 1.80 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/17504ef5-0d62-47f0-a560-c8a7801ccbff [{'path': '/lessee', 'value': 'new-project', 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_lessee -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_lessee ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_no_restrict_lookup -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_no_restrict_lookup ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_node_locked -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_node_locked ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:56.191569+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:56.570408+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'active', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': True, 'retired_reason': 'warranty expired', 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/8a987f54-630c-41dd-835e-7de2fd0d88a1 {} -GOT:{'uuid': '8a987f54-630c-41dd-835e-7de2fd0d88a1', 'created_at': '2024-01-06T13:32:57.109387+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': 'uefi', 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': True, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/8a987f54-630c-41dd-835e-7de2fd0d88a1', 'rel': 'self'}, {'href': 'http://localhost/nodes/8a987f54-630c-41dd-835e-7de2fd0d88a1', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/8a987f54-630c-41dd-835e-7de2fd0d88a1/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/8a987f54-630c-41dd-835e-7de2fd0d88a1/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/8a987f54-630c-41dd-835e-7de2fd0d88a1/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/8a987f54-630c-41dd-835e-7de2fd0d88a1/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/8a987f54-630c-41dd-835e-7de2fd0d88a1/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/8a987f54-630c-41dd-835e-7de2fd0d88a1/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/8a987f54-630c-41dd-835e-7de2fd0d88a1/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/8a987f54-630c-41dd-835e-7de2fd0d88a1/volume', 'rel': 'bookmark'}]} -GET: /v1/nodes/c4425676-78c6-423a-80ea-dbf81e2a58ba {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_secure_boot -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_secure_boot ... ok -ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_after_add_request_id -ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_after_add_request_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_lessee_old_api -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_lessee_old_api ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_not_found -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_not_found ... ok -ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_after_miss_context -ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_after_miss_context ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_secure_boot_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_secure_boot_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_nothing_provided -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_nothing_provided ... ok -ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_auth_token_info -ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_auth_token_info ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_old_api_version -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_old_api_version ... ok -GOT:{'uuid': 'c4425676-78c6-423a-80ea-dbf81e2a58ba', 'created_at': '2024-01-06T13:32:57.212312+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': 'uefi', 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': False, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, 'links': [{'href': 'http://localhost/v1/nodes/c4425676-78c6-423a-80ea-dbf81e2a58ba', 'rel': 'self'}, {'href': 'http://localhost/nodes/c4425676-78c6-423a-80ea-dbf81e2a58ba', 'rel': 'bookmark'}], 'conductor': 'fake.conductor', 'allocation_uuid': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/c4425676-78c6-423a-80ea-dbf81e2a58ba/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/c4425676-78c6-423a-80ea-dbf81e2a58ba/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/c4425676-78c6-423a-80ea-dbf81e2a58ba/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/c4425676-78c6-423a-80ea-dbf81e2a58ba/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/c4425676-78c6-423a-80ea-dbf81e2a58ba/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/c4425676-78c6-423a-80ea-dbf81e2a58ba/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/c4425676-78c6-423a-80ea-dbf81e2a58ba/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/c4425676-78c6-423a-80ea-dbf81e2a58ba/volume', 'rel': 'bookmark'}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:57.570510+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:32:57.570510+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': None, 'boot_interface': None, 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_data': {}, 'network_interface': None, 'owner': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'rescue_interface': None, 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/states {} -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states ... ok -ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_noauth_token_removed -ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_noauth_token_removed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_boot_mode -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_boot_mode ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_restrict_lookup -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_restrict_lookup ... ok -ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_not_admin -ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_not_admin ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_alloc_policy_and_retrieve_no_alloc_policy_not_found -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_alloc_policy_and_retrieve_no_alloc_policy_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_allocation_policy_and_retrieve_no_allocation -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_allocation_policy_and_retrieve_no_allocation ... ok -ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_public_api -ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_public_api ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_allocation_policy_and_retrieve_policy_not_found -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_allocation_policy_and_retrieve_policy_not_found ... ok -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove a non-existent object 'non-existent'\", \"debuginfo\": null}"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/uuid', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-93456c06-bd48-49b1-bb91-fe6e5af94321 +Openstack-Request-Id: req-4b34d33b-d043-4b71-99bb-55388eccd400 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.65 -{"uuid": "17504ef5-0d62-47f0-a560-c8a7801ccbff", "created_at": "2024-01-06T13:32:56.247646+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", "cpus": "8", "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/17504ef5-0d62-47f0-a560-c8a7801ccbff", "rel": "self"}, {"href": "http://localhost/nodes/17504ef5-0d62-47f0-a560-c8a7801ccbff", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/17504ef5-0d62-47f0-a560-c8a7801ccbff/ports", "rel": "self"}, {"href": "http://localhost/nodes/17504ef5-0d62-47f0-a560-c8a7801ccbff/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/17504ef5-0d62-47f0-a560-c8a7801ccbff/states", "rel": "self"}, {"href": "http://localhost/nodes/17504ef5-0d62-47f0-a560-c8a7801ccbff/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/17504ef5-0d62-47f0-a560-c8a7801ccbff/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/17504ef5-0d62-47f0-a560-c8a7801ccbff/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/17504ef5-0d62-47f0-a560-c8a7801ccbff/volume", "rel": "self"}, {"href": "http://localhost/nodes/17504ef5-0d62-47f0-a560-c8a7801ccbff/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/4246ddc5-f083-49c0-ab7f-793da43843aa [{'path': '/lessee', 'value': 'new-project', 'op': 'replace'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/boot_index', 'value': 100, 'op': 'replace'}] +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-dbc7c087-9d9a-4197-a064-4d44be8ee1e1 +Openstack-Request-Id: req-e4931544-dca7-44f7-90c3-d8ee0ce745fa X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/caba1519-188f-4a6e-b8a3-e4875a6cd40b [{'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.1ad', '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'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A volume target with boot index '100' for the same node already exists.\", \"debuginfo\": null}"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/boot_index', 'value': 0, 'op': 'replace'}] +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-ac585b4c-4e24-427e-9083-f5845e843dfe +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'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-a51610ab-7809-4364-9225-c4379d6ddb2e +Openstack-Request-Id: req-699c44a7-c70c-44b0-8687-454aa5272f4f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.66 -{"uuid": "caba1519-188f-4a6e-b8a3-e4875a6cd40b", "created_at": "2024-01-06T13:32:57.837081+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", "cpus": "8", "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/caba1519-188f-4a6e-b8a3-e4875a6cd40b", "rel": "self"}, {"href": "http://localhost/nodes/caba1519-188f-4a6e-b8a3-e4875a6cd40b", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/caba1519-188f-4a6e-b8a3-e4875a6cd40b/ports", "rel": "self"}, {"href": "http://localhost/nodes/caba1519-188f-4a6e-b8a3-e4875a6cd40b/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/caba1519-188f-4a6e-b8a3-e4875a6cd40b/states", "rel": "self"}, {"href": "http://localhost/nodes/caba1519-188f-4a6e-b8a3-e4875a6cd40b/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/caba1519-188f-4a6e-b8a3-e4875a6cd40b/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/caba1519-188f-4a6e-b8a3-e4875a6cd40b/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/caba1519-188f-4a6e-b8a3-e4875a6cd40b/volume", "rel": "self"}, {"href": "http://localhost/nodes/caba1519-188f-4a6e-b8a3-e4875a6cd40b/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/63fc1c07-dc2a-4bd8-b9d7-5ee57a36c8fd [{'path': '/network_data', 'value': {'cat': 'meow'}, 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_custom -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_custom ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_node_policy_and_retrieve -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_node_policy_and_retrieve ... ok -ironic.tests.unit.api.test_proxy_middleware.TestProxyHeadersMiddleware.test_proxy_headers_disabled -ironic.tests.unit.api.test_proxy_middleware.TestProxyHeadersMiddleware.test_proxy_headers_disabled ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_old_api -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_old_api ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_agent_token -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_agent_token ... ok -ironic.tests.unit.api.test_proxy_middleware.TestProxyHeadersMiddleware.test_proxy_headers_enabled -ironic.tests.unit.api.test_proxy_middleware.TestProxyHeadersMiddleware.test_proxy_headers_enabled ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_configdrive_vendor_data -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_configdrive_vendor_data ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_boot_mode_hidden_in_lower_version -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_boot_mode_hidden_in_lower_version ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_deploy_steps -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_deploy_steps ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_wrong_format -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_wrong_format ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2 -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2 ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_deploy_templates -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_deploy_templates ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_by_name -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_by_name ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_done -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_done ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_dynamic_drivers -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_dynamic_drivers ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_inject_nmi -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_inject_nmi ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_notdone -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_notdone ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_inspect_abort -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_inspect_abort ... ok +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:01.510649+00:00", "updated_at": "2024-01-06T14:11:01.521568+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"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'value': '1', 'op': 'replace'}] +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-80b9e66f-7bc8-426b-a684-0fe6ca188120 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_uuid +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_uuid_inalid_type +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_uuid_inalid_type ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_non_existent_node_uuid +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_non_existent_node_uuid ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_field_hidden_in_lower_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_field_hidden_in_lower_version ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_onedone -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_onedone ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_links_node_states_and_driver_properties -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_links_node_states_and_driver_properties ... ok -Error while running foo: bar. +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_singular +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_singular ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_raid +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_raid ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_byid +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_byid ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_byid_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_byid_invalid_api_version ... ok + +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f6fe82b3-982f-4049-9901-277907b3a546 +Openstack-Request-Id: req-8f931706-4330-4396-9aa1-ecfcbd2fa009 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.66 -{"uuid": "63fc1c07-dc2a-4bd8-b9d7-5ee57a36c8fd", "created_at": "2024-01-06T13:32:58.648319+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", "cpus": "8", "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/63fc1c07-dc2a-4bd8-b9d7-5ee57a36c8fd", "rel": "self"}, {"href": "http://localhost/nodes/63fc1c07-dc2a-4bd8-b9d7-5ee57a36c8fd", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/63fc1c07-dc2a-4bd8-b9d7-5ee57a36c8fd/ports", "rel": "self"}, {"href": "http://localhost/nodes/63fc1c07-dc2a-4bd8-b9d7-5ee57a36c8fd/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/63fc1c07-dc2a-4bd8-b9d7-5ee57a36c8fd/states", "rel": "self"}, {"href": "http://localhost/nodes/63fc1c07-dc2a-4bd8-b9d7-5ee57a36c8fd/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/63fc1c07-dc2a-4bd8-b9d7-5ee57a36c8fd/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/63fc1c07-dc2a-4bd8-b9d7-5ee57a36c8fd/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/63fc1c07-dc2a-4bd8-b9d7-5ee57a36c8fd/volume", "rel": "self"}, {"href": "http://localhost/nodes/63fc1c07-dc2a-4bd8-b9d7-5ee57a36c8fd/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/2ef9a5d2-0964-44b8-ae9b-2981e84f2e35 [{'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.1ad', '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 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:01.807197+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f07ffb18-e84b-4e2d-9833-0e09b97a2326 +Openstack-Request-Id: req-8f931706-4330-4396-9aa1-ecfcbd2fa009 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/282e3553-60bc-4be0-865d-8d0a36d96053 [{'path': '/network_data', 'value': {'cat': 'meow'}, 'op': 'replace'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:01.807197+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9e2604dd-c068-4265-a0fe-c8346df1740c +Openstack-Request-Id: req-1454ff50-a2c8-4659-a8fc-51c2c83171c5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/93ed1dc3-350c-4f35-8e81-acc17d8bc6f6 [{'path': '/network_interface', 'value': 'flat', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_interface -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_interface ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_exception -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_exception ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_node_rebuild_with_configdrive -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_node_rebuild_with_configdrive ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_raid -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_raid ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_advanced_net_fields -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_advanced_net_fields ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_none -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_none ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_internal_info -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_internal_info ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_interface_old_api -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_interface_old_api ... ok +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-1454ff50-a2c8-4659-a8fc-51c2c83171c5 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_016_nodes_node_ident_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_016_nodes_node_ident_get_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_secure_boot ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_secure_boot ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_is_smartnic -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_is_smartnic ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_physical_network_no_pin -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_physical_network_no_pin ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_physical_network_pin -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_physical_network_pin ... ok +PATCH: /v1/nodes/a14343f1-cb9e-46be-9ce0-44038ee52729 [{'path': '/protected', 'value': 'YeahNahGood', 'op': 'replace'}] +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-3d104005-4c4e-4c62-b51c-209ea4e756c4 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PATCH: /v1/nodes/acd44521-77c0-46fa-98cf-b6683e5886ff [{'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-72fca6d9-1c83-40e6-bc49-85445f6766de +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.48 +{"uuid": "acd44521-77c0-46fa-98cf-b6683e5886ff", "created_at": "2024-01-06T14:11:00.952391+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", "cpus": "8", "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/acd44521-77c0-46fa-98cf-b6683e5886ff", "rel": "self"}, {"href": "http://localhost/nodes/acd44521-77c0-46fa-98cf-b6683e5886ff", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/acd44521-77c0-46fa-98cf-b6683e5886ff/ports", "rel": "self"}, {"href": "http://localhost/nodes/acd44521-77c0-46fa-98cf-b6683e5886ff/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/acd44521-77c0-46fa-98cf-b6683e5886ff/states", "rel": "self"}, {"href": "http://localhost/nodes/acd44521-77c0-46fa-98cf-b6683e5886ff/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/acd44521-77c0-46fa-98cf-b6683e5886ff/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/acd44521-77c0-46fa-98cf-b6683e5886ff/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/acd44521-77c0-46fa-98cf-b6683e5886ff/volume", "rel": "self"}, {"href": "http://localhost/nodes/acd44521-77c0-46fa-98cf-b6683e5886ff/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/8c5d9209-0213-4974-9e6d-b24aad3ee345 [{'path': '/resource_class', 'value': 'foo', 'op': 'add'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-378df3d6-720e-49d2-b8cd-7726794e05a4 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.21 +{"uuid": "8c5d9209-0213-4974-9e6d-b24aad3ee345", "created_at": "2024-01-06T14:11:01.348479+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", "cpus": "8", "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/8c5d9209-0213-4974-9e6d-b24aad3ee345", "rel": "self"}, {"href": "http://localhost/nodes/8c5d9209-0213-4974-9e6d-b24aad3ee345", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/8c5d9209-0213-4974-9e6d-b24aad3ee345/ports", "rel": "self"}, {"href": "http://localhost/nodes/8c5d9209-0213-4974-9e6d-b24aad3ee345/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/8c5d9209-0213-4974-9e6d-b24aad3ee345/states", "rel": "self"}, {"href": "http://localhost/nodes/8c5d9209-0213-4974-9e6d-b24aad3ee345/states", "rel": "bookmark"}]} +PATCH: /v1/nodes/aa5d4c84-bd13-4e21-a3ff-733834486a0b [{'path': '/resource_class', 'value': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'op': 'add'}] +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-c839f451-b382-4bcf-b740-1cb213fd0e4f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.21 +{"uuid": "aa5d4c84-bd13-4e21-a3ff-733834486a0b", "created_at": "2024-01-06T14:11:01.780850+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", "cpus": "8", "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/aa5d4c84-bd13-4e21-a3ff-733834486a0b", "rel": "self"}, {"href": "http://localhost/nodes/aa5d4c84-bd13-4e21-a3ff-733834486a0b", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/aa5d4c84-bd13-4e21-a3ff-733834486a0b/ports", "rel": "self"}, {"href": "http://localhost/nodes/aa5d4c84-bd13-4e21-a3ff-733834486a0b/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/aa5d4c84-bd13-4e21-a3ff-733834486a0b/states", "rel": "self"}, {"href": "http://localhost/nodes/aa5d4c84-bd13-4e21-a3ff-733834486a0b/states", "rel": "bookmark"}]} +PATCH: /v1/nodes/c278ab60-895a-4370-a0f9-5f78332fde63 [{'path': '/resource_class', 'value': 'foo', 'op': 'add'}] +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-46122abd-124d-4cbd-96f9-f4008186acd1 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PATCH: /v1/nodes/aab0eb87-2610-49bc-ae50-edded37c2e31 [{'path': '/resource_class', 'value': 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_too_long +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_too_long ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_not_found +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_not_found ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_secure_boot_hidden_in_lower_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_secure_boot_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroup_mode_properties -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroup_mode_properties ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroups -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroups ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroups_subcontrollers -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroups_subcontrollers ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_ramdisk_endpoints -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_ramdisk_endpoints ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_017_nodes_node_ident_patch_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_017_nodes_node_ident_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_001_values +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_001_values ... skipped 'These are fake reference values for YAML templating' +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_old_api +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_old_api ... ok GOT:{'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'} -GET: /v1/nodes/3d758f4c-cda0-4fd3-ba6a-cfc345191644/states {} +GET: /v1/nodes/6abf576b-aa24-4818-9a6d-f774d908831f/states {} GOT:{'console_enabled': False, 'last_error': None, 'power_state': None, 'provision_state': 'available', 'target_power_state': None, 'target_provision_state': None, 'provision_updated_at': None, 'raid_config': {}, 'target_raid_config': {}, 'boot_mode': 'bios', 'secure_boot': None} -GET: /v1/nodes/9b4f1284-db5b-448a-b35b-50f4ccfc0d55/states {} +GET: /v1/nodes/1ce037e6-89be-4bca-a180-0ab1fd67c549/states {} GOT:{'console_enabled': False, 'last_error': None, 'power_state': None, 'provision_state': 'available', 'target_power_state': None, 'target_provision_state': None, 'provision_updated_at': None, 'raid_config': {}, 'target_raid_config': {}, 'boot_mode': 'uefi', 'secure_boot': None} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} GOT:{'console_enabled': False, 'last_error': None, 'power_state': None, 'provision_state': 'available', 'target_power_state': None, 'target_provision_state': None, 'provision_updated_at': None, 'raid_config': {}, 'target_raid_config': {}} @@ -13715,14 +13754,14 @@ GET: /v1/nodes/eggs/states {} GOT:{'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'} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:33:00.277768+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:02.306325+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:33:00.277768+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states', 'rel': 'bookmark'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:02.306325+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/states {} GOT:{'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'}} -GET: /v1/nodes/326d31c9-7a14-4dcc-9245-5eddf42cd021/states {} +GET: /v1/nodes/f20473e5-6cdf-4f32-a123-7c7533908f29/states {} GOT:{'console_enabled': False, 'last_error': None, 'power_state': None, 'provision_state': 'available', 'target_power_state': None, 'target_provision_state': None, 'provision_updated_at': None, 'raid_config': {}, 'target_raid_config': {}, 'boot_mode': 'uefi', 'secure_boot': True} -GET: /v1/nodes/f5ca0c06-cb70-4dad-814e-dcfebbc1f02e/states {} +GET: /v1/nodes/2a456f02-92e7-42f1-a283-c0851bfa2cd7/states {} GOT:{'console_enabled': False, 'last_error': None, 'power_state': None, 'provision_state': 'available', 'target_power_state': None, 'target_provision_state': None, 'provision_updated_at': None, 'raid_config': {}, 'target_raid_config': {}, 'boot_mode': 'uefi', 'secure_boot': False} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} GOT:{'console_enabled': False, 'last_error': None, 'power_state': None, 'provision_state': 'available', 'target_power_state': None, 'target_provision_state': None, 'provision_updated_at': None, 'raid_config': {}, 'target_raid_config': {}} @@ -13731,152 +13770,143 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_storage_interface_hidden_in_lower_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_storage_interface_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_remove_chassis_uuid -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_remove_chassis_uuid ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_two_calls_done -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_two_calls_done ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_rescue_interface -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_rescue_interface ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_storage_interface -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_storage_interface ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_batches -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_batches ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:33:01.850650+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:03.045537+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:33:01.850650+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:03.045537+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:33:02.275145+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:03.246333+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_traits_hidden_in_lower_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_traits_hidden_in_lower_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok_by_name -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok_by_name ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_traits -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_traits ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_exception -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_exception ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_volume -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_volume ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_018_nodes_node_ident_patch_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_018_nodes_node_ident_patch_member ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_one ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_one ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_abort_verbs -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_abort_verbs ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_invalid_option1 -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_invalid_option1 ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_abort_verbs_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_abort_verbs_fail ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_reason +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_reason ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_002_nodes_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_002_nodes_post_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_one_field_specific_santization ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_one_field_specific_santization ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_invalid_option2 -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_invalid_option2 ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_adopt_verbs -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_adopt_verbs ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok_by_name_with_json -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok_by_name_with_json ... ok -"max-count" must be a positive value. -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_max_count_neg -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_max_count_neg ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_adopt_verbs_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_adopt_verbs_fail ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_clean_verbs -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_clean_verbs ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_notdone -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_notdone ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_clean_verbs_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_clean_verbs_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_003_nodes_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_003_nodes_post_member ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource_link ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource_link ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_with_options -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_with_options ... ok -INFO [alembic.runtime.migration] Context impl SQLiteImpl. -INFO [alembic.runtime.migration] Will assume non-transactional DDL. -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d9d9e96d-e829-459b-83f0-54061c441528 +Openstack-Request-Id: req-d4cde7d5-877f-4b10-a702-07f323e3d51c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "93ed1dc3-350c-4f35-8e81-acc17d8bc6f6", "created_at": "2024-01-06T13:33:00.204206+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", "cpus": "8", "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/93ed1dc3-350c-4f35-8e81-acc17d8bc6f6", "rel": "self"}, {"href": "http://localhost/nodes/93ed1dc3-350c-4f35-8e81-acc17d8bc6f6", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/93ed1dc3-350c-4f35-8e81-acc17d8bc6f6/ports", "rel": "self"}, {"href": "http://localhost/nodes/93ed1dc3-350c-4f35-8e81-acc17d8bc6f6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/93ed1dc3-350c-4f35-8e81-acc17d8bc6f6/states", "rel": "self"}, {"href": "http://localhost/nodes/93ed1dc3-350c-4f35-8e81-acc17d8bc6f6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/93ed1dc3-350c-4f35-8e81-acc17d8bc6f6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/93ed1dc3-350c-4f35-8e81-acc17d8bc6f6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/93ed1dc3-350c-4f35-8e81-acc17d8bc6f6/volume", "rel": "self"}, {"href": "http://localhost/nodes/93ed1dc3-350c-4f35-8e81-acc17d8bc6f6/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/fd41db29-5543-4527-adb5-96aef8424170 [{'path': '/network_interface', 'value': 'flat', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:02.410988+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6ce56528-fc42-4608-90f0-7152240c5dfe +Openstack-Request-Id: req-d4cde7d5-877f-4b10-a702-07f323e3d51c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:02.410988+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-dd9600ee-942e-40ae-a7c2-6346ab4953c7 +Openstack-Request-Id: req-5f837b53-19aa-4205-afb6-811acf79f08f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:01.387986+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/node-57.1 [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'replace'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-5f837b53-19aa-4205-afb6-811acf79f08f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-38d7dbf1-5c99-4328-a8c6-403589106129 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-38d7dbf1-5c99-4328-a8c6-403589106129 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_019_nodes_node_ident_patch_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_019_nodes_node_ident_patch_observer ... ok +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-6c8596a2-995a-4e21-9aab-fee62113078c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PATCH: /v1/nodes/940eed7f-29b6-4465-abf8-b7ba17603575 [{'path': '/retired', 'value': True, 'op': 'replace'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0f54e24c-7775-45c9-ae3c-bb2bf7196000 +Openstack-Request-Id: req-b6ff73c8-a7f5-4459-9da6-8c1e47358903 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.5 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:02.180997+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/node-57.1.json [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'replace'}] +X-Openstack-Ironic-Api-Version: 1.61 +{"uuid": "940eed7f-29b6-4465-abf8-b7ba17603575", "created_at": "2024-01-06T14:11:02.762581+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", "cpus": "8", "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/940eed7f-29b6-4465-abf8-b7ba17603575", "rel": "self"}, {"href": "http://localhost/nodes/940eed7f-29b6-4465-abf8-b7ba17603575", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/940eed7f-29b6-4465-abf8-b7ba17603575/ports", "rel": "self"}, {"href": "http://localhost/nodes/940eed7f-29b6-4465-abf8-b7ba17603575/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/940eed7f-29b6-4465-abf8-b7ba17603575/states", "rel": "self"}, {"href": "http://localhost/nodes/940eed7f-29b6-4465-abf8-b7ba17603575/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/940eed7f-29b6-4465-abf8-b7ba17603575/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/940eed7f-29b6-4465-abf8-b7ba17603575/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/940eed7f-29b6-4465-abf8-b7ba17603575/volume", "rel": "self"}, {"href": "http://localhost/nodes/940eed7f-29b6-4465-abf8-b7ba17603575/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/b57d0c31-2af7-446e-aab2-916fc05f4bc3 [{'path': '/retired', 'value': True, 'op': 'replace'}] +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-43ccba03-565e-4889-bb6b-8b93ac8a48a5 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PATCH: /v1/nodes/b2e2e17b-0ec0-4940-8093-beb8213c5c4e [{'path': '/retired_reason', 'value': 'a better reason', 'op': 'replace'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e219806c-39b5-46e5-88a4-67c2fa9c4f23 +Openstack-Request-Id: req-f074aaa2-3afe-451f-ab7d-07d10358b7d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.5 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:03.007857+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", "cpus": "8", "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"}]} -PATCH: /v1/nodes/06de219d-60b0-4989-a4fe-bfe3700387e5 [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions ... ok +X-Openstack-Ironic-Api-Version: 1.61 +{"uuid": "b2e2e17b-0ec0-4940-8093-beb8213c5c4e", "created_at": "2024-01-06T14:11:03.294068+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", "cpus": "8", "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/b2e2e17b-0ec0-4940-8093-beb8213c5c4e", "rel": "self"}, {"href": "http://localhost/nodes/b2e2e17b-0ec0-4940-8093-beb8213c5c4e", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/b2e2e17b-0ec0-4940-8093-beb8213c5c4e/ports", "rel": "self"}, {"href": "http://localhost/nodes/b2e2e17b-0ec0-4940-8093-beb8213c5c4e/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/b2e2e17b-0ec0-4940-8093-beb8213c5c4e/states", "rel": "self"}, {"href": "http://localhost/nodes/b2e2e17b-0ec0-4940-8093-beb8213c5c4e/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/b2e2e17b-0ec0-4940-8093-beb8213c5c4e/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/b2e2e17b-0ec0-4940-8093-beb8213c5c4e/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/b2e2e17b-0ec0-4940-8093-beb8213c5c4e/volume", "rel": "self"}, {"href": "http://localhost/nodes/b2e2e17b-0ec0-4940-8093-beb8213c5c4e/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/a2cd8364-ba98-4a18-8c8e-8dfa5ee9fd61 [{'op': 'remove', 'path': '/retired'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_remove +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_remove ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_020_nodes_node_ident_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_020_nodes_node_ident_delete_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource_link_hidden_for_older_versions ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource_link_hidden_for_older_versions ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_as_dict -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_as_dict ... ok -INFO [alembic.runtime.migration] Context impl SQLiteImpl. -INFO [alembic.runtime.migration] Will assume non-transactional DDL. -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions_bad -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions_bad ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_with_reason +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_with_reason ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource_old_api_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource_old_api_version ... ok -INFO [alembic.runtime.migration] Context impl SQLiteImpl. -INFO [alembic.runtime.migration] Will assume non-transactional DDL. -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions_ignore_models -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions_ignore_models ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_as_dict_invalid -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_as_dict_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_allocation -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_allocation ... ok -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_versions_bad -ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_versions_bad ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_fails -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_fails ... ok -This is badINFO [alembic.runtime.migration] Context impl SQLiteImpl. -INFO [alembic.runtime.migration] Will assume non-transactional DDL. -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:33:02.275145+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_004_nodes_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_004_nodes_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_021_nodes_node_ident_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_021_nodes_node_ident_delete_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_state +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_state ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_005_nodes_get_node_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_005_nodes_get_node_admin ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:03.246333+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'storage_interface': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, '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?fields=uuid,provision_state,maintenance,instance_uuid,last_error {} GOT:{'nodes': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'provision_state': 'available', 'maintenance': False, 'instance_uuid': None, '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'}]}]} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} -GOT:{'portgroups': [{'uuid': '9ed65684-61b6-40c0-aef2-0909131c9c35', 'address': '52:54:00:cf:2d:30', 'name': 'pg-0', 'links': [{'href': 'http://localhost/v1/portgroups/9ed65684-61b6-40c0-aef2-0909131c9c35', 'rel': 'self'}, {'href': 'http://localhost/portgroups/9ed65684-61b6-40c0-aef2-0909131c9c35', 'rel': 'bookmark'}]}, {'uuid': 'fc7da917-6e17-4f4b-9dc9-830b3add579b', 'address': '52:54:00:cf:2d:31', 'name': 'pg-1', 'links': [{'href': 'http://localhost/v1/portgroups/fc7da917-6e17-4f4b-9dc9-830b3add579b', 'rel': 'self'}, {'href': 'http://localhost/portgroups/fc7da917-6e17-4f4b-9dc9-830b3add579b', 'rel': 'bookmark'}]}]} +GOT:{'portgroups': [{'uuid': 'f7086d76-371a-4304-bdaa-3c629fb92990', 'address': '52:54:00:cf:2d:30', 'name': 'pg-0', 'links': [{'href': 'http://localhost/v1/portgroups/f7086d76-371a-4304-bdaa-3c629fb92990', 'rel': 'self'}, {'href': 'http://localhost/portgroups/f7086d76-371a-4304-bdaa-3c629fb92990', 'rel': 'bookmark'}]}, {'uuid': 'eece14be-0b4d-40fa-b47a-d491e478df9e', 'address': '52:54:00:cf:2d:31', 'name': 'pg-1', 'links': [{'href': 'http://localhost/v1/portgroups/eece14be-0b4d-40fa-b47a-d491e478df9e', 'rel': 'self'}, {'href': 'http://localhost/portgroups/eece14be-0b4d-40fa-b47a-d491e478df9e', 'rel': 'bookmark'}]}]} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups?limit=1 {} -GOT:{'portgroups': [{'uuid': '9ed65684-61b6-40c0-aef2-0909131c9c35', 'address': '52:54:00:cf:2d:30', 'name': 'pg-0', 'links': [{'href': 'http://localhost/v1/portgroups/9ed65684-61b6-40c0-aef2-0909131c9c35', 'rel': 'self'}, {'href': 'http://localhost/portgroups/9ed65684-61b6-40c0-aef2-0909131c9c35', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=uuid,address,name&limit=1&marker=9ed65684-61b6-40c0-aef2-0909131c9c35'} +GOT:{'portgroups': [{'uuid': 'f7086d76-371a-4304-bdaa-3c629fb92990', 'address': '52:54:00:cf:2d:30', 'name': 'pg-0', 'links': [{'href': 'http://localhost/v1/portgroups/f7086d76-371a-4304-bdaa-3c629fb92990', 'rel': 'self'}, {'href': 'http://localhost/portgroups/f7086d76-371a-4304-bdaa-3c629fb92990', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=uuid,address,name&limit=1&marker=f7086d76-371a-4304-bdaa-3c629fb92990'} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:33:04.230028+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:03.914408+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:33:04.561618+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states', 'rel': 'bookmark'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:04.051994+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/portgroups {} GOT:Response: 404 Not Found Content-Type: application/json @@ -13884,127 +13914,202 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_vendor_data_failed -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_vendor_data_failed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_allocation_owned -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_allocation_owned ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_invalid_ident ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_invalid_ident ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_empty -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_empty ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_old_api -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_old_api ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_target_unsupported -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_target_unsupported ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_022_nodes_node_ident_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_022_nodes_node_ident_delete_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_link ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_link ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_version_older -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_version_older ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_verbs -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_verbs ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_006_nodes_get_node_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_006_nodes_get_node_member ... ok +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-633694f0-9f7d-4b64-92a0-606a25779dab +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.61 +{"uuid": "a2cd8364-ba98-4a18-8c8e-8dfa5ee9fd61", "created_at": "2024-01-06T14:11:03.607298+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", "cpus": "8", "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/a2cd8364-ba98-4a18-8c8e-8dfa5ee9fd61", "rel": "self"}, {"href": "http://localhost/nodes/a2cd8364-ba98-4a18-8c8e-8dfa5ee9fd61", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/a2cd8364-ba98-4a18-8c8e-8dfa5ee9fd61/ports", "rel": "self"}, {"href": "http://localhost/nodes/a2cd8364-ba98-4a18-8c8e-8dfa5ee9fd61/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/a2cd8364-ba98-4a18-8c8e-8dfa5ee9fd61/states", "rel": "self"}, {"href": "http://localhost/nodes/a2cd8364-ba98-4a18-8c8e-8dfa5ee9fd61/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/a2cd8364-ba98-4a18-8c8e-8dfa5ee9fd61/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/a2cd8364-ba98-4a18-8c8e-8dfa5ee9fd61/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/a2cd8364-ba98-4a18-8c8e-8dfa5ee9fd61/volume", "rel": "self"}, {"href": "http://localhost/nodes/a2cd8364-ba98-4a18-8c8e-8dfa5ee9fd61/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/10811289-d625-4799-9f29-fa90c49246ab [{'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-5d826282-f6e0-43fa-8bae-e45844fe5e19 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.61 +{"uuid": "10811289-d625-4799-9f29-fa90c49246ab", "created_at": "2024-01-06T14:11:04.014456+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", "cpus": "8", "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/10811289-d625-4799-9f29-fa90c49246ab", "rel": "self"}, {"href": "http://localhost/nodes/10811289-d625-4799-9f29-fa90c49246ab", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/10811289-d625-4799-9f29-fa90c49246ab/ports", "rel": "self"}, {"href": "http://localhost/nodes/10811289-d625-4799-9f29-fa90c49246ab/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/10811289-d625-4799-9f29-fa90c49246ab/states", "rel": "self"}, {"href": "http://localhost/nodes/10811289-d625-4799-9f29-fa90c49246ab/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/10811289-d625-4799-9f29-fa90c49246ab/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/10811289-d625-4799-9f29-fa90c49246ab/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/10811289-d625-4799-9f29-fa90c49246ab/volume", "rel": "self"}, {"href": "http://localhost/nodes/10811289-d625-4799-9f29-fa90c49246ab/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'power_state': 'new state'}] +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-cfbd6585-64f1-454d-bfcb-5296b992cd39 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PATCH: /v1/nodes/4a0673c6-a7db-4cdb-9b43-8fa2cc79458f [{'path': '/storage_interface', 'value': 'cinder', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_storage_interface +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_storage_interface ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_node_not_found ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_node_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_verbs_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_verbs_fail ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_023_nodes_validate_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_023_nodes_validate_get_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_noid ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_noid ... ok -ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_obj_versions -ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_obj_versions ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_fail ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_storage_interface_old_api +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_storage_interface_old_api ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_007_nodes_get_node_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_007_nodes_get_node_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_via_portgroups_subres_not_allowed +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_via_portgroups_subres_not_allowed ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_traits +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_024_nodes_validate_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_024_nodes_validate_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_008_nodes_get_node_other_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_008_nodes_get_node_other_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_025_nodes_validate_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_025_nodes_validate_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_with_reset_interfaces +ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_with_reset_interfaces ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_allowed +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_allowed ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_026_nodes_maintenance_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_026_nodes_maintenance_put_admin ... ok +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'replace'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c67c12cf-21d2-4ee4-af25-bfc7917ba54e +Openstack-Request-Id: req-66b66734-869a-4548-9654-e15d78b8128f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.50 -{"uuid": "06de219d-60b0-4989-a4fe-bfe3700387e5", "created_at": "2024-01-06T13:33:04.054238+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", "cpus": "8", "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/06de219d-60b0-4989-a4fe-bfe3700387e5", "rel": "self"}, {"href": "http://localhost/nodes/06de219d-60b0-4989-a4fe-bfe3700387e5", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/06de219d-60b0-4989-a4fe-bfe3700387e5/ports", "rel": "self"}, {"href": "http://localhost/nodes/06de219d-60b0-4989-a4fe-bfe3700387e5/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/06de219d-60b0-4989-a4fe-bfe3700387e5/states", "rel": "self"}, {"href": "http://localhost/nodes/06de219d-60b0-4989-a4fe-bfe3700387e5/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/06de219d-60b0-4989-a4fe-bfe3700387e5/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/06de219d-60b0-4989-a4fe-bfe3700387e5/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/06de219d-60b0-4989-a4fe-bfe3700387e5/volume", "rel": "self"}, {"href": "http://localhost/nodes/06de219d-60b0-4989-a4fe-bfe3700387e5/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/141d10d3-ea06-41a8-9b41-add44ab0f1fe [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:01.919404+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"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': 123, 'op': 'replace'}] +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-4f4759b6-193f-4d34-9f34-ecd11aebae53 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a UUID for node_uuid, but received 123.\", \"debuginfo\": null}"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '12506333-a81c-4d59-9987-889ed5f8687b', 'op': 'replace'}] +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-86eeb56a-e3ef-4494-933b-99d345100c7e +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 12506333-a81c-4d59-9987-889ed5f8687b could not be found.\", \"debuginfo\": null}"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/boot_index', 'value': 100, 'op': 'replace'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-518a119f-1641-4bde-b65b-69fa467e5937 +Openstack-Request-Id: req-79ced3f8-db10-4b3a-a3b9-112ae55a611e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.50 -{"uuid": "141d10d3-ea06-41a8-9b41-add44ab0f1fe", "created_at": "2024-01-06T13:33:04.909723+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", "cpus": "8", "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/141d10d3-ea06-41a8-9b41-add44ab0f1fe", "rel": "self"}, {"href": "http://localhost/nodes/141d10d3-ea06-41a8-9b41-add44ab0f1fe", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/141d10d3-ea06-41a8-9b41-add44ab0f1fe/ports", "rel": "self"}, {"href": "http://localhost/nodes/141d10d3-ea06-41a8-9b41-add44ab0f1fe/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/141d10d3-ea06-41a8-9b41-add44ab0f1fe/states", "rel": "self"}, {"href": "http://localhost/nodes/141d10d3-ea06-41a8-9b41-add44ab0f1fe/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/141d10d3-ea06-41a8-9b41-add44ab0f1fe/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/141d10d3-ea06-41a8-9b41-add44ab0f1fe/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/141d10d3-ea06-41a8-9b41-add44ab0f1fe/volume", "rel": "self"}, {"href": "http://localhost/nodes/141d10d3-ea06-41a8-9b41-add44ab0f1fe/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/275d8570-0dc8-49d3-aaaf-1c6943524c50 [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] -GOT:Response: 409 Conflict +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:02.425954+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"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ec2767a4-30c2-4db3-9dcb-fe12b0051d58 +Openstack-Request-Id: req-c9a4e565-8bdc-4bf8-9035-e9c07935cc4f X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 \\\"275d8570-0dc8-49d3-aaaf-1c6943524c50\\\" while it is allocated to an allocation with an owner.\", \"debuginfo\": null}"} -PATCH: /v1/nodes/9ec0d851-3110-4545-94b3-3a474d5be4db [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:02.578189+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"} +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7c54bb76-ccd0-4a7a-abfd-41e3c70d20e7 +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +PATCH: /v1/volume/targets/16c104b2-e36a-426a-b850-7c4c5545bb83 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-f29f9138-a2a8-40b2-a5e6-1453e2336393 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/40dc475f-d8c9-4b99-9239-7b9a3bde15e5 [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_provisioned -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_provisioned ... ok -ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_obj_versions_bad -ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_obj_versions_bad ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_false -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_false ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_via_portgroups_subres_not_allowed -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_via_portgroups_subres_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_none -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_none ... ok -ironic.tests.unit.common.test_args.ValidatePatchSchemaTest.test_patch -ironic.tests.unit.common.test_args.ValidatePatchSchemaTest.test_patch ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_provisioned_forbidden -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_provisioned_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group ... ok -ironic.tests.unit.common.test_args.ValidatePatchSchemaTest.test_patch_validation_failed -ironic.tests.unit.common.test_args.ValidatePatchSchemaTest.test_patch_validation_failed ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group_fail ... ok -ironic.tests.unit.common.test_cinder.TestCinderSession.test__get_cinder_session -ironic.tests.unit.common.test_cinder.TestCinderSession.test__get_cinder_session ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group_none -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group_none ... ok -ironic.tests.unit.common.test_context.RequestContextTestCase.test_create_context -ironic.tests.unit.common.test_context.RequestContextTestCase.test_create_context ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_allowed -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type ... ok -ironic.tests.unit.common.test_context.RequestContextTestCase.test_create_context_with_environ -ironic.tests.unit.common.test_context.RequestContextTestCase.test_create_context_with_environ ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type_fail ... ok -ironic.tests.unit.common.test_context.RequestContextTestCase.test_from_dict -ironic.tests.unit.common.test_context.RequestContextTestCase.test_from_dict ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type_none -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type_none ... ok -ironic.tests.unit.common.test_context.RequestContextTestCase.test_from_dict_older_api_server -ironic.tests.unit.common.test_context.RequestContextTestCase.test_from_dict_older_api_server ... ok -GOT:{'ports': [{'uuid': '03e175af-34bd-4fd3-bb22-6289f0d2aa2e', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/03e175af-34bd-4fd3-bb22-6289f0d2aa2e', 'rel': 'self'}, {'href': 'http://localhost/ports/03e175af-34bd-4fd3-bb22-6289f0d2aa2e', 'rel': 'bookmark'}]}, {'uuid': 'c49a69bc-9baf-46c6-961f-b29f78cd2a7c', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/c49a69bc-9baf-46c6-961f-b29f78cd2a7c', 'rel': 'self'}, {'href': 'http://localhost/ports/c49a69bc-9baf-46c6-961f-b29f78cd2a7c', 'rel': 'bookmark'}]}]} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 16c104b2-e36a-426a-b850-7c4c5545bb83 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-ecbb8753-df77-4bbc-b885-da7e67c45fa3 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-e8ce1068-1902-4db4-b5ed-402e17e6e529 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-8fc92685-07a2-4405-a8a6-79a3e7c1dccb +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-8293ad82-bdf4-4395-a178-a0c0e593fefc +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-096a4e61-f600-4532-8008-dbbc4dcd1373 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-bd04f3c9-5f81-4f21-bcfd-37c2d9f56cba +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-d4e7d2d8-6d3f-40ca-a62b-223875d4d465 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_009_nodes_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_009_nodes_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_010_nodes_get_other_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_010_nodes_get_other_admin ... ok +GOT:{'ports': [{'uuid': '6e5e8f18-8587-4de8-8c4f-47562e1f9a69', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/6e5e8f18-8587-4de8-8c4f-47562e1f9a69', 'rel': 'self'}, {'href': 'http://localhost/ports/6e5e8f18-8587-4de8-8c4f-47562e1f9a69', 'rel': 'bookmark'}]}, {'uuid': '02db607d-5ae2-4843-9506-d9646c5d05ca', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/02db607d-5ae2-4843-9506-d9646c5d05ca', 'rel': 'self'}, {'href': 'http://localhost/ports/02db607d-5ae2-4843-9506-d9646c5d05ca', 'rel': 'bookmark'}]}]} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports?limit=1 {} -GOT:{'ports': [{'uuid': '03e175af-34bd-4fd3-bb22-6289f0d2aa2e', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/03e175af-34bd-4fd3-bb22-6289f0d2aa2e', 'rel': 'self'}, {'href': 'http://localhost/ports/03e175af-34bd-4fd3-bb22-6289f0d2aa2e', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=1&marker=03e175af-34bd-4fd3-bb22-6289f0d2aa2e'} +GOT:{'ports': [{'uuid': '6e5e8f18-8587-4de8-8c4f-47562e1f9a69', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/6e5e8f18-8587-4de8-8c4f-47562e1f9a69', 'rel': 'self'}, {'href': 'http://localhost/ports/6e5e8f18-8587-4de8-8c4f-47562e1f9a69', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=1&marker=6e5e8f18-8587-4de8-8c4f-47562e1f9a69'} GET: /v1/nodes/123 123/ports {} 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\"}"} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:33:06.105293+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}]} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:04.640155+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/ports {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d71263c6-329e-4665-97c2-24fcc3748d1c +Openstack-Request-Id: req-921ccf80-b957-4412-86fb-ebf4052b6013 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -14016,19 +14121,19 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-824edad4-1b2f-4d86-aae7-0b652a4bdc7d +Openstack-Request-Id: req-397de26f-3a5d-435b-b80b-6763195bdf60 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} GET: /v1/nodes?sort_key=uuid {} -GOT:{'nodes': [{'uuid': '3da85a14-01e7-4850-a8f5-6af51c82485e', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/3da85a14-01e7-4850-a8f5-6af51c82485e', 'rel': 'self'}, {'href': 'http://localhost/nodes/3da85a14-01e7-4850-a8f5-6af51c82485e', 'rel': 'bookmark'}]}, {'uuid': 'b2748099-5ebd-4cd2-ae26-9d0c7cc134c6', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/b2748099-5ebd-4cd2-ae26-9d0c7cc134c6', 'rel': 'self'}, {'href': 'http://localhost/nodes/b2748099-5ebd-4cd2-ae26-9d0c7cc134c6', 'rel': 'bookmark'}]}, {'uuid': 'c4ce4dc0-6035-425a-9528-493bb5b09dfc', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/c4ce4dc0-6035-425a-9528-493bb5b09dfc', 'rel': 'self'}, {'href': 'http://localhost/nodes/c4ce4dc0-6035-425a-9528-493bb5b09dfc', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': '6a5f3a35-bbcf-492d-936f-f6053883a24a', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/6a5f3a35-bbcf-492d-936f-f6053883a24a', 'rel': 'self'}, {'href': 'http://localhost/nodes/6a5f3a35-bbcf-492d-936f-f6053883a24a', 'rel': 'bookmark'}]}, {'uuid': '9ea73c9c-b3db-4e6a-ac4f-81c7fa98c1e9', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/9ea73c9c-b3db-4e6a-ac4f-81c7fa98c1e9', 'rel': 'self'}, {'href': 'http://localhost/nodes/9ea73c9c-b3db-4e6a-ac4f-81c7fa98c1e9', 'rel': 'bookmark'}]}, {'uuid': 'b452c294-499d-45a3-8bb5-1a947cb2a41e', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/b452c294-499d-45a3-8bb5-1a947cb2a41e', 'rel': 'self'}, {'href': 'http://localhost/nodes/b452c294-499d-45a3-8bb5-1a947cb2a41e', 'rel': 'bookmark'}]}]} GET: /v1/nodes?sort_key=resource_class {} -GOT:{'nodes': [{'uuid': '80dd786e-4eeb-4636-8cb3-3ef971ac6601', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/80dd786e-4eeb-4636-8cb3-3ef971ac6601', 'rel': 'self'}, {'href': 'http://localhost/nodes/80dd786e-4eeb-4636-8cb3-3ef971ac6601', 'rel': 'bookmark'}]}, {'uuid': 'e85fb7ec-45ef-4fda-9164-5ffb5235d137', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/e85fb7ec-45ef-4fda-9164-5ffb5235d137', 'rel': 'self'}, {'href': 'http://localhost/nodes/e85fb7ec-45ef-4fda-9164-5ffb5235d137', 'rel': 'bookmark'}]}, {'uuid': '486714fa-c91e-493a-8524-35187003e2a3', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/486714fa-c91e-493a-8524-35187003e2a3', 'rel': 'self'}, {'href': 'http://localhost/nodes/486714fa-c91e-493a-8524-35187003e2a3', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'd757223d-5e58-4243-a824-e36ac8792196', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/d757223d-5e58-4243-a824-e36ac8792196', 'rel': 'self'}, {'href': 'http://localhost/nodes/d757223d-5e58-4243-a824-e36ac8792196', 'rel': 'bookmark'}]}, {'uuid': '3f1f89f3-0434-4529-bfb6-50c16b6c8d2d', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/3f1f89f3-0434-4529-bfb6-50c16b6c8d2d', 'rel': 'self'}, {'href': 'http://localhost/nodes/3f1f89f3-0434-4529-bfb6-50c16b6c8d2d', 'rel': 'bookmark'}]}, {'uuid': '7095037e-116e-4380-bb73-d6aae8b19db2', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': 'available', 'name': None, 'links': [{'href': 'http://localhost/v1/nodes/7095037e-116e-4380-bb73-d6aae8b19db2', 'rel': 'self'}, {'href': 'http://localhost/nodes/7095037e-116e-4380-bb73-d6aae8b19db2', 'rel': 'bookmark'}]}]} GET: /v1/nodes?sort_key=foo {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d0114285-3360-48bd-a766-28f5c1200e71 +Openstack-Request-Id: req-370b7bd4-ef60-4df7-be3b-248f0f75796e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -14036,7 +14141,7 @@ GET: /v1/nodes?sort_key=properties {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-59a7ad68-bc8d-49a6-a4c2-de351a607d0b +Openstack-Request-Id: req-2afdaf4d-75a3-4114-a063-cabc8cdd18e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -14044,7 +14149,7 @@ GET: /v1/nodes?sort_key=driver_info {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c670b4d8-e1b8-43ce-ab46-7553d31404ec +Openstack-Request-Id: req-dfd931ad-6b60-4de9-9731-1019b92be88b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -14052,7 +14157,7 @@ GET: /v1/nodes?sort_key=extra {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-5f9e4830-153e-4c65-975e-fc3e81b1daaa +Openstack-Request-Id: req-0ed7968a-f8e3-44a9-a47c-de644c636b5a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -14060,7 +14165,7 @@ GET: /v1/nodes?sort_key=instance_info {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-4b077f7b-5526-47bf-b99e-8773c994342d +Openstack-Request-Id: req-e1d84675-eb19-4f3a-bed0-95bc0e327554 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -14068,190 +14173,273 @@ GET: /v1/nodes?sort_key=driver_internal_info {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_invalid ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_old_api -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_old_api ... ok -ironic.tests.unit.common.test_context.RequestContextTestCase.test_thread_with_context -ironic.tests.unit.common.test_context.RequestContextTestCase.test_thread_with_context ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_inspect_verbs -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_inspect_verbs ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_inspect_verbs_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_inspect_verbs_fail ... ok -ironic.tests.unit.common.test_context.RequestContextTestCase.test_thread_without_context -ironic.tests.unit.common.test_context.RequestContextTestCase.test_thread_without_context ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_not_allowed ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_not_allowed ... ok -ironic.tests.unit.common.test_context.RequestContextTestCase.test_to_dict_get_auth_token_info -ironic.tests.unit.common.test_context.RequestContextTestCase.test_to_dict_get_auth_token_info ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_manage_verbs -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_manage_verbs ... ok -ironic.tests.unit.common.test_context.RequestContextTestCase.test_to_policy_values -ironic.tests.unit.common.test_context.RequestContextTestCase.test_to_policy_values ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_manage_verbs_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_manage_verbs_fail ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_provide_verbs -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_provide_verbs ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_unassociated_nodes_insensitive +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_unassociated_nodes_insensitive ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2d41c9eb-967d-48bb-841d-db60ab638620 +Openstack-Request-Id: req-98338c65-72d5-4e20-80be-5f7c3101bd06 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.50 -{"uuid": "40dc475f-d8c9-4b99-9239-7b9a3bde15e5", "created_at": "2024-01-06T13:33:06.478440+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", "cpus": "8", "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/40dc475f-d8c9-4b99-9239-7b9a3bde15e5", "rel": "self"}, {"href": "http://localhost/nodes/40dc475f-d8c9-4b99-9239-7b9a3bde15e5", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/40dc475f-d8c9-4b99-9239-7b9a3bde15e5/ports", "rel": "self"}, {"href": "http://localhost/nodes/40dc475f-d8c9-4b99-9239-7b9a3bde15e5/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/40dc475f-d8c9-4b99-9239-7b9a3bde15e5/states", "rel": "self"}, {"href": "http://localhost/nodes/40dc475f-d8c9-4b99-9239-7b9a3bde15e5/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/40dc475f-d8c9-4b99-9239-7b9a3bde15e5/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/40dc475f-d8c9-4b99-9239-7b9a3bde15e5/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/40dc475f-d8c9-4b99-9239-7b9a3bde15e5/volume", "rel": "self"}, {"href": "http://localhost/nodes/40dc475f-d8c9-4b99-9239-7b9a3bde15e5/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/c24d86af-20c5-4c29-a056-0acc8a0ef259 [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] -GOT:Response: 409 Conflict +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "4a0673c6-a7db-4cdb-9b43-8fa2cc79458f", "created_at": "2024-01-06T14:11:04.505341+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", "cpus": "8", "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/4a0673c6-a7db-4cdb-9b43-8fa2cc79458f", "rel": "self"}, {"href": "http://localhost/nodes/4a0673c6-a7db-4cdb-9b43-8fa2cc79458f", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/4a0673c6-a7db-4cdb-9b43-8fa2cc79458f/ports", "rel": "self"}, {"href": "http://localhost/nodes/4a0673c6-a7db-4cdb-9b43-8fa2cc79458f/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/4a0673c6-a7db-4cdb-9b43-8fa2cc79458f/states", "rel": "self"}, {"href": "http://localhost/nodes/4a0673c6-a7db-4cdb-9b43-8fa2cc79458f/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/4a0673c6-a7db-4cdb-9b43-8fa2cc79458f/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/4a0673c6-a7db-4cdb-9b43-8fa2cc79458f/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/4a0673c6-a7db-4cdb-9b43-8fa2cc79458f/volume", "rel": "self"}, {"href": "http://localhost/nodes/4a0673c6-a7db-4cdb-9b43-8fa2cc79458f/volume", "rel": "bookmark"}]} +PATCH: /v1/nodes/546bfdf5-a082-4613-a863-7ea67da38f88 [{'path': '/storage_interface', 'value': 'cinder', 'op': 'add'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-0f10a1db-c0d2-463c-9378-016dafbd8097 +Openstack-Request-Id: req-3533c3f2-ea5b-4bb7-8b72-cb5d3a05ddde X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 \\\"c24d86af-20c5-4c29-a056-0acc8a0ef259\\\" while it is in state \\\"active\\\".\", \"debuginfo\": null}"} -PATCH: /v1/nodes/edc4ca5c-e5a7-44e8-aa6e-8063de952aab [{'path': '/protected', 'value': True, 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.32 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +PATCH: /v1/nodes/ec28c883-3c02-4608-a393-6fa3190f06e1 [{'path': '/traits', 'value': ['CUSTOM_1'], 'op': 'add'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-74a869b3-1a84-4d8e-97e1-dd7399af1ce4 +Openstack-Request-Id: req-3d19ce01-d2d4-49ba-bef4-18a3eff2b927 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.48 -{"uuid": "edc4ca5c-e5a7-44e8-aa6e-8063de952aab", "created_at": "2024-01-06T13:33:07.740550+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", "cpus": "8", "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/edc4ca5c-e5a7-44e8-aa6e-8063de952aab", "rel": "self"}, {"href": "http://localhost/nodes/edc4ca5c-e5a7-44e8-aa6e-8063de952aab", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/edc4ca5c-e5a7-44e8-aa6e-8063de952aab/ports", "rel": "self"}, {"href": "http://localhost/nodes/edc4ca5c-e5a7-44e8-aa6e-8063de952aab/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/edc4ca5c-e5a7-44e8-aa6e-8063de952aab/states", "rel": "self"}, {"href": "http://localhost/nodes/edc4ca5c-e5a7-44e8-aa6e-8063de952aab/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/edc4ca5c-e5a7-44e8-aa6e-8063de952aab/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/edc4ca5c-e5a7-44e8-aa6e-8063de952aab/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/edc4ca5c-e5a7-44e8-aa6e-8063de952aab/volume", "rel": "self"}, {"href": "http://localhost/nodes/edc4ca5c-e5a7-44e8-aa6e-8063de952aab/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/93d71f01-2cc7-45b1-8e60-92cea151b67b [{'path': '/protected', 'value': True, 'op': 'replace'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"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, storage_interface, vendor_interface\", \"debuginfo\": null}"} +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?reset_interfaces=True [{'path': '/driver', 'value': 'ipmi', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-7b14b3bb-7a5f-4db5-a52a-f72415f75389 +Openstack-Request-Id: req-6fd366d5-b080-4b0b-bc94-5b6b807cf56c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/3e85b9b5-f5c5-49aa-988b-97e89a46fc58 [{'path': '/protected_reason', 'value': 'reason!', 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_reason -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_reason ... ok -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_fallback -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_fallback ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_provide_verbs_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_provide_verbs_fail ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_unassociated_nodes_insensitive -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_unassociated_nodes_insensitive ... ok -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_no_answer_drivername -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_no_answer_drivername ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_driver -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_driver ... ok +X-Openstack-Ironic-Api-Version: 1.45 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:05.168448+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", "cpus": "8", "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"}]} +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_011_nodes_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_011_nodes_detail_get_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_unassociated_nodes_with_limit ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_unassociated_nodes_with_limit ... ok -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_no_answer_drivername_node -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_no_answer_drivername_node ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_driver_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_driver_fail ... ok -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_one -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_one ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_fields -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_fields ... ok +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-cf13897d-ee2c-4947-888e-8e578c7b44a8 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-cf13897d-ee2c-4947-888e-8e578c7b44a8 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-e7682c04-2a34-4918-b017-ecec1bb67d0b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-e7682c04-2a34-4918-b017-ecec1bb67d0b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-455a5639-f40f-4a8f-89a0-aef6c4594645 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-455a5639-f40f-4a8f-89a0-aef6c4594645 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-1ddd55ca-b56c-4590-91f8-01f42dfe9872 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-1ddd55ca-b56c-4590-91f8-01f42dfe9872 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-8604d405-8e9e-4328-89bc-6af40cd58c11 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-8604d405-8e9e-4328-89bc-6af40cd58c11 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-a978c61f-2679-4ce9-9a94-5b72a79e2c50 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-a978c61f-2679-4ce9-9a94-5b72a79e2c50 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-1bfc4e38-a6aa-4a8c-adb7-4d344468c91f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-1bfc4e38-a6aa-4a8c-adb7-4d344468c91f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-f1278983-e58d-4a0f-9a63-7ec5971cc69f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-f1278983-e58d-4a0f-9a63-7ec5971cc69f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-dae67819-5c15-4a2f-8d2e-eff2606e0992 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_027_nodes_maintenance_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_027_nodes_maintenance_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_028_nodes_maintenance_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_028_nodes_maintenance_put_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_name ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_remove -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_remove ... ok -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_two -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_two ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_fields_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_fields_fail ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_resource_class -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_resource_class ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_012_nodes_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_012_nodes_detail_get_member ... ok +GOT:Response: 201 Created +Content-Type: application/json +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-28d397f7-eeb8-4371-8207-db74ad5dd237 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-32f34556-9696-4ad3-9c8a-28e13dc4b569 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:06.027589+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, "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", "cpus": "8", "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, "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 {} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_automated_clean +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_automated_clean ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_029_nodes_maintenance_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_029_nodes_maintenance_delete_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_automated_clean_old_api_version +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_automated_clean_old_api_version ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_name_unsupported ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_name_unsupported ... ok -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_unsupported -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_unsupported ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_resource_class_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_resource_class_fail ... ok -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_check_exception_IncompatibleInterface -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_check_exception_IncompatibleInterface ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_undeploy_verbs -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_undeploy_verbs ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_013_nodes_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_013_nodes_detail_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_030_nodes_maintenance_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_030_nodes_maintenance_delete_member ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_uuid ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_uuid ... ok -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_from_additional_defaults -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_from_additional_defaults ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_undeploy_verbs_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_undeploy_verbs_fail ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_string -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_string ... ok -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_from_config -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_from_config ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_uuid_using_deprecated_interface ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_uuid_using_deprecated_interface ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_unknown_verbs -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_unknown_verbs ... ok -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_network_from_additional_defaults_hardware_type -ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_network_from_additional_defaults_hardware_type ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_network_interface -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_network_interface ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_network_interface_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_network_interface_fail ... ok -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-78b4c663-9190-4ac2-bac3-0c9cfbe139fd -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.48 -{"uuid": "3e85b9b5-f5c5-49aa-988b-97e89a46fc58", "created_at": "2024-01-06T13:33:08.887563+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", "cpus": "8", "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/3e85b9b5-f5c5-49aa-988b-97e89a46fc58", "rel": "self"}, {"href": "http://localhost/nodes/3e85b9b5-f5c5-49aa-988b-97e89a46fc58", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/3e85b9b5-f5c5-49aa-988b-97e89a46fc58/ports", "rel": "self"}, {"href": "http://localhost/nodes/3e85b9b5-f5c5-49aa-988b-97e89a46fc58/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/3e85b9b5-f5c5-49aa-988b-97e89a46fc58/states", "rel": "self"}, {"href": "http://localhost/nodes/3e85b9b5-f5c5-49aa-988b-97e89a46fc58/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/3e85b9b5-f5c5-49aa-988b-97e89a46fc58/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/3e85b9b5-f5c5-49aa-988b-97e89a46fc58/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/3e85b9b5-f5c5-49aa-988b-97e89a46fc58/volume", "rel": "self"}, {"href": "http://localhost/nodes/3e85b9b5-f5c5-49aa-988b-97e89a46fc58/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/9758a1cc-0aea-4ed4-a4b7-510ab7e63d2e [{'op': 'remove', 'path': '/protected'}] -GOT:Response: 200 OK +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_014_nodes_node_ident_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_014_nodes_node_ident_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_031_nodes_maintenance_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_031_nodes_maintenance_delete_observer ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:06.027589+00:00', 'updated_at': None, 'automated_clean': True, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': None, 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-5741ad42-042d-4561-b0d3-bd7effb49197 +Openstack-Request-Id: req-20563c18-5761-44f5-ab35-98b98b7710f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.48 -{"uuid": "9758a1cc-0aea-4ed4-a4b7-510ab7e63d2e", "created_at": "2024-01-06T13:33:09.674765+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", "cpus": "8", "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/9758a1cc-0aea-4ed4-a4b7-510ab7e63d2e", "rel": "self"}, {"href": "http://localhost/nodes/9758a1cc-0aea-4ed4-a4b7-510ab7e63d2e", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/9758a1cc-0aea-4ed4-a4b7-510ab7e63d2e/ports", "rel": "self"}, {"href": "http://localhost/nodes/9758a1cc-0aea-4ed4-a4b7-510ab7e63d2e/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/9758a1cc-0aea-4ed4-a4b7-510ab7e63d2e/states", "rel": "self"}, {"href": "http://localhost/nodes/9758a1cc-0aea-4ed4-a4b7-510ab7e63d2e/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/9758a1cc-0aea-4ed4-a4b7-510ab7e63d2e/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/9758a1cc-0aea-4ed4-a4b7-510ab7e63d2e/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/9758a1cc-0aea-4ed4-a4b7-510ab7e63d2e/volume", "rel": "self"}, {"href": "http://localhost/nodes/9758a1cc-0aea-4ed4-a4b7-510ab7e63d2e/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/8052ed9f-dcb3-4a9c-934b-dfe87625a3b4 [{'path': '/protected', 'value': 'True', 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.32 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': None} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-ab8526b3-beeb-4201-9b3f-096d0d03a01a +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-e4bcce83-f8da-4fd8-8989-b9a31d6acc20 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.48 -{"uuid": "8052ed9f-dcb3-4a9c-934b-dfe87625a3b4", "created_at": "2024-01-06T13:33:10.803342+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", "cpus": "8", "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/8052ed9f-dcb3-4a9c-934b-dfe87625a3b4", "rel": "self"}, {"href": "http://localhost/nodes/8052ed9f-dcb3-4a9c-934b-dfe87625a3b4", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/8052ed9f-dcb3-4a9c-934b-dfe87625a3b4/ports", "rel": "self"}, {"href": "http://localhost/nodes/8052ed9f-dcb3-4a9c-934b-dfe87625a3b4/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/8052ed9f-dcb3-4a9c-934b-dfe87625a3b4/states", "rel": "self"}, {"href": "http://localhost/nodes/8052ed9f-dcb3-4a9c-934b-dfe87625a3b4/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/8052ed9f-dcb3-4a9c-934b-dfe87625a3b4/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/8052ed9f-dcb3-4a9c-934b-dfe87625a3b4/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/8052ed9f-dcb3-4a9c-934b-dfe87625a3b4/volume", "rel": "self"}, {"href": "http://localhost/nodes/8052ed9f-dcb3-4a9c-934b-dfe87625a3b4/volume", "rel": "bookmark"}]} -ironic.tests.unit.common.test_driver_factory.StorageInterfaceFactoryTestCase.test_build_interface_for_task -ironic.tests.unit.common.test_driver_factory.StorageInterfaceFactoryTestCase.test_build_interface_for_task ... ok +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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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': None, 'ports': [{'href': '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 {'uuid': '65ffd932-d775-4488-b879-0d7964537986', '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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_chassis_uuid_always_in_response +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_chassis_uuid_always_in_response ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_connectors_subresource ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_connectors_subresource ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_rescue_interface_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_rescue_interface_fail ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_string_invalid -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_string_invalid ... ok -ironic.tests.unit.common.test_driver_factory.WarnUnsupportedDriversTestCase.test__warn_if_unsupported_with_supported -ironic.tests.unit.common.test_driver_factory.WarnUnsupportedDriversTestCase.test__warn_if_unsupported_with_supported ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_resource_class -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_resource_class ... ok -ironic.tests.unit.common.test_driver_factory.WarnUnsupportedDriversTestCase.test__warn_if_unsupported_with_unsupported -ironic.tests.unit.common.test_driver_factory.WarnUnsupportedDriversTestCase.test__warn_if_unsupported_with_unsupported ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_015_nodes_node_ident_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_015_nodes_node_ident_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_032_nodes_management_boot_device_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_032_nodes_management_boot_device_put_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_connectors_subresource_node_not_found ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_connectors_subresource_node_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_resource_class_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_resource_class_fail ... ok -ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__config_auth -ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__config_auth ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_portgroup_fields_mode_properties -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_portgroup_fields_mode_properties ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_chassis_uuid_not_found +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_chassis_uuid_not_found ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_connectors_subresource_noid ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_connectors_subresource_noid ... ok -ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__no_auth -ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__no_auth ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_portgroup_fields_mode_properties_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_portgroup_fields_mode_properties_fail ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_with_reason -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_with_reason ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_check_policy -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_check_policy ... ok -ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__token_auth -ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__token_auth ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_check_policy_forbidden -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_check_policy_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_driver_vendor_passthru_async -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_driver_vendor_passthru_async ... ok -ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service_client_already_set -ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service_client_already_set ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_driver_vendor_passthru_sync -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_driver_vendor_passthru_sync ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_033_nodes_management_boot_device_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_033_nodes_management_boot_device_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_016_nodes_node_ident_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_016_nodes_node_ident_get_observer ... ok GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-25ebedf5-c2ce-46ff-9057-d8fd9f123615 +Openstack-Request-Id: req-52d5ff93-7154-4524-b9fa-015d8be1374e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -14259,7 +14447,7 @@ GET: /v1/nodes?sort_key=clean_step {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-2485d11d-40ad-44b0-bc6f-1066f5c9405f +Openstack-Request-Id: req-0fcb7c9a-563e-483b-a909-3fa81d177624 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -14267,7 +14455,7 @@ GET: /v1/nodes?sort_key=traits {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-605bd4da-38e9-4657-b10a-a7329ee06acb +Openstack-Request-Id: req-33f0b9a5-a067-438f-89ca-4e2c8352764e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -14275,23 +14463,23 @@ GET: /v1/nodes?sort_key=resource_class {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-d953cb3e-e114-4840-b63a-7657c5a58ad5 +Openstack-Request-Id: req-c0af7f63-b778-405e-b092-640d78d12f96 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} GET: /v1/nodes?associated=false {} -GOT:{'nodes': [{'uuid': '769b67e5-9fc2-4d1e-bfe2-395d4deda374', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/769b67e5-9fc2-4d1e-bfe2-395d4deda374', 'rel': 'self'}, {'href': 'http://localhost/nodes/769b67e5-9fc2-4d1e-bfe2-395d4deda374', 'rel': 'bookmark'}]}, {'uuid': '51b2800a-787d-48c4-92c3-001e8fcaa4bb', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/51b2800a-787d-48c4-92c3-001e8fcaa4bb', 'rel': 'self'}, {'href': 'http://localhost/nodes/51b2800a-787d-48c4-92c3-001e8fcaa4bb', 'rel': 'bookmark'}]}, {'uuid': 'f272882b-4923-4c47-8e8e-6d56f968bb0d', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/f272882b-4923-4c47-8e8e-6d56f968bb0d', 'rel': 'self'}, {'href': 'http://localhost/nodes/f272882b-4923-4c47-8e8e-6d56f968bb0d', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'b1a4728d-b524-4978-a882-e3576ee6d877', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/b1a4728d-b524-4978-a882-e3576ee6d877', 'rel': 'self'}, {'href': 'http://localhost/nodes/b1a4728d-b524-4978-a882-e3576ee6d877', 'rel': 'bookmark'}]}, {'uuid': 'aaf48254-d215-43a3-83a6-7962790ce845', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/aaf48254-d215-43a3-83a6-7962790ce845', 'rel': 'self'}, {'href': 'http://localhost/nodes/aaf48254-d215-43a3-83a6-7962790ce845', 'rel': 'bookmark'}]}, {'uuid': '072b6256-37a0-4604-92aa-b5f4b2281328', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/072b6256-37a0-4604-92aa-b5f4b2281328', 'rel': 'self'}, {'href': 'http://localhost/nodes/072b6256-37a0-4604-92aa-b5f4b2281328', 'rel': 'bookmark'}]}]} GET: /v1/nodes?associated=FALSE {} -GOT:{'nodes': [{'uuid': '769b67e5-9fc2-4d1e-bfe2-395d4deda374', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/769b67e5-9fc2-4d1e-bfe2-395d4deda374', 'rel': 'self'}, {'href': 'http://localhost/nodes/769b67e5-9fc2-4d1e-bfe2-395d4deda374', 'rel': 'bookmark'}]}, {'uuid': '51b2800a-787d-48c4-92c3-001e8fcaa4bb', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/51b2800a-787d-48c4-92c3-001e8fcaa4bb', 'rel': 'self'}, {'href': 'http://localhost/nodes/51b2800a-787d-48c4-92c3-001e8fcaa4bb', 'rel': 'bookmark'}]}, {'uuid': 'f272882b-4923-4c47-8e8e-6d56f968bb0d', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/f272882b-4923-4c47-8e8e-6d56f968bb0d', 'rel': 'self'}, {'href': 'http://localhost/nodes/f272882b-4923-4c47-8e8e-6d56f968bb0d', 'rel': 'bookmark'}]}]} +GOT:{'nodes': [{'uuid': 'b1a4728d-b524-4978-a882-e3576ee6d877', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/b1a4728d-b524-4978-a882-e3576ee6d877', 'rel': 'self'}, {'href': 'http://localhost/nodes/b1a4728d-b524-4978-a882-e3576ee6d877', 'rel': 'bookmark'}]}, {'uuid': 'aaf48254-d215-43a3-83a6-7962790ce845', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/aaf48254-d215-43a3-83a6-7962790ce845', 'rel': 'self'}, {'href': 'http://localhost/nodes/aaf48254-d215-43a3-83a6-7962790ce845', 'rel': 'bookmark'}]}, {'uuid': '072b6256-37a0-4604-92aa-b5f4b2281328', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/072b6256-37a0-4604-92aa-b5f4b2281328', 'rel': 'self'}, {'href': 'http://localhost/nodes/072b6256-37a0-4604-92aa-b5f4b2281328', 'rel': 'bookmark'}]}]} GET: /v1/nodes?associated=False&limit=2 {} -GOT:{'nodes': [{'uuid': 'f66f1714-7f5c-4282-8561-1b8f319bfc72', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/f66f1714-7f5c-4282-8561-1b8f319bfc72', 'rel': 'self'}, {'href': 'http://localhost/nodes/f66f1714-7f5c-4282-8561-1b8f319bfc72', 'rel': 'bookmark'}]}, {'uuid': '46ae6b1a-a55e-4ea4-8481-3e561c8b1ef0', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/46ae6b1a-a55e-4ea4-8481-3e561c8b1ef0', 'rel': 'self'}, {'href': 'http://localhost/nodes/46ae6b1a-a55e-4ea4-8481-3e561c8b1ef0', '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=46ae6b1a-a55e-4ea4-8481-3e561c8b1ef0'} +GOT:{'nodes': [{'uuid': 'c7785d15-9f3f-4f2a-b2fd-f60e7936bb5e', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/c7785d15-9f3f-4f2a-b2fd-f60e7936bb5e', 'rel': 'self'}, {'href': 'http://localhost/nodes/c7785d15-9f3f-4f2a-b2fd-f60e7936bb5e', 'rel': 'bookmark'}]}, {'uuid': '05f2314d-e6a1-4b37-b8ad-5d2cda01c1c2', 'instance_uuid': None, 'maintenance': False, 'power_state': None, 'provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/05f2314d-e6a1-4b37-b8ad-5d2cda01c1c2', 'rel': 'self'}, {'href': 'http://localhost/nodes/05f2314d-e6a1-4b37-b8ad-5d2cda01c1c2', '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=05f2314d-e6a1-4b37-b8ad-5d2cda01c1c2'} GET: /v1/nodes/validate?node=spam {} GOT:{} GET: /v1/nodes/validate?node=spam {} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-8ef8041d-f42f-4cdc-b22b-05dd4e74eaf9 +Openstack-Request-Id: req-ef72817a-e058-4c5d-8f5b-d8522bfa50b8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -14301,13 +14489,13 @@ GET: /v1/nodes/validate?node_uuid=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} GOT:{} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} -GOT:{'connectors': [{'uuid': 'eeca4f7d-2941-4f56-92d5-3025992dfb2a', 'connector_id': 'test-connector_id-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/eeca4f7d-2941-4f56-92d5-3025992dfb2a', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/eeca4f7d-2941-4f56-92d5-3025992dfb2a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'ce50ca1c-e4d5-45dc-a3d4-ebd353b78362', 'connector_id': 'test-connector_id-1', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/ce50ca1c-e4d5-45dc-a3d4-ebd353b78362', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/ce50ca1c-e4d5-45dc-a3d4-ebd353b78362', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GOT:{'connectors': [{'uuid': 'f8e7889b-27a9-45a7-862e-994ed0a0676d', 'connector_id': 'test-connector_id-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/f8e7889b-27a9-45a7-862e-994ed0a0676d', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/f8e7889b-27a9-45a7-862e-994ed0a0676d', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '801c15ba-4f43-4121-89ee-2453524015b0', 'connector_id': 'test-connector_id-1', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/801c15ba-4f43-4121-89ee-2453524015b0', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/801c15ba-4f43-4121-89ee-2453524015b0', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors?limit=1 {} -GOT:{'connectors': [{'uuid': 'eeca4f7d-2941-4f56-92d5-3025992dfb2a', 'connector_id': 'test-connector_id-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/eeca4f7d-2941-4f56-92d5-3025992dfb2a', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/eeca4f7d-2941-4f56-92d5-3025992dfb2a', '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=eeca4f7d-2941-4f56-92d5-3025992dfb2a'} +GOT:{'connectors': [{'uuid': 'f8e7889b-27a9-45a7-862e-994ed0a0676d', 'connector_id': 'test-connector_id-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/f8e7889b-27a9-45a7-862e-994ed0a0676d', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/f8e7889b-27a9-45a7-862e-994ed0a0676d', '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=f8e7889b-27a9-45a7-862e-994ed0a0676d'} GET: /v1/nodes/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/volume/connectors {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-82e70ff4-c231-4a6b-8cf5-7f80844d71dc +Openstack-Request-Id: req-2dafd514-67f0-484f-8a4b-93157e45e96f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -14319,884 +14507,718 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_subresource ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_subresource ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_forbidden_converts_to_imagenotauthed -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_forbidden_converts_to_imagenotauthed ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_get_controller_reserved_names -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_get_controller_reserved_names ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_method_not_specified -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_method_not_specified ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_default_state_enroll +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_default_state_enroll ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_subresource_invalid_api_version ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_subresource_invalid_api_version ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_httpforbidden_converts_to_imagenotauthed -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_httpforbidden_converts_to_imagenotauthed ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_async -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_async ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_httpnotfound_converts_to_imagenotfound -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_httpnotfound_converts_to_imagenotfound ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_034_nodes_management_boot_device_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_034_nodes_management_boot_device_put_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_017_nodes_node_ident_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_017_nodes_node_ident_patch_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_subresource_link ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_subresource_link ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_notfound_converts_to_imagenotfound -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_notfound_converts_to_imagenotfound ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach_byte_to_byte -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach_byte_to_byte ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_file_url -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_file_url ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach_unicode_to_byte -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach_unicode_to_byte ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_018_nodes_node_ident_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_018_nodes_node_ident_patch_member ... ok ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_no_data -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_no_data ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_sync -ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_sync ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_max_length -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_max_length ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource_node_not_found -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource_node_not_found ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_with_retries -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_with_retries ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_passes_through_to_client -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_passes_through_to_client ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource_noid -ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource_noid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_old_api -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_old_api ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_raises_when_image_not_active -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_raises_when_image_not_active ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_custom_fields -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_custom_fields ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_raises_when_no_authtoken_in_the_context -ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_raises_when_no_authtoken_in_the_context ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_config -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_config ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_endpoint_less_than_download_delay -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_endpoint_less_than_download_delay ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_default_limit -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_default_limit ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_multiple_containers -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_multiple_containers ... ok -PATCH: /v1/nodes/4c0a0c2b-5772-453b-a146-d70793f87e1f [{'path': '/protected', 'value': 'YeahNahGood', 'op': 'replace'}] -GOT:Response: 400 Bad Request +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-5a3d3e35-0f21-46c0-98cc-bd2132c67a4a +Location: http://localhost/v1/nodes/65ffd932-d775-4488-b879-0d7964537986 +Openstack-Request-Id: req-a7f24769-8f66-4449-815d-d15fb1b2621e X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/6c393cb7-685e-49b5-bf57-e99a0ce05fe0 [{'path': '/protected', 'value': True, 'op': 'replace'}, {'path': '/protected_reason', 'value': 'reason!', 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "65ffd932-d775-4488-b879-0d7964537986", "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", "cpus": "8", "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/65ffd932-d775-4488-b879-0d7964537986", "rel": "self"}, {"href": "http://localhost/nodes/65ffd932-d775-4488-b879-0d7964537986", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/65ffd932-d775-4488-b879-0d7964537986/ports", "rel": "self"}, {"href": "http://localhost/nodes/65ffd932-d775-4488-b879-0d7964537986/ports", "rel": "bookmark"}]} +GET: /v1/nodes/65ffd932-d775-4488-b879-0d7964537986 {} +GOT:{'uuid': '65ffd932-d775-4488-b879-0d7964537986', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, 'links': [{'href': 'http://localhost/v1/nodes/65ffd932-d775-4488-b879-0d7964537986', 'rel': 'self'}, {'href': 'http://localhost/nodes/65ffd932-d775-4488-b879-0d7964537986', 'rel': 'bookmark'}], 'chassis_uuid': None, 'ports': [{'href': 'http://localhost/v1/nodes/65ffd932-d775-4488-b879-0d7964537986/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/65ffd932-d775-4488-b879-0d7964537986/ports', 'rel': 'bookmark'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-8a8daa2c-febc-481a-a5a9-bd1f51af4a13 +Openstack-Request-Id: req-b4540d05-53aa-4a75-bd3b-08995d3faf6a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.48 -{"uuid": "6c393cb7-685e-49b5-bf57-e99a0ce05fe0", "created_at": "2024-01-06T13:33:12.620906+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", "cpus": "8", "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/6c393cb7-685e-49b5-bf57-e99a0ce05fe0", "rel": "self"}, {"href": "http://localhost/nodes/6c393cb7-685e-49b5-bf57-e99a0ce05fe0", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/6c393cb7-685e-49b5-bf57-e99a0ce05fe0/ports", "rel": "self"}, {"href": "http://localhost/nodes/6c393cb7-685e-49b5-bf57-e99a0ce05fe0/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/6c393cb7-685e-49b5-bf57-e99a0ce05fe0/states", "rel": "self"}, {"href": "http://localhost/nodes/6c393cb7-685e-49b5-bf57-e99a0ce05fe0/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/6c393cb7-685e-49b5-bf57-e99a0ce05fe0/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/6c393cb7-685e-49b5-bf57-e99a0ce05fe0/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/6c393cb7-685e-49b5-bf57-e99a0ce05fe0/volume", "rel": "self"}, {"href": "http://localhost/nodes/6c393cb7-685e-49b5-bf57-e99a0ce05fe0/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/ff3cb5c5-722a-4941-bb1c-1dc394f0cd9c [{'path': '/resource_class', 'value': 'foo', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e could not be found.\", \"debuginfo\": null}"} +POST: /v1/nodes {'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', 'cpus': '8', '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 -Openstack-Request-Id: req-4daaf749-88dd-4c39-a455-03067ba4f526 +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-144d85ab-0edc-42cc-b666-26d544eff13f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.21 -{"uuid": "ff3cb5c5-722a-4941-bb1c-1dc394f0cd9c", "created_at": "2024-01-06T13:33:13.342320+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", "cpus": "8", "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/ff3cb5c5-722a-4941-bb1c-1dc394f0cd9c", "rel": "self"}, {"href": "http://localhost/nodes/ff3cb5c5-722a-4941-bb1c-1dc394f0cd9c", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ff3cb5c5-722a-4941-bb1c-1dc394f0cd9c/ports", "rel": "self"}, {"href": "http://localhost/nodes/ff3cb5c5-722a-4941-bb1c-1dc394f0cd9c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ff3cb5c5-722a-4941-bb1c-1dc394f0cd9c/states", "rel": "self"}, {"href": "http://localhost/nodes/ff3cb5c5-722a-4941-bb1c-1dc394f0cd9c/states", "rel": "bookmark"}]} -PATCH: /v1/nodes/c463cf9a-8e2d-4a75-99de-243cd0298206 [{'path': '/resource_class', 'value': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.11 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:07.400392+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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:07.400392+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_default_state_none +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_default_state_none ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource_node_not_found +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource_node_not_found ... ok +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-beb1a821-bf3c-4869-af35-9309a74c228a +Openstack-Request-Id: req-dae67819-5c15-4a2f-8d2e-eff2606e0992 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.21 -{"uuid": "c463cf9a-8e2d-4a75-99de-243cd0298206", "created_at": "2024-01-06T13:33:14.349036+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", "cpus": "8", "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/c463cf9a-8e2d-4a75-99de-243cd0298206", "rel": "self"}, {"href": "http://localhost/nodes/c463cf9a-8e2d-4a75-99de-243cd0298206", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/c463cf9a-8e2d-4a75-99de-243cd0298206/ports", "rel": "self"}, {"href": "http://localhost/nodes/c463cf9a-8e2d-4a75-99de-243cd0298206/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c463cf9a-8e2d-4a75-99de-243cd0298206/states", "rel": "self"}, {"href": "http://localhost/nodes/c463cf9a-8e2d-4a75-99de-243cd0298206/states", "rel": "bookmark"}]} -PATCH: /v1/nodes/49dff6e8-76e0-4891-a107-47412361d0c0 [{'path': '/resource_class', 'value': 'foo', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fc84a1f0-8a76-4583-bb41-753a7832bce4 +Openstack-Request-Id: req-89b6abc3-9ad6-4c25-b35d-400c26f691ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/27ccbadc-0b1e-4039-969f-11d8fe70786f [{'path': '/resource_class', 'value': 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_too_long -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_too_long ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_no_key_no_exception -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_no_key_no_exception ... ok -GOT:{'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'}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-270a1f7e-b448-4f28-96bc-28d05ae0f79f +Openstack-Request-Id: req-89b6abc3-9ad6-4c25-b35d-400c26f691ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T13:33:13.930165+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/volume/targets {} -GOT:{'targets': [{'uuid': 'a7f11ad8-b4fd-42e8-899b-c28296f7940a', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/a7f11ad8-b4fd-42e8-899b-c28296f7940a', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/a7f11ad8-b4fd-42e8-899b-c28296f7940a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'b3eeee6b-1842-4199-89e3-f53959fc474d', 'boot_index': 1, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/b3eeee6b-1842-4199-89e3-f53959fc474d', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/b3eeee6b-1842-4199-89e3-f53959fc474d', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets?limit=1 {} -GOT:{'targets': [{'uuid': 'a7f11ad8-b4fd-42e8-899b-c28296f7940a', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/a7f11ad8-b4fd-42e8-899b-c28296f7940a', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/a7f11ad8-b4fd-42e8-899b-c28296f7940a', '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=a7f11ad8-b4fd-42e8-899b-c28296f7940a'} -GET: /v1/nodes/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/volume/targets {} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c507be83-148e-4049-a19f-b7894d31d734 +Openstack-Request-Id: req-39671271-9406-44a2-91ea-2f8a20ced8d8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node eeeeeeee-cccc-aaaa-bbbb-cccccccccccc could not be found.\", \"debuginfo\": null}"} -GET: /v1/nodes/volume/targets {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-1fe94d82-4517-4751-8445-a8eccc10c895 +Openstack-Request-Id: req-39671271-9406-44a2-91ea-2f8a20ced8d8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_address_already_exist -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_address_already_exist ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url ... ok -GOT:{'node': {'uuid': '9e79eda2-f919-478d-a310-b9e2352a76ad', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/9e79eda2-f919-478d-a310-b9e2352a76ad', 'rel': 'self'}, {'href': 'http://localhost/nodes/9e79eda2-f919-478d-a310-b9e2352a76ad', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': '123456', 'agent_token_required': True}} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=a4d0fb63-3fcf-49a3-8fdc-76ada0433dfa {} -GOT:{'node': {'uuid': 'a4d0fb63-3fcf-49a3-8fdc-76ada0433dfa', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/a4d0fb63-3fcf-49a3-8fdc-76ada0433dfa', 'rel': 'self'}, {'href': 'http://localhost/nodes/a4d0fb63-3fcf-49a3-8fdc-76ada0433dfa', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': '234567890', 'agent_token_required': True}} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e40557b6-a761-424b-a5ff-e9c2565a9321 +Openstack-Request-Id: req-016b5be9-2687-4836-9bb9-c665b2fb225f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -GET: /v1/lookup {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bb3e59ec-618e-450e-ab40-e9219388ce1a +Openstack-Request-Id: req-016b5be9-2687-4836-9bb9-c665b2fb225f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"At least one of 'addresses' and 'node_uuid' parameters is required\", \"debuginfo\": null}"} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5db4d237-5946-4a58-bbb4-ea1ec3f9ae1a +Openstack-Request-Id: req-93d53ea8-18e8-446a-98f3-451ca144deae X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=e3a71a42-f414-4643-809f-fa4cdbe1a27d {} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f7c603db-33c3-4223-ba8f-c40c1ed70311 +Openstack-Request-Id: req-93d53ea8-18e8-446a-98f3-451ca144deae X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -GET: /v1/volume/connectors/?limit=3 {} -GOT:{'connectors': [{'uuid': '685276b4-36e5-44a7-83f1-ca6cf8005674', 'connector_id': 'test-connector_id-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/685276b4-36e5-44a7-83f1-ca6cf8005674', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/685276b4-36e5-44a7-83f1-ca6cf8005674', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '5c36b1b6-eb97-4d46-80d7-54a80755cc53', 'connector_id': 'test-connector_id-1', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/5c36b1b6-eb97-4d46-80d7-54a80755cc53', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/5c36b1b6-eb97-4d46-80d7-54a80755cc53', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '7d8f1124-aa7c-42b4-b706-994c6cf7268c', 'connector_id': 'test-connector_id-2', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/7d8f1124-aa7c-42b4-b706-994c6cf7268c', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/7d8f1124-aa7c-42b4-b706-994c6cf7268c', '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=7d8f1124-aa7c-42b4-b706-994c6cf7268c'} -GET: /v1/volume/connectors?fields=uuid,extra {} -GOT:{'connectors': [{'uuid': '452640da-0ba0-4e9f-b8e2-c452790cac5f', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/connectors/452640da-0ba0-4e9f-b8e2-c452790cac5f', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/452640da-0ba0-4e9f-b8e2-c452790cac5f', 'rel': 'bookmark'}]}, {'uuid': '916985a3-3354-479b-a113-ace3b7a8b792', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/connectors/916985a3-3354-479b-a113-ace3b7a8b792', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/916985a3-3354-479b-a113-ace3b7a8b792', 'rel': 'bookmark'}]}, {'uuid': '704c1262-86c1-4eb3-8163-8a817874dc38', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/connectors/704c1262-86c1-4eb3-8163-8a817874dc38', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/704c1262-86c1-4eb3-8163-8a817874dc38', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/volume/connectors?sort_key=id&sort_dir=asc&fields=uuid,extra&limit=3&marker=704c1262-86c1-4eb3-8163-8a817874dc38'} -GET: /v1/volume/connectors {} -GOT:{'connectors': [{'uuid': '33c5f6c2-c1d3-4c57-8872-5849044f458e', 'connector_id': 'test-connector_id-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/33c5f6c2-c1d3-4c57-8872-5849044f458e', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/33c5f6c2-c1d3-4c57-8872-5849044f458e', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '70916832-d3e0-4dcf-86f1-81d722c47947', 'connector_id': 'test-connector_id-1', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/70916832-d3e0-4dcf-86f1-81d722c47947', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/70916832-d3e0-4dcf-86f1-81d722c47947', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '43182574-1d34-49e4-9e86-5b59753d9308', 'connector_id': 'test-connector_id-2', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/43182574-1d34-49e4-9e86-5b59753d9308', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/43182574-1d34-49e4-9e86-5b59753d9308', '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=43182574-1d34-49e4-9e86-5b59753d9308'} -GET: /v1/volume/connectors?detail=True&limit=3 {} -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_detail -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_detail ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_address_normalized -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_address_normalized ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected_with_prefix -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected_with_prefix ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected_with_prefix_underscore -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected_with_prefix_underscore ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_against_single -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_against_single ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_endpoint_detected -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_endpoint_detected ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_doesnt_contain_id -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_doesnt_contain_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_old_api -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_old_api ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_endpoint_with_suffix -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_endpoint_with_suffix ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_and_fields -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_and_fields ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_invalid_image_info -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_invalid_image_info ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_error -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_error ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_by_node_name_ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_by_node_name_ok ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_key_detected -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_key_detected ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_reason -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_reason ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_multiple_containers -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_multiple_containers ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_false -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_false ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_no_key_detected -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_no_key_detected ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_generate_uuid -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_generate_uuid ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_url_bad_no_info -ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_url_bad_no_info ... ok -ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_automatic_retry -ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_automatic_retry ... ok -GOT:Response: 409 Conflict +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-aa35c037-3562-41c9-9090-e01a7edaa018 +Openstack-Request-Id: req-c9feed7f-359a-41a2-b798-7d72dc037489 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A port with MAC address AA:AA:AA:11:22:33 already exists.\", \"debuginfo\": null}"} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-b85cea64-a22c-4262-808f-b00568e96482 +Openstack-Request-Id: req-c9feed7f-359a-41a2-b798-7d72dc037489 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:16.698254+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:33:16.698254+00:00', 'updated_at': None, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-f95fd38e-5eff-445e-bfea-235349208053 +Openstack-Request-Id: req-c97703ed-79c0-4774-9484-5b9f8689e74d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:17.256412+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:33:17.256412+00:00', 'updated_at': None, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a817c1e4-8b18-4648-a779-b35cac18251d +Openstack-Request-Id: req-c97703ed-79c0-4774-9484-5b9f8689e74d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 403 Forbidden Content-Type: application/json -Location: http://localhost/v1/ports/ac5331e0-8064-4dc2-ab11-0f80071c7330 -Openstack-Request-Id: req-9e84fcfe-8033-423b-a25f-104830cb9d44 +Openstack-Request-Id: req-f7e8ad5a-23e3-4c82-8244-d9fb14611094 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "ac5331e0-8064-4dc2-ab11-0f80071c7330", "created_at": "2024-01-06T13:33:18.419381+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, "links": [{"href": "http://localhost/v1/ports/ac5331e0-8064-4dc2-ab11-0f80071c7330", "rel": "self"}, {"href": "http://localhost/ports/ac5331e0-8064-4dc2-ab11-0f80071c7330", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -GET: /v1/ports/ac5331e0-8064-4dc2-ab11-0f80071c7330 {} -GOT:{'uuid': 'ac5331e0-8064-4dc2-ab11-0f80071c7330', 'created_at': '2024-01-06T13:33:18.419381+00:00', 'updated_at': None, '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': None, 'pxe_enabled': True, 'links': [{'href': 'http://localhost/v1/ports/ac5331e0-8064-4dc2-ab11-0f80071c7330', 'rel': 'self'}, {'href': 'http://localhost/ports/ac5331e0-8064-4dc2-ab11-0f80071c7330', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_addr_format -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_addr_format ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_node_uuid_format -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_node_uuid_format ... ok -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bf6ef447-0589-4810-9d90-3801d9d85473 +Openstack-Request-Id: req-f7e8ad5a-23e3-4c82-8244-d9fb14611094 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/d3d019da-9e4d-4990-a513-722b5a76691c [{'path': '/retired', 'value': True, 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-49924a06-08b5-45b1-98e2-c4adb1a29789 +Openstack-Request-Id: req-2690626c-dedb-427f-9ebd-3e6a396a253c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.61 -{"uuid": "d3d019da-9e4d-4990-a513-722b5a76691c", "created_at": "2024-01-06T13:33:16.532937+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", "cpus": "8", "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/d3d019da-9e4d-4990-a513-722b5a76691c", "rel": "self"}, {"href": "http://localhost/nodes/d3d019da-9e4d-4990-a513-722b5a76691c", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d3d019da-9e4d-4990-a513-722b5a76691c/ports", "rel": "self"}, {"href": "http://localhost/nodes/d3d019da-9e4d-4990-a513-722b5a76691c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/d3d019da-9e4d-4990-a513-722b5a76691c/states", "rel": "self"}, {"href": "http://localhost/nodes/d3d019da-9e4d-4990-a513-722b5a76691c/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/d3d019da-9e4d-4990-a513-722b5a76691c/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/d3d019da-9e4d-4990-a513-722b5a76691c/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/d3d019da-9e4d-4990-a513-722b5a76691c/volume", "rel": "self"}, {"href": "http://localhost/nodes/d3d019da-9e4d-4990-a513-722b5a76691c/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/ac5a05d3-2af2-4506-884f-14b1aa702923 [{'path': '/retired', 'value': True, 'op': 'replace'}] -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_035_nodes_management_boot_device_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_035_nodes_management_boot_device_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_019_nodes_node_ident_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_019_nodes_node_ident_patch_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource_noid +ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource_noid ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_036_nodes_management_boot_device_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_036_nodes_management_boot_device_get_member ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-d7fd46bf-3e4c-4772-ad91-9299f9038051 +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-5b0a6cad-bc09-4d22-93a9-9de76a3ed218 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/48155bfb-c672-4eb4-890d-eb060985c453 [{'path': '/retired_reason', 'value': 'a better reason', 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.10 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:07.714606+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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:07.714606+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:07.714606+00:00', 'updated_at': None, 'clean_step': {}, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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 -Openstack-Request-Id: req-9a069893-0c40-46ad-bb29-091b16036264 +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-5d62c6e1-734f-419e-adb7-ab9e5b01afb0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.61 -{"uuid": "48155bfb-c672-4eb4-890d-eb060985c453", "created_at": "2024-01-06T13:33:17.787270+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", "cpus": "8", "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/48155bfb-c672-4eb4-890d-eb060985c453", "rel": "self"}, {"href": "http://localhost/nodes/48155bfb-c672-4eb4-890d-eb060985c453", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/48155bfb-c672-4eb4-890d-eb060985c453/ports", "rel": "self"}, {"href": "http://localhost/nodes/48155bfb-c672-4eb4-890d-eb060985c453/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/48155bfb-c672-4eb4-890d-eb060985c453/states", "rel": "self"}, {"href": "http://localhost/nodes/48155bfb-c672-4eb4-890d-eb060985c453/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/48155bfb-c672-4eb4-890d-eb060985c453/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/48155bfb-c672-4eb4-890d-eb060985c453/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/48155bfb-c672-4eb4-890d-eb060985c453/volume", "rel": "self"}, {"href": "http://localhost/nodes/48155bfb-c672-4eb4-890d-eb060985c453/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/94ae5c80-f237-404f-92d6-c28786f73ca2 [{'op': 'remove', 'path': '/retired'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_remove -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_remove ... ok -ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_driver_not_found -ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_driver_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_invalid_api_version ... ok -ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_hardware_type_success -ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_hardware_type_success ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_empty_string -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_empty_string ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_with_reason -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_with_reason ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_sepecified_by_path -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_sepecified_by_path ... ok -ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_hardware_type_success_groups -ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_hardware_type_success_groups ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_non_text -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_non_text ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_empty -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_empty ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_state -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_state ... ok -ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_reset_interval -ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_reset_interval ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_too_long -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_too_long ... ok -ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_uncached -ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_uncached ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_all_by_node_name_ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_all_by_node_name_ok ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_false_connerror -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_false_connerror ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_keys -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_keys ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_collection_custom_fields -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_collection_custom_fields ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_false_ioerror -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_false_ioerror ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_true_ioerror -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_true_ioerror ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_collection_pagination_no_uuid -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_collection_pagination_no_uuid ... ok -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:08.133818+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, "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", "cpus": "8", "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, "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 {} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_description +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_description ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_020_nodes_node_ident_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_020_nodes_node_ident_delete_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_cleanwait +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_cleanwait ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_037_nodes_management_boot_device_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_037_nodes_management_boot_device_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_invalid_state +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_invalid_state ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_021_nodes_node_ident_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_021_nodes_node_ident_delete_member ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:08.133818+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, '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': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': None, 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'description': '1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678last weed', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_description_oversize +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_description_oversize ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_active_fails +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_active_fails ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_038_nodes_management_boot_device_supported_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_038_nodes_management_boot_device_supported_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_022_nodes_node_ident_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_022_nodes_node_ident_delete_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_adoptfail +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_adoptfail ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_doesnt_contain_id +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_doesnt_contain_id ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_039_nodes_management_boot_device_supported_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_039_nodes_management_boot_device_supported_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_manage +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_manage ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_023_nodes_validate_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_023_nodes_validate_get_admin ... ok +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-260f3d13-1593-4654-be73-a5f8cbd9de3c +Openstack-Request-Id: req-eec547b2-0715-4080-a969-9236b3388153 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.61 -{"uuid": "94ae5c80-f237-404f-92d6-c28786f73ca2", "created_at": "2024-01-06T13:33:18.555222+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", "cpus": "8", "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/94ae5c80-f237-404f-92d6-c28786f73ca2", "rel": "self"}, {"href": "http://localhost/nodes/94ae5c80-f237-404f-92d6-c28786f73ca2", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/94ae5c80-f237-404f-92d6-c28786f73ca2/ports", "rel": "self"}, {"href": "http://localhost/nodes/94ae5c80-f237-404f-92d6-c28786f73ca2/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/94ae5c80-f237-404f-92d6-c28786f73ca2/states", "rel": "self"}, {"href": "http://localhost/nodes/94ae5c80-f237-404f-92d6-c28786f73ca2/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/94ae5c80-f237-404f-92d6-c28786f73ca2/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/94ae5c80-f237-404f-92d6-c28786f73ca2/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/94ae5c80-f237-404f-92d6-c28786f73ca2/volume", "rel": "self"}, {"href": "http://localhost/nodes/94ae5c80-f237-404f-92d6-c28786f73ca2/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/a4af5d33-a5e4-486e-adfe-8a6d9d892caa [{'path': '/retired', 'value': True, 'op': 'replace'}, {'path': '/retired_reason', 'value': 'a better reason', 'op': 'replace'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for node: '1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678last weed' is too long\", \"debuginfo\": null}"} +POST: /v1/nodes {'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', 'cpus': '8', '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 -Openstack-Request-Id: req-fa2a575c-15dd-44da-bbbf-07d959e9cfd6 +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-f1d241ef-270b-4e3a-a0ee-2b27abbec3ee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.61 -{"uuid": "a4af5d33-a5e4-486e-adfe-8a6d9d892caa", "created_at": "2024-01-06T13:33:19.370640+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", "cpus": "8", "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/a4af5d33-a5e4-486e-adfe-8a6d9d892caa", "rel": "self"}, {"href": "http://localhost/nodes/a4af5d33-a5e4-486e-adfe-8a6d9d892caa", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/a4af5d33-a5e4-486e-adfe-8a6d9d892caa/ports", "rel": "self"}, {"href": "http://localhost/nodes/a4af5d33-a5e4-486e-adfe-8a6d9d892caa/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/a4af5d33-a5e4-486e-adfe-8a6d9d892caa/states", "rel": "self"}, {"href": "http://localhost/nodes/a4af5d33-a5e4-486e-adfe-8a6d9d892caa/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/a4af5d33-a5e4-486e-adfe-8a6d9d892caa/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/a4af5d33-a5e4-486e-adfe-8a6d9d892caa/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/a4af5d33-a5e4-486e-adfe-8a6d9d892caa/volume", "rel": "self"}, {"href": "http://localhost/nodes/a4af5d33-a5e4-486e-adfe-8a6d9d892caa/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'power_state': 'new state'}] +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:08.828612+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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:08.828612+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {'foo': 123}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} +GOT:{'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'}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-3536d932-77f8-4297-9402-75e0f5ac314c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:07.655099+00:00', 'updated_at': None, 'boot_interface': None, 'clean_step': {}, 'console_enabled': False, 'console_interface': None, 'deploy_interface': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {'private_state': 'secret value'}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': None, 'name': None, 'network_interface': None, 'power_interface': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': None, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'vendor_interface': None, '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': None, 'ports': [{'href': 'http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports', 'rel': 'bookmark'}], 'states': [{'href': '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/volume/targets {} +GOT:{'targets': [{'uuid': '587a9921-9248-4b35-9dfd-e2e419a015c9', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/587a9921-9248-4b35-9dfd-e2e419a015c9', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/587a9921-9248-4b35-9dfd-e2e419a015c9', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '765a8be7-ff1e-417a-8601-d8fd1ff49695', 'boot_index': 1, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/765a8be7-ff1e-417a-8601-d8fd1ff49695', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/765a8be7-ff1e-417a-8601-d8fd1ff49695', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets?limit=1 {} +GOT:{'targets': [{'uuid': '587a9921-9248-4b35-9dfd-e2e419a015c9', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/587a9921-9248-4b35-9dfd-e2e419a015c9', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/587a9921-9248-4b35-9dfd-e2e419a015c9', '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=587a9921-9248-4b35-9dfd-e2e419a015c9'} +GET: /v1/nodes/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/volume/targets {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-7aa1269c-c4b8-4c86-8967-a8eb66816915 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node eeeeeeee-cccc-aaaa-bbbb-cccccccccccc could not be found.\", \"debuginfo\": null}"} +GET: /v1/nodes/volume/targets {} +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'abort'} +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-af1c7620-4ee6-4eff-81c5-29ac86592154 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.13 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'abort'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d47cb0e9-d9b6-44df-b70d-a118631a2efc +Openstack-Request-Id: req-9b174613-503d-49ee-bacc-23936d122c47 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/1a6dcf1f-1617-4619-9418-bf6b4571b7a2 [{'path': '/storage_interface', 'value': 'cinder', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_storage_interface -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_storage_interface ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_missing_mandatory -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_missing_mandatory ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_true_oserror -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_true_oserror ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_custom_fields_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_custom_fields_invalid_api_version ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_custom_timeout -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_custom_timeout ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_storage_interface_old_api -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_storage_interface_old_api ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_missing_optional -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_missing_optional ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_http_scheme -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_http_scheme ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_custom_fields_invalid_fields -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_custom_fields_invalid_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_traits -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_traits ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_false -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_false ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_switch_id_bad_mac -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_switch_id_bad_mac ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_path -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_path ... ok -GOT:{'connectors': [{'uuid': 'c57fa4fe-77a5-4b91-baf1-3683aed20138', 'created_at': '2024-01-06T13:33:16.314347+00:00', 'updated_at': None, 'connector_id': 'test-connector_id-0', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/c57fa4fe-77a5-4b91-baf1-3683aed20138', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/c57fa4fe-77a5-4b91-baf1-3683aed20138', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'd37314e5-d948-4c11-971c-803a75fed8fe', 'created_at': '2024-01-06T13:33:16.327182+00:00', 'updated_at': None, 'connector_id': 'test-connector_id-1', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/d37314e5-d948-4c11-971c-803a75fed8fe', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/d37314e5-d948-4c11-971c-803a75fed8fe', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '420ac4bd-fa53-40fd-b106-3d758a1122f1', 'created_at': '2024-01-06T13:33:16.339673+00:00', 'updated_at': None, 'connector_id': 'test-connector_id-2', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/420ac4bd-fa53-40fd-b106-3d758a1122f1', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/420ac4bd-fa53-40fd-b106-3d758a1122f1', '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=420ac4bd-fa53-40fd-b106-3d758a1122f1'} -GET: /v1/volume/connectors?detail=True {} -GOT:{'connectors': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:33:16.810153+00:00', 'updated_at': None, '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?detail=True {} +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}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'adopt'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-60e4e87a-9c31-435a-980c-8137053bb5b7 +Openstack-Request-Id: req-f09546b0-a8fd-4623-ab24-697d1ed518b1 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'adopt'} +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-2c4260f5-e9cf-4252-88a2-24f8f6e284af +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.17 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'adopt'} +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-73547499-a944-4601-a0ee-d49b2f75bf68 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.17 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'adopt'} +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_raises_error_before_1_17 +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_raises_error_before_1_17 ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_network_interface +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_network_interface ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_040_nodes_management_boot_device_supported_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_040_nodes_management_boot_device_supported_get_observer ... ok +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-d871b7c5-80ab-4a4a-9995-fa8c5fb87c60 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: detail\", \"debuginfo\": null}"} -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?detail=True&fields=connector_id,extra {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-08465880-db05-461e-b01a-79c85ed7adca +Openstack-Request-Id: req-981d4f72-27fd-4c7a-a316-76f85727f533 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: detail\", \"debuginfo\": null}"} -GET: /v1/volume/connectors?detail=True&node=test-node {} -GOT:{'connectors': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:33:17.830586+00:00', 'updated_at': None, '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?detail=False {} -GOT:{'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'}]} -GET: /v1/volume/connectors?detail=True {} -GOT:Response: 404 Not Found +{"nodes": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/volume/connectors/detail {} -GOT:Response: 400 Bad Request +Openstack-Request-Id: req-981d4f72-27fd-4c7a-a316-76f85727f533 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"nodes": []} +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-81a2806a-c873-435c-b16a-a1ae4fef8152 +Openstack-Request-Id: req-f42f74ff-90bb-459a-9f34-e4c5816fd87f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for connector_uuid: detail\", \"debuginfo\": null}"} -GET: /v1/volume/connectors {} -GOT:{'connectors': []} -GET: /v1/volume/connectors?node=test-node {} -GOT:{'connectors': [{'uuid': '69eea9a5-ae8f-4761-8679-7dcccd40477d', 'connector_id': 'test-value-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/69eea9a5-ae8f-4761-8679-7dcccd40477d', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/69eea9a5-ae8f-4761-8679-7dcccd40477d', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '1217f070-3197-4719-a812-80a4009bd9e3', 'connector_id': 'test-value-1', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/1217f070-3197-4719-a812-80a4009bd9e3', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/1217f070-3197-4719-a812-80a4009bd9e3', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '5615b048-415f-4e6d-bfbf-1cdb31f1931c', 'connector_id': 'test-value-2', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/5615b048-415f-4e6d-bfbf-1cdb31f1931c', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/5615b048-415f-4e6d-bfbf-1cdb31f1931c', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/volume/connectors?fields=uuid,extra {} -GOT:{'connectors': [{'uuid': 'ec57836c-2bba-457b-baa4-faa28c865846', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/connectors/ec57836c-2bba-457b-baa4-faa28c865846', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/ec57836c-2bba-457b-baa4-faa28c865846', 'rel': 'bookmark'}]}, {'uuid': '326e3ae6-e2da-46c1-94a5-8b2d2bb72550', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/connectors/326e3ae6-e2da-46c1-94a5-8b2d2bb72550', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/326e3ae6-e2da-46c1-94a5-8b2d2bb72550', 'rel': 'bookmark'}]}, {'uuid': 'ef7e7787-ff38-4c14-b8e2-3141eb260e27', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/connectors/ef7e7787-ff38-4c14-b8e2-3141eb260e27', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/ef7e7787-ff38-4c14-b8e2-3141eb260e27', 'rel': 'bookmark'}]}]} -GET: /v1/volume/connectors?fields=connector_id&limit=2 {} -GOT:{'connectors': [{'connector_id': 'test-connector_id-0', 'links': [{'href': 'http://localhost/v1/volume/connectors/be449a04-b31b-48a6-89bd-ab7cc26107e5', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/be449a04-b31b-48a6-89bd-ab7cc26107e5', 'rel': 'bookmark'}]}, {'connector_id': 'test-connector_id-1', 'links': [{'href': 'http://localhost/v1/volume/connectors/98074da8-dd4b-4890-bd0a-3facad50675f', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/98074da8-dd4b-4890-bd0a-3facad50675f', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/volume/connectors?sort_key=id&sort_dir=asc&fields=connector_id&limit=2&marker=98074da8-dd4b-4890-bd0a-3facad50675f'} -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,extra {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,spongebob {} -GOT:Response: 400 Bad Request +Openstack-Request-Id: req-d49c34fb-2753-4e3d-a90b-78e14d10cb52 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-07f959d4-7931-4119-8936-2579c3ad28db +Openstack-Request-Id: req-8ed3f36c-dce1-4882-b195-98ea25040242 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_true -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_true ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one_custom_fields -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one_custom_fields ... ok -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7a4bd5d4-3425-4743-9e9e-d22bd06b2ad1 +Openstack-Request-Id: req-acecb8a5-ca17-40e8-b3c1-55c006df7c81 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/ports {'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, 'node_uuid': 'invalid-format', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8a2a7345-8a13-4ea7-a318-3780cd61f947 +Openstack-Request-Id: req-d1eec012-686a-4ccb-8e63-24ba2ebea115 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/ports {'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': '', 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-018bab42-4186-4b45-a681-7def6e886d5d +Openstack-Request-Id: req-7939b72d-f701-402b-a57d-e0fa854ea09e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A non-empty value is required when setting physical_network\", \"debuginfo\": null}"} -POST: /v1/ports {'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': 1234, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ff0f3178-f12e-4c24-93f2-efd8de014e2b +Openstack-Request-Id: req-811a94c8-ce7f-4054-a0da-1e17d7a5fde4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for port: 1234 is not of type 'string', 'null'\", \"debuginfo\": null}"} -POST: /v1/ports {'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': 'ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp', 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cd38b671-16ca-4828-b034-517c7b5e0b00 +Openstack-Request-Id: req-b427220d-7747-4c36-9f5e-a796c35f4568 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for port: 'ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp' is too long\", \"debuginfo\": null}"} -POST: /v1/ports {'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': 'Ethernet1/15', 'switch_info': 'value3'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-a7585287-bab9-4e38-9ef4-84ce3717e1cb +Openstack-Request-Id: req-088adb69-a9da-4789-9080-1693c0350bf3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:20.662368+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/ports {'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', 'switch_info': 'fooswitch'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7a562f87-cee4-4385-ad65-3a2374be9c63 +Openstack-Request-Id: req-a16f42da-95de-4a43-b306-1b94ebbead74 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -POST: /v1/ports {'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': 'Ethernet1/15'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-f32d500d-762f-499c-a631-f1e59a73f447 +Openstack-Request-Id: req-64448775-8d47-42f8-99e4-ffc38aeaf270 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:21.567991+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8b8cc88a-45bb-4c6a-8976-6b7283dcf543 +Openstack-Request-Id: req-8966b2b6-196e-469c-a724-d26a202175e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a MAC address or OpenFlow datapath ID but received zz:zz:zz:zz:zz:zz.\", \"debuginfo\": null}"} -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_min_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_min_api_version ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_true_connerror -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_true_connerror ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_with_reset_interfaces -ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_with_reset_interfaces ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_no_mandatory_field_address -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_no_mandatory_field_address ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_ansi_c -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_ansi_c ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_cache_allowed -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_cache_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_links -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_links ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_no_mandatory_field_node_uuid -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_no_mandatory_field_node_uuid ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_cache_disabled -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_cache_disabled ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_no_content_length -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_no_content_length ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_many -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_many ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_rfc_822 -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_rfc_822 ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_node_uuid_not_found -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_node_uuid_not_found ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_rfc_850 -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_rfc_850 ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_one -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_one ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_custom_timeout -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_custom_timeout ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_error_with_secret_parameter -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_error_with_secret_parameter ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_one_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_one_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_noportgroup -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_noportgroup ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_http_scheme -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_http_scheme ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_cleanwait -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_cleanwait ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_path_forbidden -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_path_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_sort_key -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_sort_key ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_path_redirected -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_path_redirected ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_portgroup_nostandalone_ports -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_portgroup_nostandalone_ports ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_invalid_state -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_invalid_state ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_connect_error -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_connect_error ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_sort_key_invalid -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_sort_key_invalid ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_error -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_error ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_portgroup_standalone_ports -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_portgroup_standalone_ports ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_false -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_false ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-dff73c0f-80cd-4f26-9a2e-cfc6e8713e75 +Openstack-Request-Id: req-ebb94eea-ba19-4d7e-a72f-c80de1e3e25b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1a6dcf1f-1617-4619-9418-bf6b4571b7a2", "created_at": "2024-01-06T13:33:20.525068+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", "cpus": "8", "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/1a6dcf1f-1617-4619-9418-bf6b4571b7a2", "rel": "self"}, {"href": "http://localhost/nodes/1a6dcf1f-1617-4619-9418-bf6b4571b7a2", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1a6dcf1f-1617-4619-9418-bf6b4571b7a2/ports", "rel": "self"}, {"href": "http://localhost/nodes/1a6dcf1f-1617-4619-9418-bf6b4571b7a2/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1a6dcf1f-1617-4619-9418-bf6b4571b7a2/states", "rel": "self"}, {"href": "http://localhost/nodes/1a6dcf1f-1617-4619-9418-bf6b4571b7a2/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1a6dcf1f-1617-4619-9418-bf6b4571b7a2/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1a6dcf1f-1617-4619-9418-bf6b4571b7a2/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1a6dcf1f-1617-4619-9418-bf6b4571b7a2/volume", "rel": "self"}, {"href": "http://localhost/nodes/1a6dcf1f-1617-4619-9418-bf6b4571b7a2/volume", "rel": "bookmark"}]} -PATCH: /v1/nodes/c9ada4b5-dd06-4ebb-8415-4a9fd18ab8df [{'path': '/storage_interface', 'value': 'cinder', 'op': 'add'}] -GOT:Response: 406 Not Acceptable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_024_nodes_validate_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_024_nodes_validate_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_adopting_state +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_adopting_state ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_041_nodes_management_inject_nmi_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_041_nodes_management_inject_nmi_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_025_nodes_validate_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_025_nodes_validate_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_resource_class +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_resource_class ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_adoption_failed_state +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_adoption_failed_state ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_026_nodes_maintenance_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_026_nodes_maintenance_put_admin ... ok +POST: /v1/nodes {'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', 'cpus': '8', '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 -Openstack-Request-Id: req-98579e96-f376-4375-8686-8f5101da8dce +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-3b614130-fd90-4002-9ae3-8b61f346d350 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PATCH: /v1/nodes/4b864fbe-fb45-4e4f-a013-cb29381ec507 [{'path': '/traits', 'value': ['CUSTOM_1'], 'op': 'add'}] -GOT:Response: 400 Bad Request +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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'clean_step': {}, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': 'neutron', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-99bdab1e-12e9-46af-aae3-aa16dc01cb52 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.21 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:09.553037+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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:09.553037+00:00', 'updated_at': None, 'clean_step': {}, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': 'flat', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'class2', 'target_power_state': None, 'target_provision_state': None, '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'}]} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_storage_interface +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_storage_interface ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_042_nodes_management_inject_nmi_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_042_nodes_management_inject_nmi_put_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_managed_state +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_managed_state ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_027_nodes_maintenance_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_027_nodes_maintenance_put_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_bios_older_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_bios_older_soft_ver ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_bios_interface +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_bios_interface ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_bios_valid_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_bios_valid_soft_ver ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_028_nodes_maintenance_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_028_nodes_maintenance_put_observer ... ok +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-71540193-f3b0-47e0-914c-8499c707e72b +Openstack-Request-Id: req-2690626c-dedb-427f-9ebd-3e6a396a253c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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, storage_interface, vendor_interface\", \"debuginfo\": null}"} -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?reset_interfaces=True [{'path': '/driver', 'value': 'ipmi', 'op': 'replace'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-909a267b-a733-46e4-9c40-fd15fe67c700 +Openstack-Request-Id: req-9da7f1af-5a24-40b4-a457-53c4295fca33 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.45 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:22.039475+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", "cpus": "8", "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"}]} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'abort'} -GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-7d3dbd4a-eac6-4c65-8b25-8288d00c5cce +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-9da7f1af-5a24-40b4-a457-53c4295fca33 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.13 - -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'abort'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b3fa4297-9a0f-4f6f-955f-f944e5ca2d3f +Openstack-Request-Id: req-c5e2332c-e5b3-4a1a-9dd0-f66f6224d680 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'adopt'} -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_active_fails -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_active_fails ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_false_error -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_false_error ... ok -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:33:21.970019+00:00', 'updated_at': None, '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?fields=connector_id,extra {} -GOT:{'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'}]} -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/volume/connectors/3537f8e7-710f-493f-ab24-66385e9259e9 {} -GOT:{'uuid': '3537f8e7-710f-493f-ab24-66385e9259e9', 'created_at': '2024-01-06T13:33:22.986630+00:00', 'updated_at': None, 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/3537f8e7-710f-493f-ab24-66385e9259e9', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/3537f8e7-710f-493f-ab24-66385e9259e9', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/volume/connectors/3537f8e7-710f-493f-ab24-66385e9259e9 {} -GOT:{'uuid': '3537f8e7-710f-493f-ab24-66385e9259e9', 'created_at': '2024-01-06T13:33:22.986630+00:00', 'updated_at': None, 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/3537f8e7-710f-493f-ab24-66385e9259e9', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/3537f8e7-710f-493f-ab24-66385e9259e9', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /volume/connectors/3537f8e7-710f-493f-ab24-66385e9259e9 {} -GOT:{'uuid': '3537f8e7-710f-493f-ab24-66385e9259e9', 'created_at': '2024-01-06T13:33:22.986630+00:00', 'updated_at': None, 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/3537f8e7-710f-493f-ab24-66385e9259e9', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/3537f8e7-710f-493f-ab24-66385e9259e9', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/volume/connectors {} -GOT:{'connectors': [{'uuid': '248109b5-f158-45f8-ab31-670393d8ff49', 'connector_id': 'test-connector_id-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/248109b5-f158-45f8-ab31-670393d8ff49', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/248109b5-f158-45f8-ab31-670393d8ff49', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '46bc104b-6056-44fa-a65f-78b367135ddd', 'connector_id': 'test-connector_id-1', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/46bc104b-6056-44fa-a65f-78b367135ddd', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/46bc104b-6056-44fa-a65f-78b367135ddd', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '63f25357-22e6-4eb3-80db-03ba1cdd898d', 'connector_id': 'test-connector_id-2', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/63f25357-22e6-4eb3-80db-03ba1cdd898d', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/63f25357-22e6-4eb3-80db-03ba1cdd898d', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '731b2a72-dbb1-4ba8-8ac9-f03f2082d363', 'connector_id': 'test-connector_id-3', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/731b2a72-dbb1-4ba8-8ac9-f03f2082d363', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/731b2a72-dbb1-4ba8-8ac9-f03f2082d363', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '2e534586-c5cc-44b3-9dce-fbcf3444bb3d', 'connector_id': 'test-connector_id-4', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/2e534586-c5cc-44b3-9dce-fbcf3444bb3d', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/2e534586-c5cc-44b3-9dce-fbcf3444bb3d', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/volume/connectors {} -GOT:{'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'}]} -GET: /v1/volume/connectors {} +Openstack-Request-Id: req-c5e2332c-e5b3-4a1a-9dd0-f66f6224d680 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-37153626-bc29-43bb-86a8-7ef6f2ea29d3 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-37153626-bc29-43bb-86a8-7ef6f2ea29d3 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} GOT:Response: 404 Not Found Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/volume/connectors?sort_key=uuid {} -GOT:{'connectors': [{'uuid': '5e782931-c7e0-4720-900f-fff3d83fc0a6', 'connector_id': 'test-connector_id-2', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/5e782931-c7e0-4720-900f-fff3d83fc0a6', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/5e782931-c7e0-4720-900f-fff3d83fc0a6', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '61f390bc-ed52-4712-8140-e3158106828d', 'connector_id': 'test-connector_id-1', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/61f390bc-ed52-4712-8140-e3158106828d', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/61f390bc-ed52-4712-8140-e3158106828d', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '87a0eb6f-667a-4f5b-8d0b-692358c6573e', 'connector_id': 'test-connector_id-0', 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/87a0eb6f-667a-4f5b-8d0b-692358c6573e', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/87a0eb6f-667a-4f5b-8d0b-692358c6573e', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/volume/connectors?sort_key=foo {} -GOT:Response: 400 Bad Request +Openstack-Request-Id: req-632bdcdb-c781-48d1-8c73-e6539f93b58f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d8f47d68-5cfd-4561-8e21-11d2f14374e9 +Openstack-Request-Id: req-632bdcdb-c781-48d1-8c73-e6539f93b58f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-00030663-bb16-4e08-a71e-4bd44b840240 +Openstack-Request-Id: req-d9055e48-ee68-4df0-a33d-fb99f0ba0243 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value extra is an invalid field for sorting\", \"debuginfo\": null}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo1', 'value': 'bar1', 'op': 'add'}, {'path': '/extra/foo2', 'value': 'bar2', 'op': 'add'}, {'path': '/extra/foo3', 'value': 'bar3', 'op': 'add'}] -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_multi -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_multi ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_os_error -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_os_error ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_adoptfail -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_adoptfail ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_id -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_id ... ok -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'address': '52:54:00:cf:2d:31', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-cbbc7e4a-15f1-4ffb-9e53-65be6f586a17 +Openstack-Request-Id: req-d9055e48-ee68-4df0-a33d-fb99f0ba0243 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:22.437991+00:00", "updated_at": null, "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-5fb0ee8d-e730-40ce-93e7-be2587257661 +Openstack-Request-Id: req-a32fe89e-b9a1-4011-b77a-2aacf905d5c7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for port: 'address' is a required property\", \"debuginfo\": null}"} -POST: /v1/ports {'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, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6c59ae96-fabd-4af1-a2d0-2f6252571c0b +Openstack-Request-Id: req-a32fe89e-b9a1-4011-b77a-2aacf905d5c7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/ports {'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, 'node_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7c3279aa-8a0a-4ab2-9ac3-96c0812a7486 +Openstack-Request-Id: req-a8f95bd7-fc77-4d40-9edd-17fcf8afdf63 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/ports {'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': False, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-6ff10101-da23-461d-9742-258289a52bf0 +Openstack-Request-Id: req-a8f95bd7-fc77-4d40-9edd-17fcf8afdf63 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:24.091189+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -POST: /v1/ports {'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': False, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +GOT:Response: 403 Forbidden Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-084e4db5-7d6c-4e34-87bd-10f448b6b5e8 +Openstack-Request-Id: req-89b1695f-91fb-46ee-9fd0-6e9f0b18ac5d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:24.490361+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/ports {'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': False, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_043_nodes_management_inject_nmi_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_043_nodes_management_inject_nmi_put_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_invalid_request +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_invalid_request ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_044_nodes_states_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_044_nodes_states_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_chassis +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_chassis ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_uefi_older_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_uefi_older_soft_ver ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_029_nodes_maintenance_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_029_nodes_maintenance_delete_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_driver +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_driver ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_045_nodes_states_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_045_nodes_states_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_uefi_valid_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_uefi_valid_soft_ver ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_030_nodes_maintenance_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_030_nodes_maintenance_delete_member ... ok +POST: /v1/nodes {'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', 'cpus': '8', '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/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-f230a733-1c56-4e62-8b2d-4d773cad49bb +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-4f2d5476-fb12-48e5-8c33-1a2c2e9be63d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:24.944699+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_noportgroup -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_noportgroup ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_true -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_true ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_true_error -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_true_error ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_portgroup_nostandalone_ports -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_portgroup_nostandalone_ports ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_manage -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_manage ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_uuid -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_uuid ... ok -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_valid_path -ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_valid_path ... ok -ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_adapter_from_config -ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_adapter_from_config ... ok -ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_auth -ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_auth ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_raises_error_before_1_17 -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_raises_error_before_1_17 ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_portgroup_standalone_ports -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_portgroup_standalone_ports ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_uuid_invalid_type -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_uuid_invalid_type ... ok -ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_auth_fail -ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_auth_fail ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_root -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_root ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_adopting_state -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_adopting_state ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup ... ok -ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_service_auth -ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_service_auth ... ok -ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_session -ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_session ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_root_non_existent -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_root_non_existent ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_different_nodes -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_different_nodes ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_adoption_failed_state -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_adoption_failed_state ... ok -ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_excludes_None -ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_excludes_None ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_mandatory_field -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_mandatory_field ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_old_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_managed_state -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_managed_state ... ok -ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_multiple_ports -ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_multiple_ports ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_uuid_not_found -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_uuid_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_bios_older_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_bios_older_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_multi -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_multi ... ok -ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_no_ports -ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_no_ports ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_bios_valid_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_bios_valid_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_uuid_not_found_old_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_uuid_not_found_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_node_id -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_node_id ... ok -ironic.tests.unit.common.test_network.GetPortsByPortgroupIdTestCase.test_ports_by_portgroup_id -ironic.tests.unit.common.test_network.GetPortsByPortgroupIdTestCase.test_ports_by_portgroup_id ... ok -ironic.tests.unit.common.test_network.GetPortsByPortgroupIdTestCase.test_ports_by_portgroup_id_empty -ironic.tests.unit.common.test_network.GetPortsByPortgroupIdTestCase.test_ports_by_portgroup_id_empty ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_non_existent_property_fail -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_non_existent_property_fail ... ok +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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'cinder', 'target_power_state': None, 'target_provision_state': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-5ac6c5b9-adf9-405e-b70e-619f22475769 +Openstack-Request-Id: req-43356613-fb32-4d78-ae70-7d27db859fe6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'adopt'} -GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-a2cc4b2d-ad99-4c54-93f5-6d36a6c2e897 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +POST: /v1/nodes {'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', 'cpus': '8', '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-91d427ae-ee60-48be-ba02-333e8f668bbf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.17 - -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'adopt'} -GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-bc7182ae-021f-4b9d-a905-9a87af47114f +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}"} +POST: /v1/nodes {'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', 'cpus': '8', '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-33976d2e-69da-4233-8664-f573bb2fb4ee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.17 - -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'adopt'} +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Fake Error\", \"debuginfo\": null}"} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_network_interface +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_network_interface ... ok GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-1f780120-3e25-4f31-8c3b-3eecf4bfe789 +Openstack-Request-Id: req-2817b686-df49-49e3-b088-8bc9fd870695 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.16 @@ -15204,7 +15226,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-0775a00d-655d-440f-8aa2-00219f482fce +Openstack-Request-Id: req-ac0ad023-4b22-4ace-aae9-c13f093e5cb6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -15212,7 +15234,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rebuild'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-4e242e9d-0076-4fd9-bc2f-0d3664d01aa9 +Openstack-Request-Id: req-414d4774-42af-4311-af36-7d8def6ee8c3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -15220,7 +15242,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deleted'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-e3a31f42-f95e-4853-ab1d-579f3cc1a5b2 +Openstack-Request-Id: req-e886b90e-7be7-47b6-8ba4-735e3520767b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -15228,7 +15250,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-8585ae63-c7cf-4119-9f83-be3195e5d742 +Openstack-Request-Id: req-0fd66127-1246-49f9-85cb-27569c134ab8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -15236,7 +15258,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rebuild'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-a2f4b13f-6457-443b-bad5-fb43defed36e +Openstack-Request-Id: req-aeb22afc-affb-4f7b-b290-da3cae32b8d9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -15244,7 +15266,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deleted'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-7952da8e-5a1c-4b01-b1c7-4116f5f2e278 +Openstack-Request-Id: req-09e5f473-8e3a-4fcd-afad-8553bae850a8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -15252,7 +15274,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d347c171-577b-467e-b141-e8b75817acfb +Openstack-Request-Id: req-e73c5d9a-ead2-4bf7-b5de-db0bc281b38d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -15260,7 +15282,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-ac48116d-c76f-4a3d-89db-7f08142dc59e +Openstack-Request-Id: req-e6d4ae2b-0eb0-4245-941a-12b813e80694 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -15268,7 +15290,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-59875c15-1386-4582-a9aa-29cdec95a586 +Openstack-Request-Id: req-c2345f42-b2c9-4412-b58e-d89d3d1f61ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -15276,7 +15298,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'bios'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-0d467a94-a6af-4387-8ee1-4b2a1b9b3efe +Openstack-Request-Id: req-ba29fd55-b720-45f2-ae9e-48c3dca91005 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 @@ -15284,551 +15306,453 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'bios'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-77b23489-d662-4fb9-917d-e7babf633622 +Openstack-Request-Id: req-252ba4b7-2fd4-4525-99c2-7c4ccbf58975 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'unsupported-efi'} -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_invalid_request -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_invalid_request ... ok -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-919c45f1-043a-48e5-85c1-15b470562f86 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:25.366747+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 409 Conflict +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-a140f275-8261-4ace-a985-9082d8bea8b3 +Openstack-Request-Id: req-1c85d8ec-59ed-4a99-8339-6f2024a4c4e3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +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}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-bf6d779b-e596-479c-b01b-090a06892cbc +Openstack-Request-Id: req-ec35b8a5-31a3-4adf-b387-4fc0833414f3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:26.406671+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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-3f722a44-694c-452e-86ea-8040f514ffd8 +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}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-f4af6bf7-aa5b-4d6f-9326-aa4722d33c1a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:26.832781+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/ports {'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, 'node_uuid': 'fd5b38ef-41dd-45aa-937d-e7daff6a8c8a', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +X-Openstack-Ironic-Api-Version: 1.76 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'clean', 'clean_steps': [{'step': 'upgrade_firmware', 'interface': 'deploy'}]} +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_check_steps_fail +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_check_steps_fail ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_storage_interface +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_storage_interface ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_046_nodes_states_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_046_nodes_states_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_031_nodes_maintenance_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_031_nodes_maintenance_delete_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_disable_ramdisk +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_disable_ramdisk ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_disable_ramdisk_old_api +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_disable_ramdisk_old_api ... ok +POST: /v1/nodes {'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', 'cpus': '8', '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-e70de2e9-28ed-4cb3-82ba-257e11597534 +Openstack-Request-Id: req-d1336ba4-6143-4f94-beb8-ff7e03a539f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fd5b38ef-41dd-45aa-937d-e7daff6a8c8a could not be found.\", \"debuginfo\": null}"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 406 Not Acceptable -Content-Type: application/json -Openstack-Request-Id: req-87181f24-2879-4327-ab41-cb1cba02f316 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'} +{"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}"} +POST: /v1/nodes {'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', 'cpus': '8', '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-4ee72781-c996-4ef2-92af-507baf6f8f6a +Openstack-Request-Id: req-13be88a4-0915-4aca-a0e1-66fca4b57e7e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e could not be found.\", \"debuginfo\": null}"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'} -GOT:Response: 406 Not Acceptable -Content-Type: application/json -Openstack-Request-Id: req-7942b18d-94fd-4b33-8b19-d4f08ba8ca2f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_some_invalid_local_link_connection_key -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_some_invalid_local_link_connection_key ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_uefi_older_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_uefi_older_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_uuid -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_uuid ... ok -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_cleaning -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_cleaning ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_valid_extra -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_valid_extra ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_uefi_valid_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_uefi_valid_soft_ver ... ok -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_provisioning -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_provisioning ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_nopxe_noportgroup -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_nopxe_noportgroup ... ok -GOT:Response: 200 OK +{"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}"} +POST: /v1/nodes {'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', 'cpus': '8', '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 -Openstack-Request-Id: req-872b8b1b-3217-48ce-94d9-946e46d354b4 +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-e03d4306-97cf-4233-8c34-165c3a3b4d64 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:25.055339+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"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'value': '1', 'op': 'add'}] -GOT:Response: 400 Bad Request +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:11.303398+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": "project", "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", "cpus": "8", "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, "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 {} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_lessee +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_lessee ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_032_nodes_management_boot_device_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_032_nodes_management_boot_device_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_047_nodes_states_power_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_047_nodes_states_power_put_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_no_cleansteps +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_no_cleansteps ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_lessee_old_api_version +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_lessee_old_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_033_nodes_management_boot_device_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_033_nodes_management_boot_device_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_048_nodes_states_power_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_048_nodes_states_power_put_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_name_empty_invalid +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_name_empty_invalid ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_034_nodes_management_boot_device_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_034_nodes_management_boot_device_put_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_049_nodes_states_power_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_049_nodes_states_power_put_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_035_nodes_management_boot_device_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_035_nodes_management_boot_device_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_050_nodes_states_boot_mode_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_050_nodes_states_boot_mode_put_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi_not_allowed +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi_not_allowed ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_036_nodes_management_boot_device_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_036_nodes_management_boot_device_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi_not_supported +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi_not_supported ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_name_empty_not_acceptable +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_name_empty_not_acceptable ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_abort_accepted_after_1_41 +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_abort_accepted_after_1_41 ... ok +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0794c982-d077-4452-a016-e657df9ee5ca +Openstack-Request-Id: req-89b1695f-91fb-46ee-9fd0-6e9f0b18ac5d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9df84bb1-15be-475a-b88f-846ecc099e44 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:25.806580+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"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': 123, 'op': 'add'}] -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-eb24ad16-62f7-4926-be99-d847f3cbba6f +Openstack-Request-Id: req-3c62d8d6-cd6c-4f3c-8edd-5df31bf19152 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a UUID for node_uuid, but received 123.\", \"debuginfo\": null}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/connector_id', 'value': 'test-connector-id-123', 'op': 'add'}] -GOT:Response: 200 OK +{"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} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f019b09c-881a-4a02-bfda-64f011c4fa21 +Openstack-Request-Id: req-3c62d8d6-cd6c-4f3c-8edd-5df31bf19152 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:26.683273+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"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 400 Bad Request +{"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} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-93824a90-4b76-4449-b2e0-3b8c2c3d6a65 +Openstack-Request-Id: req-e169d3bf-1de9-4f56-9ebc-e2d9ba456c92 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/value', 'op': 'remove'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1298b6a8-d44e-4f5f-83b8-67ee19f373c7 +Openstack-Request-Id: req-e169d3bf-1de9-4f56-9ebc-e2d9ba456c92 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /value. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo1', 'op': 'remove'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c019e6d9-699b-4873-8f24-31c035cb81cc +Openstack-Request-Id: req-866231db-9d1b-4d0e-aab3-c0e7247c8a26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:27.878707+00:00", "updated_at": "2024-01-06T13:33:27.910296+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 [{'path': '/extra', 'op': 'remove'}] -GOT:Response: 200 OK +{"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} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-57cbc77f-8a58-4cac-8047-158265b44a59 +Openstack-Request-Id: req-866231db-9d1b-4d0e-aab3-c0e7247c8a26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:27.878707+00:00", "updated_at": "2024-01-06T13:33:27.910296+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"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'op': 'remove'}] -GOT:Response: 400 Bad Request +{"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} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1b72df5e-d62d-44e5-8383-73140f8b23fe +Openstack-Request-Id: req-f4719944-017d-4ca7-a027-bf802b62bb31 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/non-existent', 'op': 'remove'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-72c960b1-4682-4987-8eb8-a9a25a566d19 +Openstack-Request-Id: req-f4719944-017d-4ca7-a027-bf802b62bb31 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove a non-existent object 'non-existent'\", \"debuginfo\": null}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/uuid', 'op': 'remove'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6b7dbfee-dcc2-44bd-81ed-73e00c16f7d8 +Openstack-Request-Id: req-48291d29-dbcf-4a7e-bae4-ca38a272be94 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/connector_id', 'value': 'test-connector-id-123', 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_connector_id_already_exist -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_connector_id_already_exist ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean ... ok -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_rescuing -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_rescuing ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_invalid_power_state -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_invalid_power_state ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_nopxe_portgroup_standalone_ports -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_nopxe_portgroup_standalone_ports ... ok -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_no_ports_no_portgroups -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_no_ports_no_portgroups ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_check_steps_fail -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_check_steps_fail ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_multi -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_multi ... ok -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_one_port_int_info -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_one_port_int_info ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_noportgroup -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_noportgroup ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_disable_ramdisk -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_disable_ramdisk ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_id -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_id ... ok -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_one_portgroup_int_info -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_one_portgroup_int_info ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_disable_ramdisk_old_api -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_disable_ramdisk_old_api ... ok -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3fac979a-fce7-43ca-a136-8f6353c2dd7c +Openstack-Request-Id: req-48291d29-dbcf-4a7e-bae4-ca38a272be94 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +GOT:Response: 403 Forbidden Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-5125e34c-81f5-40b9-b53d-917acb1197ab +Openstack-Request-Id: req-1f8cfe7c-840d-432e-bc3c-a67479a8fae7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:29.373284+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:33:29.373284+00:00', 'updated_at': None, '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'}}, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -POST: /v1/ports {'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': False, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-cb68489f-6881-4af1-8009-41aa152758b5 +Openstack-Request-Id: req-1f8cfe7c-840d-432e-bc3c-a67479a8fae7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:29.900036+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -POST: /v1/ports {'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': False, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-0faabd93-e8c6-4474-ae1d-952b17c896ed +Openstack-Request-Id: req-402c11dc-f676-4a84-8cb6-e7ad04654fde X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:30.392499+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-eaa4b040-8b09-442a-b4f1-a595eff0f824 +Openstack-Request-Id: req-402c11dc-f676-4a84-8cb6-e7ad04654fde X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:30.887797+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_portgroup_nostandalone_ports -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_portgroup_nostandalone_ports ... ok -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_two_portgroups_int_info -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_two_portgroups_int_info ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_uuid -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_no_cleansteps -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_no_cleansteps ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_portgroup_standalone_ports -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_portgroup_standalone_ports ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_uuid_invalid_type -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_uuid_invalid_type ... ok -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_two_ports_int_info -ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_two_ports_int_info ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_hyphens_delimiter -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_hyphens_delimiter ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_non_existent_node_uuid -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_non_existent_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi_not_allowed -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi_not_allowed ... ok -ironic.tests.unit.common.test_network.TestNetwork.test_remove_vifs_from_node -ironic.tests.unit.common.test_network.TestNetwork.test_remove_vifs_from_node ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_internal_field -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_internal_field ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_singular -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_singular ... ok -ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_duplicate -ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_duplicate ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi_not_supported -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi_not_supported ... ok -ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_failure -ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_failure ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic ... ok -ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_missing -ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_missing ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_byid -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_byid ... ok -ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_name -ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_abort_accepted_after_1_41 -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_abort_accepted_after_1_41 ... ok -ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_uuid -ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_invalid_api_version ... ok -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_multiple_segments -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_multiple_segments ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_default_value -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_default_value ... ok +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_051_nodes_states_boot_mode_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_051_nodes_states_boot_mode_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_052_nodes_states_boot_mode_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_052_nodes_states_boot_mode_put_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_037_nodes_management_boot_device_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_037_nodes_management_boot_device_get_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_abort_raises_before_1_41 ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_abort_raises_before_1_41 ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_not_found -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_not_found ... ok -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_multiple_segments_no_physnet -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_multiple_segments_no_physnet ... ok -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_network_failure -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_network_failure ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_missing_hostname -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_missing_hostname ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_already_in_progress ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_already_in_progress ... ok -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_network_missing -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_network_missing ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_multi -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_multi ... ok -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_no_segment -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_no_segment ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_missing_port_id -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_missing_port_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_validation_failed_missing_parameter_value -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_validation_failed_missing_parameter_value ... ok -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_no_segment_no_physnet -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_no_segment_no_physnet ... ok -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_port_failure -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_port_failure ... ok -GOT:Response: 409 Conflict +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:11.303398+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': 'project', 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': None, 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-0c0d6303-5e3f-4042-b98e-863982f5ecdc +Openstack-Request-Id: req-1b4874df-181d-438b-8fe0-491bee2f2c3a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A volume connector with type None and connector ID test-connector-id-123 already exists.\", \"debuginfo\": null}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/connector_id', 'value': 'test-connector-id-123', 'op': 'replace'}] +X-Openstack-Ironic-Api-Version: 1.64 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/nodes {'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', 'cpus': '8', '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-c29ecf08-7ec2-426c-a008-23e0060d2aab +Openstack-Request-Id: req-39c3d7e2-6285-45ac-9c3b-bc2d0461e537 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'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 +X-Openstack-Ironic-Api-Version: 1.10 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create node with invalid name ''\", \"debuginfo\": null}"} +POST: /v1/nodes {'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', 'cpus': '8', '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-1064c0ec-33e0-48d5-a996-e7fff33f2089 +Openstack-Request-Id: req-c5bc33c0-f3fa-43f4-81d2-f9acd1e7e986 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:30.583744+00:00", "updated_at": "2024-01-06T13:33:30.613189+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"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'value': '1', 'op': 'replace'}] -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'network_interface': 'flat', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_network_interface +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_network_interface ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_053_nodes_states_secure_boot_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_053_nodes_states_secure_boot_put_admin ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-34411ca5-8b4f-4b17-ab2e-331527fb5dab +Openstack-Request-Id: req-6f4757ef-93e3-48f8-a95b-e95c9d76643c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'replace'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-22287d5d-901c-46a0-9531-7ebcbad52d44 +Openstack-Request-Id: req-66153786-a0af-4407-9d24-b03d78fc08a1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:31.457643+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"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': 123, 'op': 'replace'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a6d39a32-6194-4ab4-8b54-2d4a9c9427bc +Openstack-Request-Id: req-b53eac7c-f83b-42be-8f19-930173b8887c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a UUID for node_uuid, but received 123.\", \"debuginfo\": null}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '12506333-a81c-4d59-9987-889ed5f8687b', 'op': 'replace'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9b7bbd75-6d35-4f55-943b-511f0e3bd0df +Openstack-Request-Id: req-bc1be71a-93de-48bf-832c-951ea34ba305 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 12506333-a81c-4d59-9987-889ed5f8687b could not be found.\", \"debuginfo\": null}"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/connector_id', 'value': 'test-connector-id-999', 'op': 'replace'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-da6baf9d-a341-465a-af66-7ed736280702 +Openstack-Request-Id: req-e31835e7-6fce-47f5-ab4a-514ec3c98863 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:32.506857+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"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-344ee262-e4ee-4128-8ed5-9c8bedc79c0f +Openstack-Request-Id: req-4dad3650-288a-423c-97f5-4962788ec08f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:33.001952+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"} -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -PATCH: /v1/volume/connectors/4f20bd3d-588e-4b6c-ae24-7962aba98987 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-49015205-b9c6-4c24-a817-5b61a1862b81 +Openstack-Request-Id: req-11e82f95-f37f-4b7e-bb6c-fcdbc46cea7a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 4f20bd3d-588e-4b6c-ae24-7962aba98987 could not be found.\", \"debuginfo\": null}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'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 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-64956565-7a9a-4ab3-ac64-77276b29faf4 +Openstack-Request-Id: req-d73f51a9-f9e3-474f-8a95-2826d67d9eb1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:34.054391+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"} -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_id -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_validation_failed_status_code -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_validation_failed_status_code ... ok -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_port_missing -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_port_missing ... ok -GOT:Response: 409 Conflict +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-4780f297-c249-49a3-82d0-bf17081f1e6b +Openstack-Request-Id: req-1a0030f5-2ff2-44c9-bb0e-866b4ecd365d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-7280fd4e-ee78-43f0-ad45-bcc81fb085a2 +Openstack-Request-Id: req-a885f2a2-3714-40e3-a77d-50c0dcdf7164 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:31.823531+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-5359919c-51b0-4e2e-9c62-912356f77690 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'internal_info': {'a': 'b'}} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-0b6e3b62-6266-4787-af27-cb0ff9fcd88e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-910d3d8e-dc66-4504-8391-4dcde9853629 +Openstack-Request-Id: req-e55a2742-8420-4769-a4b2-d79e150ed059 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:32.963205+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-821625b7-60a7-47b9-ac32-1b45b3df42cc +Openstack-Request-Id: req-e1efb602-61bd-4595-9f9d-71c3128924e3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:33.480082+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-96177b97-ad3b-479c-beab-a43db9b8fb3e +Openstack-Request-Id: req-e516c29f-d11e-4120-9886-ac466fde073e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Smart NIC port must have port_id and hostname in local_link_connection\", \"debuginfo\": null}"} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8fd2b59f-1a32-4030-96d1-7033e52effc1 +Openstack-Request-Id: req-a49092ff-5576-4943-a051-84448adadffe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_old_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_old_api_version ... ok -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_single_segment -ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_single_segment ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_uuid -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_llc_old_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_llc_old_api_version ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_038_nodes_management_boot_device_supported_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_038_nodes_management_boot_device_supported_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_validation_failed_missing_parameter_value +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_validation_failed_missing_parameter_value ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_network_interface_old_api_version +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_network_interface_old_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_054_nodes_states_secure_boot_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_054_nodes_states_secure_boot_put_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_validation_failed_status_code +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_validation_failed_status_code ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_039_nodes_management_boot_device_supported_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_039_nodes_management_boot_device_supported_get_member ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_manage_from_adoptfail ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_manage_from_adoptfail ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_uuid_invalid_type -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_uuid_invalid_type ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_network_type_in_llc -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_network_type_in_llc ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_root -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_root ... ok -GOT:Response: 400 Bad Request +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_055_nodes_states_secure_boot_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_055_nodes_states_secure_boot_put_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_manage_from_available +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_manage_from_available ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_040_nodes_management_boot_device_supported_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_040_nodes_management_boot_device_supported_get_observer ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-1404aa56-8597-4ea0-8e8d-1db174122eb3 +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-8ba19e65-7fa3-4217-952f-5e1b11ecec59 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:12.820797+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", "cpus": "8", "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, "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:12.820797+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': None, 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-3136e80f-ec3a-4fc0-9da3-f930f6938791 +Openstack-Request-Id: req-4074d3b7-6e0c-42e4-999d-92d4751b8326 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} -GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-58e77b37-b0cc-44df-b146-82f70d4db3a5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.76 - -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'clean', 'clean_steps': [{'step': 'upgrade_firmware', 'interface': 'deploy'}]} +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_chassis_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_chassis_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_056_nodes_states_provision_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_056_nodes_states_provision_put_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_change_when_being_cleaned +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_change_when_being_cleaned ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_default_resource_class +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_default_resource_class ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_041_nodes_management_inject_nmi_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_041_nodes_management_inject_nmi_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_057_nodes_states_provision_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_057_nodes_states_provision_put_member ... ok GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-1612f1a2-0f16-4a2d-9c6e-16396558196b +Openstack-Request-Id: req-97c939d8-ebcb-4690-853e-dbc4d91ad1a6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.15 @@ -15836,7 +15760,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'clean', 'clean_steps': [{'step': 'upgrade_firmware', 'interface': 'deploy'}]} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d9d8a410-654a-4dc0-acc8-09cc15f8e78f +Openstack-Request-Id: req-4a4246a1-cdea-40d9-9767-ecef29d36d47 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.15 @@ -15844,7 +15768,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'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-28678b00-62f8-4c27-b624-7d3b065533e1 +Openstack-Request-Id: req-03edc9f2-7a7d-4725-a3fb-c24aed79d0f9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.70 @@ -15852,7 +15776,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'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-a2cf7329-5c89-4961-bb80-be94a17df75f +Openstack-Request-Id: req-2119a0f8-b104-4798-aba3-816c700a0eac X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.69 @@ -15860,14 +15784,14 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'clean'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-0d734b15-58da-49fe-b916-bb80d8883743 +Openstack-Request-Id: req-fb96b84b-dfe8-43be-a376-3c6697011e55 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} GOT:Response: 204 No Content -Openstack-Request-Id: req-ba969b6b-b78a-432e-a494-c8a9989ec20d +Openstack-Request-Id: req-472a1086-35ae-47a0-9da5-0f5c7a3a6a94 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.29 @@ -15875,7 +15799,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-02d9447c-d771-4e75-af96-352d8c18409b +Openstack-Request-Id: req-041b523f-e087-4aef-96c5-dd7d98951110 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 @@ -15883,7 +15807,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-47b94215-61e9-4bd4-9b30-bf5df7455150 +Openstack-Request-Id: req-29ee3418-4a1b-490e-a509-806d3a861749 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.29 @@ -15891,7 +15815,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'abort'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-404dbac4-0cd5-4615-87dc-1e0b26ce519a +Openstack-Request-Id: req-1af94bbe-eb11-4492-a778-9acd35603d1a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.41 @@ -15899,7 +15823,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'abort'} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-49f80031-01f0-4c39-80c6-681fe811f13c +Openstack-Request-Id: req-f74a4664-9193-4723-acfd-c9d026118079 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 @@ -15907,7 +15831,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'manageable'} GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-da267fd2-2c87-4d92-91e8-f53410600327 +Openstack-Request-Id: req-5737f42b-5e0c-418a-99a4-6d7bf71853e7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -15915,7 +15839,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'inspect'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-9468541d-a0ce-48e4-a220-a17e49383ab8 +Openstack-Request-Id: req-0094902b-0156-402c-8099-cd1978bc9859 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.6 @@ -15923,7 +15847,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'inspect'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-65f16007-ffff-4ee8-a1ed-fb19757bd1e1 +Openstack-Request-Id: req-9a30c176-e1fb-462f-9e27-82ffc12dbb8a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.6 @@ -15931,311 +15855,471 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'manage'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-9e453238-c460-473c-bb91-9ec6e2237d53 +Openstack-Request-Id: req-55584c83-745e-42d3-a2eb-517fd7a34a5a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.17 PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'manage'} -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_manage_from_available -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_manage_from_available ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_network_type_in_llc_old_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_network_type_in_llc_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_change_when_being_cleaned -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_change_when_being_cleaned ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_root_non_existent -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_root_non_existent ... ok +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-5db60091-e6cb-400b-8d94-274309acc1ce +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.4 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power off'} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-f751ed97-14e8-416a-9a0c-fc57e39d0044 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 {'target': 'power off'} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-b6799f32-8e2a-4528-b4f7-3d4ef0a37215 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'not-supported'} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_invalid_state_request ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_invalid_state_request ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_mandatory_field -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_mandatory_field ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_mandatory_field_driver +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_mandatory_field_driver ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_by_name ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_by_name ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_042_nodes_management_inject_nmi_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_042_nodes_management_inject_nmi_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_058_nodes_states_provision_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_058_nodes_states_provision_put_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_by_name_unsupported ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_by_name_unsupported ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_multi -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_multi ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_node_id -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_node_id ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_043_nodes_management_inject_nmi_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_043_nodes_management_inject_nmi_put_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_invalid_soft_ver ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_invalid_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_non_existent_property_fail -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_non_existent_property_fail ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_no_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_no_ver ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network_old_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_uuid -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_valid_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_valid_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network_upgrade -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network_upgrade ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_boot_index_already_exist -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_boot_index_already_exist ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_invalid_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_invalid_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_pxe_enabled_old_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_pxe_enabled_old_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_no_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_no_ver ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_valid_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_valid_soft_ver ... ok -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'value': '1', 'op': 'add'}] -GOT:Response: 400 Bad Request +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-06cc8736-5fd3-49ed-aeb5-89f4953b59e7 +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-acb50934-b078-4751-b0fe-2d01440024a8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:13.479614+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", "cpus": "8", "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 {'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', 'cpus': '8', '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 -Openstack-Request-Id: req-a44d1737-7a7d-4b9b-84e6-13fe99e44111 +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-66e1cc73-2bba-4a67-93b1-fcae4230f8fc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:34.955834+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"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': 123, 'op': 'add'}] +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:13.776099+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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:13.776099+00:00', 'updated_at': None, 'clean_step': {}, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': 'flat', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-da575ac7-3585-472c-a790-7895909c421b +Openstack-Request-Id: req-dfaf9ddb-807d-4fc6-bb10-a8815f6219f8 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'owner': 'cowsay', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner ... ok +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-d724076c-5ab5-4cdd-9787-6fa5638c5b5b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a UUID for node_uuid, but received 123.\", \"debuginfo\": null}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/boot_index', 'value': 100, 'op': 'add'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-fab6e90b-70b5-49ba-9cf0-5cd313be70b8 +Openstack-Request-Id: req-d724076c-5ab5-4cdd-9787-6fa5638c5b5b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:35.719227+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"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5c26338e-1ef9-4ee5-983d-b60b786733fe +Openstack-Request-Id: req-05a283fd-daf4-4390-afa4-ebf5ae1bba27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/boot_index', 'op': 'remove'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a4aec90c-7517-4b3d-88e9-598eb61fda04 +Openstack-Request-Id: req-05a283fd-daf4-4390-afa4-ebf5ae1bba27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'boot_index' is a required property\", \"debuginfo\": null}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo1', 'op': 'remove'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-02f172ba-157f-404e-ad62-2eb199d0d467 +Openstack-Request-Id: req-fad150da-133c-494e-8852-460b97d9f41c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:36.884081+00:00", "updated_at": "2024-01-06T13:33:36.922264+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 [{'path': '/extra', 'op': 'remove'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-28dc0642-7a6e-4104-8df1-eef462ca0aeb +Openstack-Request-Id: req-fad150da-133c-494e-8852-460b97d9f41c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:36.884081+00:00", "updated_at": "2024-01-06T13:33:36.922264+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"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'op': 'remove'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6db5f2e2-22df-4b99-8880-a59eada028f3 +Openstack-Request-Id: req-8cb6f73a-ce97-4141-b35f-e5631d5289d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/non-existent', 'op': 'remove'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d7138a44-306d-4cdd-ad5b-e8aabc8dfa56 +Openstack-Request-Id: req-8cb6f73a-ce97-4141-b35f-e5631d5289d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove a non-existent object 'non-existent'\", \"debuginfo\": null}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/uuid', 'op': 'remove'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0a272bed-8659-4feb-8753-b93e6c09d9bf +Openstack-Request-Id: req-4900e2ef-3f75-400e-8093-5930f0b69678 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/boot_index', 'value': 100, 'op': 'replace'}] -GOT:Response: 409 Conflict +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e670534a-a57b-40ff-9d37-9cc2521865df +Openstack-Request-Id: req-4900e2ef-3f75-400e-8093-5930f0b69678 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A volume target with boot index '100' for the same node already exists.\", \"debuginfo\": null}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/boot_index', 'value': 0, 'op': 'replace'}] -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_invalid_power_state -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_invalid_power_state ... ok -POST: /v1/ports {'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': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 406 Not Acceptable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0faa6e46-e616-4deb-a767-b3cd23a597ca +Openstack-Request-Id: req-cac36c66-082c-4e2e-980a-20b40af6416d X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/ports {'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': 'Ethernet1/15'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-afeca23a-0e56-4699-915d-95ebcc549328 +Openstack-Request-Id: req-cac36c66-082c-4e2e-980a-20b40af6416d X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'network_type': 'unmanaged'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-1ffc27f6-2b35-441f-890d-0ba4c37f3382 +Openstack-Request-Id: req-d6c76b9a-d3c2-4a34-9dff-743f7effdc47 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:35.647664+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'network_type': 'unmanaged'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 406 Not Acceptable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f20ff284-0cf5-48d1-9463-3bb49d31c5f1 +Openstack-Request-Id: req-d6c76b9a-d3c2-4a34-9dff-743f7effdc47 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/ports {'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': 'physnet1', 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 201 Created +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} +GOT:Response: 403 Forbidden Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-0d53e382-a2d5-4af2-a815-9f05453add85 +Openstack-Request-Id: req-9ea57a2f-0a6e-4c8a-b3f7-7e565fe1cdac X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:36.466463+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/ports {'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': 'physnet1', 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 406 Not Acceptable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3bece8af-86de-4523-83e9-ce208685918b +Openstack-Request-Id: req-9ea57a2f-0a6e-4c8a-b3f7-7e565fe1cdac X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/ports {'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': 'physnet1', 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_059_nodes_states_raid_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_059_nodes_states_raid_put_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_no_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_no_ver ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_044_nodes_states_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_044_nodes_states_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_060_nodes_states_raid_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_060_nodes_states_raid_put_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_valid_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_valid_soft_ver ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_old_api_version +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_old_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_invalid_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_invalid_soft_ver ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_045_nodes_states_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_045_nodes_states_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_061_nodes_states_raid_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_061_nodes_states_raid_put_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_no_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_no_ver ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_046_nodes_states_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_046_nodes_states_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_valid_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_valid_soft_ver ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-43d4ab68-f8b4-4345-a8f6-941ef7afc8fd +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-cdf1a1c1-00a2-4c15-a4f8-d5f2d9a91451 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'pxe_enabled': False, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:14.400490+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": "cowsay", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:14.400490+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': 'cowsay', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-58e265c8-d961-48a8-bd42-3972518bf4ab +Openstack-Request-Id: req-70d125f1-bb64-4a06-aaa4-6719c39daf62 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.14 +X-Openstack-Ironic-Api-Version: 1.32 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} -POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_node_uuid_to_node_id_mapping -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_node_uuid_to_node_id_mapping ... ok -ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_auth_from_config -ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_auth_from_config ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_multi -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_multi ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_portgroups_subresource_post -ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_portgroups_subresource_post ... ok +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_recorded_project_scope +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_recorded_project_scope ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_062_nodes_states_console_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_062_nodes_states_console_get_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_valid_timeout_invalid_soft_ver ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_valid_timeout_invalid_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_max_version -ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_max_version ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_id -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_id ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_047_nodes_states_power_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_047_nodes_states_power_put_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_valid_timeout_no_ver ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_valid_timeout_no_ver ... ok -ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_min_version -ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_min_version ... ok -ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_route_checks_version -ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_route_checks_version ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_uuid -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_063_nodes_states_console_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_063_nodes_states_console_get_member ... ok +GOT:Response: 201 Created +Content-Type: application/json +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-51958317-e639-4cb7-a0e6-632f2ab35480 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:15.092629+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": "ravensay", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:15.092629+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': 'ravensay', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'owner': 'catsay', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_system_scope +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_system_scope ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_valid_timeout_valid_soft_ver ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_valid_timeout_valid_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_forbidden -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_uuid_inalid_type -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_uuid_inalid_type ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_forbidden_no_project -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_forbidden_no_project ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_048_nodes_states_power_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_048_nodes_states_power_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_064_nodes_states_console_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_064_nodes_states_console_put_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_protected_not_allowed +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_protected_not_allowed ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_invalid_timeout_invalid_soft_ver ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_invalid_timeout_invalid_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_non_admin -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_non_admin ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_non_existent_node_uuid -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_non_existent_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_non_admin_owner_proj_mismatch -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_non_admin_owner_proj_mismatch ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_049_nodes_states_power_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_049_nodes_states_power_put_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_invalid_timeout_no_ver ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_invalid_timeout_no_ver ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_with_owner -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_with_owner ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckOwnerPolicy.test_check_owner_policy -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckOwnerPolicy.test_check_owner_policy ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_singular -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_singular ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_065_nodes_states_console_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_065_nodes_states_console_put_member ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_invalid_timeout_valid_soft_ver ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_invalid_timeout_valid_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckOwnerPolicy.test_check_owner_policy_forbidden -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckOwnerPolicy.test_check_owner_policy_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_invalid -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_invalid ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_byid -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_byid ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_unmanaged -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_unmanaged ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_byid_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_byid_invalid_api_version ... ok -GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-cc2f55be-2d55-46cf-a2f6-b8583efeabfd +GOT:Response: 201 Created +Content-Type: application/json +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-0a3867e5-d47f-4839-a518-737ce4a41d27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.4 - -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power off'} +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:15.463086+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": "catsay", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:15.463086+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': 'catsay', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-59d09463-ac1c-429c-81ea-d08dbd9c97e6 +Openstack-Request-Id: req-92cc2eb1-c2b1-415d-85c3-f187d3b2534c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'target': 'power off'} +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}"} +POST: /v1/nodes {'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', 'cpus': '8', '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-bcdb503a-6b0b-48f0-89dc-a3ded4739ef1 +Openstack-Request-Id: req-fe5f7b49-dfa3-4717-83f6-562e01a53f8f X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'not-supported'} +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}"} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_050_nodes_states_boot_mode_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_050_nodes_states_boot_mode_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_066_nodes_states_console_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_066_nodes_states_console_put_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_invalid_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_invalid_soft_ver ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_051_nodes_states_boot_mode_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_051_nodes_states_boot_mode_put_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_reserved_name +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_reserved_name ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_no_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_no_ver ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_valid_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_valid_soft_ver ... ok +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-1c44dcb8-de1d-4da7-9ecc-b6bc94c3c2cc +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-1c44dcb8-de1d-4da7-9ecc-b6bc94c3c2cc +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'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-6ef2f0c1-bda4-4626-8f24-25c742a4ff9f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-6ef2f0c1-bda4-4626-8f24-25c742a4ff9f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'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-8eb02f0e-31c2-48ff-b0e2-97c384ac5b8a +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-8eb02f0e-31c2-48ff-b0e2-97c384ac5b8a +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-a22e01bc-9214-404e-9ca3-f0447251c0c2 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-a22e01bc-9214-404e-9ca3-f0447251c0c2 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-d13892ac-6ff2-4eb7-8d47-4ad430750a70 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-d13892ac-6ff2-4eb7-8d47-4ad430750a70 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-5c35b1f6-505c-4a6a-9f6a-d3b7388072de +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-5c35b1f6-505c-4a6a-9f6a-d3b7388072de +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-f9a8746f-e39b-484b-b5d8-a229632a8b84 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-f9a8746f-e39b-484b-b5d8-a229632a8b84 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-1c677dd5-6d7b-4b13-be10-2023cf66e0bd +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-1c677dd5-6d7b-4b13-be10-2023cf66e0bd +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_067_nodes_vendor_passthru_methods_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_067_nodes_vendor_passthru_methods_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_068_nodes_vendor_passthru_methods_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_068_nodes_vendor_passthru_methods_get_member ... ok GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-f5ad940e-991b-4891-afe8-c5eab6fbe586 +Openstack-Request-Id: req-97f3e51c-0027-4a56-88d2-0cceee8ec279 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16243,7 +16327,7 @@ PUT: /v1/nodes/node-39/states/power {'target': 'power on'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/node-39/states -Openstack-Request-Id: req-3d8272a1-c090-482b-8c82-7090cf01c79f +Openstack-Request-Id: req-c0310894-c5b0-44e3-a744-11941f3e5e0c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 @@ -16251,7 +16335,7 @@ PUT: /v1/nodes/node-39/states/power {'target': 'power on'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-54e80798-4074-4e24-8af2-14c4c7fa897c +Openstack-Request-Id: req-32047c5a-7d99-4256-a26d-5583abd1062e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16259,7 +16343,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on', 'timeout': 0} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-34706fa3-1bc1-46df-892e-109c3bcb2697 +Openstack-Request-Id: req-4b07628f-0641-44fb-aa78-89b7d7a40921 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 @@ -16267,7 +16351,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on', 'timeout': 0} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-0280ee0d-2890-4c0f-b9f0-66740a57035f +Openstack-Request-Id: req-ec48b9ff-3b99-4fb9-a4b0-bc5f590635db X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16275,7 +16359,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on', 'timeout': 0} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-6e74ccfa-0420-42fe-8037-9ef7a2fe95c3 +Openstack-Request-Id: req-b9140a94-5b26-4dea-8fc5-6c2aa30124ca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.27 @@ -16283,7 +16367,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-710b7608-51db-44ba-a713-195554f858ee +Openstack-Request-Id: req-e4274b12-0ab0-4f0b-b866-5f2e2c244bc7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 @@ -16291,7 +16375,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-8b0477c1-3324-483d-815c-5695c71a7ea5 +Openstack-Request-Id: req-ef5ad87a-2c58-4cf9-9153-b3a7cf602c0b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16299,7 +16383,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-f0769e36-9d48-40fd-9e5a-9ce57bad36f4 +Openstack-Request-Id: req-c52a6871-5461-4f49-90db-f1b19c196b23 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.27 @@ -16307,7 +16391,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on', 'timeout': 2} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-f79e5688-80cf-42b8-9466-e196ae72ef3b +Openstack-Request-Id: req-0fe3ef7c-810f-49a2-a5e7-6a12c184b306 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 @@ -16315,7 +16399,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on', 'timeout': 2} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-7ea2459e-b381-49cd-b185-a0e2a3f8fad3 +Openstack-Request-Id: req-c96e0d46-bf97-419a-b706-585c9bf2344b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16323,7 +16407,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on', 'timeout': 2} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-36bb1db8-4ea1-44a6-a97d-5965578484cc +Openstack-Request-Id: req-9dc0adbd-cff5-4008-8b5d-15af87cb7176 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.27 @@ -16331,7 +16415,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'soft power off', 'timeout': 0} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-5d13da88-9adf-4a17-a7a1-ee6c78ad6a78 +Openstack-Request-Id: req-42404ee5-b1b6-4377-b800-b4b32fe32830 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 @@ -16339,7 +16423,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'soft power off', 'timeout': 0} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-712ea935-6e48-4280-8914-d4a58fbb246f +Openstack-Request-Id: req-43e54179-a35d-4259-b9ab-ba97b7d308b9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16347,352 +16431,509 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'soft power off', 'timeout': 0} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-1634f9c8-9b6d-40a6-8351-64fb7f98f78a +Openstack-Request-Id: req-5ac128d9-b9f7-4189-81e9-7cbe474b67f7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_invalid_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_invalid_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_unmanaged_combine_ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_unmanaged_combine_ok ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_no_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_no_ver ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_not_found -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_valid_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_valid_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_datapath_id -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_datapath_id ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_empty_value -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_empty_value ... ok +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'soft power off'} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-4ec190a2-8fe1-40fb-a6b0-837b89505026 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'soft power off'} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-b240586b-fd44-436a-9fbe-c7551fa402d4 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'soft power off'} +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-1b3dc68d-7730-4cf1-b8e2-772b81429173 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.27 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'soft power off', 'timeout': 2} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_invalid_soft_ver ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_invalid_soft_ver ... ok -GOT:Response: 400 Bad Request +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_no_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_no_ver ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_valid_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_valid_soft_ver ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-28fdce30-7017-454d-9934-2d6f89150562 +Openstack-Request-Id: req-42a41295-ef07-416f-8b65-22d0643ab4ee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'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 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-89657e69-a56e-4cfb-9a8f-22857b2f4c0b +Openstack-Request-Id: req-56034796-6c9f-4f4c-ada0-c21a250561f0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:39.367511+00:00", "updated_at": "2024-01-06T13:33:39.405480+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"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'value': '1', 'op': 'replace'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6c65b911-1777-4426-841c-a78281191758 +Openstack-Request-Id: req-4528d387-0b64-4574-ac4e-91f531d5ee52 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'replace'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d000028a-83c4-4905-a3c2-f1159114f27b +Openstack-Request-Id: req-c51836e2-4620-4452-ad8d-e0929d5c841e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:40.102550+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"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': 123, 'op': 'replace'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-596408ab-35c7-4e20-a8f7-994e1e1b43e7 +Openstack-Request-Id: req-51ec5631-cd6c-4f34-a65c-01f769e11086 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a UUID for node_uuid, but received 123.\", \"debuginfo\": null}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '12506333-a81c-4d59-9987-889ed5f8687b', 'op': 'replace'}] -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c1ffe534-f858-4b1a-b480-57372a42dcea +Openstack-Request-Id: req-7b6ab67a-ce30-48dd-ab37-a7e74314f34c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 12506333-a81c-4d59-9987-889ed5f8687b could not be found.\", \"debuginfo\": null}"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/boot_index', 'value': 100, 'op': 'replace'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-87292e9b-936f-4085-8cc7-b40aee3d1ca1 +Openstack-Request-Id: req-bfa81a23-39fe-4762-a134-e8e5081a0ad6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:41.143218+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"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-66b5aa1b-6723-4860-89bc-dbe494896fc7 +Openstack-Request-Id: req-f91f6a74-2956-413b-838a-388bf242c8ac X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:41.514883+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"} -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} GOT:Response: 404 Not Found Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -PATCH: /v1/volume/targets/ba8f1a1b-3a6f-4373-bb79-e86828c768de [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +Openstack-Request-Id: req-68206756-0336-414d-9d6a-274bc429e54b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-49fba8a5-12f2-439b-8ff7-033ae152cdb8 +Openstack-Request-Id: req-5714eee3-0006-41d9-bc5f-15d008b2eb21 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target ba8f1a1b-3a6f-4373-bb79-e86828c768de could not be found.\", \"debuginfo\": null}"} -POST: /v1/volume/targets {'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 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-de6d60ce-fa91-4c64-a8a8-f99e917d89dd +Openstack-Request-Id: req-2e95aa20-361f-4038-8d78-8adcd16a5bf7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_invalid_key -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_invalid_key ... ok -ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_noauth -ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_noauth ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_doesnt_contain_id -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_doesnt_contain_id ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_no_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_no_ver ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_local_link_keys_mandatory -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_local_link_keys_mandatory ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_missing_local_link_mandatory_key -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_missing_local_link_mandatory_key ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_error -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_error ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_valid_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_valid_soft_ver ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_not_mac_or_datapath_id -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_not_mac_or_datapath_id ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_hostname_missing -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_hostname_missing ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_generate_uuid -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_generate_uuid ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-bac58aaa-de52-408c-bcb9-5e2303a3801c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-dbb66102-3263-4e61-8673-9a8c9261d144 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-4a669719-b1e3-417b-a14f-57312ee3fa79 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_052_nodes_states_boot_mode_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_052_nodes_states_boot_mode_put_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_053_nodes_states_secure_boot_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_053_nodes_states_secure_boot_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_054_nodes_states_secure_boot_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_054_nodes_states_secure_boot_put_member ... ok +POST: /v1/nodes {'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', 'cpus': '8', '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-6c4fd322-8a40-4591-946f-f402c1454dd6 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 {'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', 'cpus': '8', '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-d8c9196e-7fa4-4df2-9086-c56438940766 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 {'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', 'cpus': '8', '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-5d7f3398-e072-4342-a326-68ee01e58f20 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +POST: /v1/nodes {'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', 'cpus': '8', '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-b98e9930-f9c2-4058-ac01-c3252fc500bc +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 {'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', 'cpus': '8', '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-876fb99a-5c06-4b82-a568-408c20a38fdf +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'resource_class': 'foo', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_resource_class +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_resource_class ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_resource_class_old_api_version +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_resource_class_old_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_069_nodes_vendor_passthru_methods_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_069_nodes_vendor_passthru_methods_get_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provide_from_manage ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provide_from_manage ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_mandatory -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_mandatory ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_invalid_api_version ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_port_id_missing -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_port_id_missing ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_055_nodes_states_secure_boot_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_055_nodes_states_secure_boot_put_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_already_in_progress ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_already_in_progress ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_with_optional -ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_with_optional ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_invalid_node_uuid_format -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_invalid_node_uuid_format ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_invalid_name -ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_invalid_name ... ok +GOT:Response: 201 Created +Content-Type: application/json +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-47719dd3-31e9-4212-8466-686b3266e7f4 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:16.788587+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", "cpus": "8", "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, "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:16.788587+00:00', 'updated_at': None, 'automated_clean': None, 'bios_interface': 'fake', 'boot_interface': 'fake', 'boot_mode': None, 'clean_step': {}, 'conductor_group': '', 'console_enabled': False, 'console_interface': 'fake', 'deploy_interface': 'fake', 'deploy_step': {}, 'description': None, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'fault': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'lessee': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_data': {}, 'network_interface': 'flat', 'owner': None, 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'protected': False, 'protected_reason': None, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': 'foo', 'retired': False, 'retired_reason': None, 'secure_boot': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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': None, 'allocation_uuid': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-f5940613-c66a-4a47-8626-0c20ab1a85b1 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_conductor_group +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_conductor_group ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_070_nodes_vendor_passthru_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_070_nodes_vendor_passthru_get_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_already_in_state ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_already_in_state ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_name -ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_name ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_node_uuid -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_uuid -ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_056_nodes_states_provision_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_056_nodes_states_provision_put_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_conductor_group_bad_version +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_conductor_group_bad_version ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_by_name ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_by_name ... ok -ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_duplicates -ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_duplicates ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_type -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_type ... ok -ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_max_ver_str -ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_max_ver_str ... ok -ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_min_ver_str -ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_min_ver_str ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_071_nodes_vendor_passthru_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_071_nodes_vendor_passthru_get_member ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_by_name_unsupported ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_by_name_unsupported ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_value -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_value ... ok -ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_name_value_match -ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_name_value_match ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_node_uuid_not_found -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_node_uuid_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_057_nodes_states_provision_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_057_nodes_states_provision_put_member ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_deploy ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_deploy ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_072_nodes_vendor_passthru_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_072_nodes_vendor_passthru_get_observer ... ok +GOT:Response: 201 Created +Content-Type: application/json +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-237b5223-4b89-4c16-868a-8c8d95bea61a +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.46 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:17.398758+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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:17.398758+00:00', 'updated_at': None, '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': None, 'inspection_finished_at': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-31e92574-3601-4f56-a0bb-94d556e38dcc +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +POST: /v1/nodes {'uuid': '1fce7c9f-fad5-456a-92d9-bb959a045376', '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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'boot_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_058_nodes_states_provision_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_058_nodes_states_provision_put_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_invalid_state_request ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_invalid_state_request ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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'} -POST: /v1/volume/targets {'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-e239a1d8-7dbe-4630-92ef-ff5b49194983 +Location: http://localhost/v1/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376 +Openstack-Request-Id: req-6a0549c9-6888-45bb-83be-08a3e74b5db9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:42.962549+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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:33:42.962549+00:00', 'updated_at': None, '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'} -POST: /v1/volume/targets {'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 +X-Openstack-Ironic-Api-Version: 1.40 +{"uuid": "1fce7c9f-fad5-456a-92d9-bb959a045376", "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", "cpus": "8", "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/1fce7c9f-fad5-456a-92d9-bb959a045376", "rel": "self"}, {"href": "http://localhost/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/ports", "rel": "self"}, {"href": "http://localhost/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/states", "rel": "self"}, {"href": "http://localhost/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/volume", "rel": "self"}, {"href": "http://localhost/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/volume", "rel": "bookmark"}]} +GET: /v1/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376 {} +GOT:{'uuid': '1fce7c9f-fad5-456a-92d9-bb959a045376', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376', 'rel': 'self'}, {'href': 'http://localhost/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/1fce7c9f-fad5-456a-92d9-bb959a045376/volume', 'rel': 'bookmark'}]} +POST: /v1/nodes {'uuid': 'a05a6555-ee73-4a5d-95b9-abaae5ec5da9', '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', 'cpus': '8', '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 -Openstack-Request-Id: req-43d62ec5-4e05-420d-84b4-4bc8e56c05bf +Location: http://localhost/v1/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9 +Openstack-Request-Id: req-9501eedb-47a6-4045-9ab0-7e323a7d486a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} -POST: /v1/volume/targets {'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +X-Openstack-Ironic-Api-Version: 1.40 +{"uuid": "a05a6555-ee73-4a5d-95b9-abaae5ec5da9", "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", "cpus": "8", "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/a05a6555-ee73-4a5d-95b9-abaae5ec5da9", "rel": "self"}, {"href": "http://localhost/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/ports", "rel": "self"}, {"href": "http://localhost/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/states", "rel": "self"}, {"href": "http://localhost/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/volume", "rel": "self"}, {"href": "http://localhost/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/volume", "rel": "bookmark"}]} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_059_nodes_states_raid_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_059_nodes_states_raid_put_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_locked_with_correct_state +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_locked_with_correct_state ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_073_nodes_vendor_passthru_post_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_073_nodes_vendor_passthru_post_admin ... ok +GET: /v1/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9 {} +GOT:{'uuid': 'a05a6555-ee73-4a5d-95b9-abaae5ec5da9', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9', 'rel': 'self'}, {'href': 'http://localhost/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/a05a6555-ee73-4a5d-95b9-abaae5ec5da9/volume', 'rel': 'bookmark'}]} +POST: /v1/nodes {'uuid': 'f0e412af-b5c1-4e57-868e-fa36bd20199a', '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', 'cpus': '8', '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/f0e412af-b5c1-4e57-868e-fa36bd20199a +Openstack-Request-Id: req-614a9aff-c516-4297-8e7d-766d666fa15c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.40 +{"uuid": "f0e412af-b5c1-4e57-868e-fa36bd20199a", "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", "cpus": "8", "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/f0e412af-b5c1-4e57-868e-fa36bd20199a", "rel": "self"}, {"href": "http://localhost/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/ports", "rel": "self"}, {"href": "http://localhost/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/states", "rel": "self"}, {"href": "http://localhost/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/volume", "rel": "self"}, {"href": "http://localhost/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/volume", "rel": "bookmark"}]} +GET: /v1/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a {} +GOT:{'uuid': 'f0e412af-b5c1-4e57-868e-fa36bd20199a', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a', 'rel': 'self'}, {'href': 'http://localhost/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/f0e412af-b5c1-4e57-868e-fa36bd20199a/volume', 'rel': 'bookmark'}]} +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_node_in_maintenance_fail +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_node_in_maintenance_fail ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_empty_password +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_empty_password ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_060_nodes_states_raid_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_060_nodes_states_raid_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_074_nodes_vendor_passthru_post_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_074_nodes_vendor_passthru_post_member ... ok +POST: /v1/nodes {'uuid': 'ebf56f4d-b553-48fc-b6a8-b282a1a67458', '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', 'cpus': '8', '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/ebf56f4d-b553-48fc-b6a8-b282a1a67458 +Openstack-Request-Id: req-13b91846-0c8d-46c4-8bd9-078110533439 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.40 +{"uuid": "ebf56f4d-b553-48fc-b6a8-b282a1a67458", "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", "cpus": "8", "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/ebf56f4d-b553-48fc-b6a8-b282a1a67458", "rel": "self"}, {"href": "http://localhost/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/ports", "rel": "self"}, {"href": "http://localhost/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/states", "rel": "self"}, {"href": "http://localhost/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/volume", "rel": "self"}, {"href": "http://localhost/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/volume", "rel": "bookmark"}]} +GET: /v1/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458 {} +GOT:{'uuid': 'ebf56f4d-b553-48fc-b6a8-b282a1a67458', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458', 'rel': 'self'}, {'href': 'http://localhost/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/ebf56f4d-b553-48fc-b6a8-b282a1a67458/volume', 'rel': 'bookmark'}]} +POST: /v1/nodes {'uuid': '3f9c4ff9-e0a2-4870-bec1-523182f73ce8', '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', 'cpus': '8', '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/3f9c4ff9-e0a2-4870-bec1-523182f73ce8 +Openstack-Request-Id: req-1899744c-3b63-4194-939d-4b66397bf2f2 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.40 +{"uuid": "3f9c4ff9-e0a2-4870-bec1-523182f73ce8", "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", "cpus": "8", "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/3f9c4ff9-e0a2-4870-bec1-523182f73ce8", "rel": "self"}, {"href": "http://localhost/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/ports", "rel": "self"}, {"href": "http://localhost/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/states", "rel": "self"}, {"href": "http://localhost/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/volume", "rel": "self"}, {"href": "http://localhost/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/volume", "rel": "bookmark"}]} +GET: /v1/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8 {} +GOT:{'uuid': '3f9c4ff9-e0a2-4870-bec1-523182f73ce8', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8', 'rel': 'self'}, {'href': 'http://localhost/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/3f9c4ff9-e0a2-4870-bec1-523182f73ce8/volume', 'rel': 'bookmark'}]} +POST: /v1/nodes {'uuid': 'c70e3b77-f9d6-4da9-82b3-cc439d7937bb', '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', 'cpus': '8', '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/volume/targets/630000af-4c2a-4718-bd44-d142e01b3ea6 -Openstack-Request-Id: req-d0708e94-ce5a-430b-9381-287468ebd408 +Location: http://localhost/v1/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb +Openstack-Request-Id: req-4255e821-91a9-49b2-bb2a-3ed8aa5e9218 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.40 +{"uuid": "c70e3b77-f9d6-4da9-82b3-cc439d7937bb", "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", "cpus": "8", "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/c70e3b77-f9d6-4da9-82b3-cc439d7937bb", "rel": "self"}, {"href": "http://localhost/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/ports", "rel": "self"}, {"href": "http://localhost/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/states", "rel": "self"}, {"href": "http://localhost/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/volume", "rel": "self"}, {"href": "http://localhost/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/volume", "rel": "bookmark"}]} +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_in_allowed_states +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_in_allowed_states ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_061_nodes_states_raid_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_061_nodes_states_raid_put_observer ... ok +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-54561ebc-1b26-4a2a-9c17-9cba33f2b9a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "630000af-4c2a-4718-bd44-d142e01b3ea6", "created_at": "2024-01-06T13:33:43.825170+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/630000af-4c2a-4718-bd44-d142e01b3ea6", "rel": "self"}, {"href": "http://localhost/volume/targets/630000af-4c2a-4718-bd44-d142e01b3ea6", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -GET: /v1/volume/targets/630000af-4c2a-4718-bd44-d142e01b3ea6 {} -GOT:{'uuid': '630000af-4c2a-4718-bd44-d142e01b3ea6', 'created_at': '2024-01-06T13:33:43.825170+00:00', 'updated_at': None, 'boot_index': 0, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/630000af-4c2a-4718-bd44-d142e01b3ea6', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/630000af-4c2a-4718-bd44-d142e01b3ea6', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -POST: /v1/volume/targets {'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'} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-54561ebc-1b26-4a2a-9c17-9cba33f2b9a9 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} GOT:Response: 404 Not Found Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -POST: /v1/volume/targets {'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 +Openstack-Request-Id: req-f4e41078-2ef8-45f6-a290-b4ab9edd059b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ce5e6dce-a01a-470a-b557-9c832af15acb +Openstack-Request-Id: req-f4e41078-2ef8-45f6-a290-b4ab9edd059b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for target: 123 is not of type 'string'\", \"debuginfo\": null}"} -POST: /v1/volume/targets {'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 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b66302b2-0a56-43a0-a005-963b2c5565ea +Openstack-Request-Id: req-9079ca34-f5f8-4d32-aa15-a384a228b3ec X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for target: 'node_uuid' is a required property\", \"debuginfo\": null}"} -POST: /v1/volume/targets {'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 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-59d3748f-8921-4f55-8db6-1f8ea56d33df +Openstack-Request-Id: req-9079ca34-f5f8-4d32-aa15-a384a228b3ec X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for target: 'volume_type' is a required property\", \"debuginfo\": null}"} -POST: /v1/volume/targets {'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 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e25bc3f6-5dc2-44e8-b041-2539653728e6 +Openstack-Request-Id: req-30c3274d-384e-403f-9bd7-0460c9bec144 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for target: 'boot_index' is a required property\", \"debuginfo\": null}"} -POST: /v1/volume/targets {'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 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-caa8391b-0a90-488e-8034-ba222130c6f1 +Openstack-Request-Id: req-30c3274d-384e-403f-9bd7-0460c9bec144 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid input for field/attribute node_uuid. Value: '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'. \", \"debuginfo\": null}"} -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_valid_extra -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_valid_extra ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_custom_fields -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_node_uuid_to_node_id_mapping -ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_node_uuid_to_node_id_mapping ... ok -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-0de15b6a-2482-4b84-ae2f-f0983f088f26 +Openstack-Request-Id: req-f2678a1a-83d9-44c6-b2db-067318b6d45c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:39.169181+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} -POST: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-f2678a1a-83d9-44c6-b2db-067318b6d45c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-830a6706-77fb-409b-80bd-d8b6ca03b633 +Openstack-Request-Id: req-357edc78-ac98-4dfb-a587-1bdda1823a09 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/ {} -GOT:{'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.80'}, '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'}]} -GET: /v1/ {} -GOT:{'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.80'}} -GET: /v1/ {} -GOT:{'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.80'}} -GET: /v1/volume/targets/?limit=3 {} -GOT:{'targets': [{'uuid': 'ce145bae-ec1b-4d6f-8342-35b897c87a39', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/ce145bae-ec1b-4d6f-8342-35b897c87a39', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/ce145bae-ec1b-4d6f-8342-35b897c87a39', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '6065ef0b-a4e1-4f36-8958-76baa5608674', 'boot_index': 1, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/6065ef0b-a4e1-4f36-8958-76baa5608674', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/6065ef0b-a4e1-4f36-8958-76baa5608674', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '618cacab-be17-48c1-a179-8d2772249ded', 'boot_index': 2, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/618cacab-be17-48c1-a179-8d2772249ded', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/618cacab-be17-48c1-a179-8d2772249ded', '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=618cacab-be17-48c1-a179-8d2772249ded'} -GET: /v1/volume/targets?fields=uuid,extra {} -GOT:{'targets': [{'uuid': '6f07e41d-49ec-492e-9d2f-04c47337179c', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/targets/6f07e41d-49ec-492e-9d2f-04c47337179c', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/6f07e41d-49ec-492e-9d2f-04c47337179c', 'rel': 'bookmark'}]}, {'uuid': '20d64614-693c-4b81-86a9-0885219938b4', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/targets/20d64614-693c-4b81-86a9-0885219938b4', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/20d64614-693c-4b81-86a9-0885219938b4', 'rel': 'bookmark'}]}, {'uuid': '022c3b77-ba45-4d49-ab17-9d942598864b', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/targets/022c3b77-ba45-4d49-ab17-9d942598864b', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/022c3b77-ba45-4d49-ab17-9d942598864b', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/volume/targets?sort_key=id&sort_dir=asc&fields=uuid,extra&limit=3&marker=022c3b77-ba45-4d49-ab17-9d942598864b'} -GET: /v1/volume/targets {} -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_default_limit -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_default_limit ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_detail -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_detail ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_001_values -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_001_values ... skipped 'These are fake reference values for YAML templating' -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_locked_with_correct_state -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_locked_with_correct_state ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_against_single -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_against_single ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_and_fields -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_and_fields ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_node_in_maintenance_fail -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_node_in_maintenance_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_002_nodes_post_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_002_nodes_post_admin ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_by_node_name_ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_by_node_name_ok ... ok -ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_context -ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_context ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_empty_password -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_empty_password ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_false -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_false ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_invalid_api_version ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_003_nodes_post_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_003_nodes_post_member ... ok -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'soft power off'} -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-08288bef-fc14-4a05-bd7f-2309767fb8cf +Openstack-Request-Id: req-357edc78-ac98-4dfb-a587-1bdda1823a09 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'soft power off'} -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-f8176001-c5be-410b-b6af-57aa2387ea38 +Openstack-Request-Id: req-a586cf04-25e3-4ff3-a552-91efced6784b X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'soft power off'} -GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-94b98120-ee4a-468f-881c-49cce45e66f2 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-a586cf04-25e3-4ff3-a552-91efced6784b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.27 - -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'soft power off', 'timeout': 2} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-7f97b275-a2bc-42d1-bccd-1e9bf3f2a2e3 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-7f97b275-a2bc-42d1-bccd-1e9bf3f2a2e3 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_075_nodes_vendor_passthru_post_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_075_nodes_vendor_passthru_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_062_nodes_states_console_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_062_nodes_states_console_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_076_nodes_vendor_passthru_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_076_nodes_vendor_passthru_put_admin ... ok GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-7976c4a2-c6d6-4c3b-a76a-62fe415986e6 +Openstack-Request-Id: req-03315960-4879-4c95-87c3-17b9b114254c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 @@ -16700,7 +16941,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'soft power off', 'timeout': 2} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-b80df1a5-431f-4376-8141-2ec0fd9446aa +Openstack-Request-Id: req-473dbb7e-7c1b-4426-8baa-4bb6c703fabd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16708,7 +16949,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'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-cd0f340f-8a08-4861-86e4-f8ad1f40aff5 +Openstack-Request-Id: req-b08c5e85-cfae-449b-abba-6f0322c5f786 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.27 @@ -16716,7 +16957,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'provide'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-fbd2ccaf-aa50-4b6a-9f4d-6163692cfab7 +Openstack-Request-Id: req-4ce57eed-27ab-4186-bf8e-262f14fdc7da X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.4 @@ -16724,7 +16965,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active'} GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-644116b1-3431-4687-91dd-5f839001a7db +Openstack-Request-Id: req-bc7f7869-c7c0-4bee-a0fa-cae7175e883d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16732,7 +16973,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c1339521-1448-49dd-b1e8-f46d70d6efc5 +Openstack-Request-Id: req-211f81a0-72b3-4154-b8d9-afa35fb509cb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16740,7 +16981,7 @@ PUT: /v1/nodes/node-39/states/provision {'target': 'active'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/node-39/states -Openstack-Request-Id: req-276639be-512c-4419-9f66-db8e6d2ad618 +Openstack-Request-Id: req-ed5a5dc2-96ce-472d-8fd2-e4de360087da X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 @@ -16748,7 +16989,7 @@ PUT: /v1/nodes/node-39/states/provision {'target': 'active'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-2e98218b-99e3-4955-9a6e-3ae3088bc17f +Openstack-Request-Id: req-c5f5e4dc-9b93-49c4-9e46-75e8f850f17f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16756,7 +16997,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-c1813958-f792-4d98-98d4-143ad0565510 +Openstack-Request-Id: req-af63d951-f2da-4feb-be6d-d61d3d187265 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.73 @@ -16764,7 +17005,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'not-supported'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-539ce5fe-825a-480b-993e-c81ec682f8da +Openstack-Request-Id: req-d35b31e4-558d-4a8e-8a3a-eca11ef59ac4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16772,7 +17013,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active'} GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-022f30f9-f09a-408a-9857-b8a8717bf41c +Openstack-Request-Id: req-c37e1b58-ff65-459f-a0a1-0433629554c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16780,7 +17021,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-3e1c891e-4f87-480f-9896-40eed80828c6 +Openstack-Request-Id: req-ff116045-2e73-4b0e-b596-d98b68e8df87 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -16788,7 +17029,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rescue', 'rescue_password': ' '} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-67c8961b-043a-42ac-b376-e81acb09f14a +Openstack-Request-Id: req-60c9a00b-224d-4999-b2d1-a760a8eb2c85 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -16796,203 +17037,154 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rescue', 'rescue_password': 'password'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-00fa0a82-47b1-4ca6-873f-41b35d093ea2 +Openstack-Request-Id: req-954d571e-bab5-4164-bed9-de1aa033cdbb X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'target': 'rescue', 'rescue_password': 'password'} -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_in_allowed_states -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_in_allowed_states ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_sepecified_by_path -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_sepecified_by_path ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_empty -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_empty ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_in_disallowed_states -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_in_disallowed_states ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_all_by_node_name_ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_all_by_node_name_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_004_nodes_post_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_004_nodes_post_reader ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_no_password -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_no_password ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unexpected_rescue_password -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unexpected_rescue_password ... ok -GOT:{'targets': [{'uuid': 'd0ee0cf6-895b-42b6-a673-942a9b98e575', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/d0ee0cf6-895b-42b6-a673-942a9b98e575', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/d0ee0cf6-895b-42b6-a673-942a9b98e575', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '70b97036-20f0-4669-a2b4-726669f75f81', 'boot_index': 1, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/70b97036-20f0-4669-a2b4-726669f75f81', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/70b97036-20f0-4669-a2b4-726669f75f81', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'eaf81f8f-2af1-43f2-8241-a54c97f194d3', 'boot_index': 2, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/eaf81f8f-2af1-43f2-8241-a54c97f194d3', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/eaf81f8f-2af1-43f2-8241-a54c97f194d3', '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=eaf81f8f-2af1-43f2-8241-a54c97f194d3'} -GET: /v1/volume/targets?detail=True&limit=3 {} -GOT:{'targets': [{'uuid': 'c0045bd7-ec61-4b2a-80cc-795775955762', 'created_at': '2024-01-06T13:33:46.808148+00:00', 'updated_at': None, 'boot_index': 0, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/c0045bd7-ec61-4b2a-80cc-795775955762', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/c0045bd7-ec61-4b2a-80cc-795775955762', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'c7c1f038-7f19-45b3-b03e-449391670d5a', 'created_at': '2024-01-06T13:33:46.820914+00:00', 'updated_at': None, 'boot_index': 1, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/c7c1f038-7f19-45b3-b03e-449391670d5a', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/c7c1f038-7f19-45b3-b03e-449391670d5a', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'e2232335-4740-409e-8e02-282a7291f3f8', 'created_at': '2024-01-06T13:33:46.825121+00:00', 'updated_at': None, 'boot_index': 2, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/e2232335-4740-409e-8e02-282a7291f3f8', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/e2232335-4740-409e-8e02-282a7291f3f8', '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=e2232335-4740-409e-8e02-282a7291f3f8'} -GET: /v1/volume/targets?detail=True {} -GOT:{'targets': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:33:47.163351+00:00', 'updated_at': None, '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?detail=True {} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-abb56e22-249f-46ea-ab72-5def10baff20 +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-dab61828-787c-4671-8e70-dbe7adf2ced1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: detail\", \"debuginfo\": null}"} -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?detail=True&fields=boot_index,extra {} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-22c39a6e-bcfb-4014-b63d-6d5403817de7 +X-Openstack-Ironic-Api-Version: 1.38 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rescue', 'rescue_password': 'password'} +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-53ddaf09-fca9-4226-95a8-0cd7cccf1b39 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: detail\", \"debuginfo\": null}"} -GET: /v1/volume/targets?detail=True&node=test-node {} -GOT:{'targets': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:33:47.964969+00:00', 'updated_at': None, '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?detail=False {} -GOT:{'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'}]} -GET: /v1/volume/targets?detail=True {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/volume/targets/detail {} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-c95c15fb-3bb4-4670-8d93-57c5491c66fd +X-Openstack-Ironic-Api-Version: 1.38 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rescue', 'rescue_password': 'password'} +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-802ca7f7-d464-404b-9cc5-728cf8de6a7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for target_uuid: detail\", \"debuginfo\": null}"} -GET: /v1/volume/targets {} -GOT:{'targets': []} -GET: /v1/volume/targets?node=test-node {} -GOT:{'targets': [{'uuid': '24a1dc75-156d-4346-82d6-e9d2d4954447', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/24a1dc75-156d-4346-82d6-e9d2d4954447', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/24a1dc75-156d-4346-82d6-e9d2d4954447', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'dd40462f-ae51-4608-88db-18b03be77a1f', 'boot_index': 1, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/dd40462f-ae51-4608-88db-18b03be77a1f', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/dd40462f-ae51-4608-88db-18b03be77a1f', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'f023c601-6e52-4d99-b988-2d427e688d58', 'boot_index': 2, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/f023c601-6e52-4d99-b988-2d427e688d58', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/f023c601-6e52-4d99-b988-2d427e688d58', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/volume/targets?fields=uuid,extra {} -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_collection_custom_fields -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_collection_custom_fields ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_collection_pagination_no_uuid -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_collection_pagination_no_uuid ... ok -POST: /v1/volume/targets {'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'} +X-Openstack-Ironic-Api-Version: 1.38 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rescue', 'rescue_password': 'password'} +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_in_disallowed_states +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_in_disallowed_states ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_no_password +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_no_password ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unexpected_rescue_password +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unexpected_rescue_password ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_063_nodes_states_console_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_063_nodes_states_console_get_member ... ok +GET: /v1/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb {} +GOT:{'uuid': 'c70e3b77-f9d6-4da9-82b3-cc439d7937bb', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb', 'rel': 'self'}, {'href': 'http://localhost/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/c70e3b77-f9d6-4da9-82b3-cc439d7937bb/volume', 'rel': 'bookmark'}]} +POST: /v1/nodes {'uuid': '64b6d893-b4d3-4683-9ad6-a8ef19211c75', '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', 'cpus': '8', '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/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-33789af1-9ae8-4027-af26-9f88d1f466db +Location: http://localhost/v1/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75 +Openstack-Request-Id: req-d388975f-ba1f-494f-9e80-f39c2cdea35a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:46.063767+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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:33:46.063767+00:00', 'updated_at': None, 'boot_index': 0, 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, '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'} -POST: /v1/volume/targets {'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'} +X-Openstack-Ironic-Api-Version: 1.40 +{"uuid": "64b6d893-b4d3-4683-9ad6-a8ef19211c75", "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", "cpus": "8", "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/64b6d893-b4d3-4683-9ad6-a8ef19211c75", "rel": "self"}, {"href": "http://localhost/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/ports", "rel": "self"}, {"href": "http://localhost/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/states", "rel": "self"}, {"href": "http://localhost/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/volume", "rel": "self"}, {"href": "http://localhost/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/volume", "rel": "bookmark"}]} +GET: /v1/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75 {} +GOT:{'uuid': '64b6d893-b4d3-4683-9ad6-a8ef19211c75', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75', 'rel': 'self'}, {'href': 'http://localhost/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/64b6d893-b4d3-4683-9ad6-a8ef19211c75/volume', 'rel': 'bookmark'}]} +POST: /v1/nodes {'uuid': '981553cb-e244-4267-bde5-bf51e3af8e29', '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', 'cpus': '8', '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/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-106b312b-7242-4f75-9dee-d09b3c5dd526 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:33:46.484505+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"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-b1ca8b7b-fefe-4042-a8ed-ddd7cd333a71 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-b1ca8b7b-fefe-4042-a8ed-ddd7cd333a71 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-a33ba894-34d8-47d3-bc66-81219bd3d65d +Location: http://localhost/v1/nodes/981553cb-e244-4267-bde5-bf51e3af8e29 +Openstack-Request-Id: req-f4a3b53b-eac6-41ab-a640-b5a27344b4e2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.40 +{"uuid": "981553cb-e244-4267-bde5-bf51e3af8e29", "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", "cpus": "8", "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/981553cb-e244-4267-bde5-bf51e3af8e29", "rel": "self"}, {"href": "http://localhost/nodes/981553cb-e244-4267-bde5-bf51e3af8e29", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/ports", "rel": "self"}, {"href": "http://localhost/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/states", "rel": "self"}, {"href": "http://localhost/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/volume", "rel": "self"}, {"href": "http://localhost/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/volume", "rel": "bookmark"}]} +GET: /v1/nodes/981553cb-e244-4267-bde5-bf51e3af8e29 {} +GOT:{'uuid': '981553cb-e244-4267-bde5-bf51e3af8e29', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/981553cb-e244-4267-bde5-bf51e3af8e29', 'rel': 'self'}, {'href': 'http://localhost/nodes/981553cb-e244-4267-bde5-bf51e3af8e29', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/981553cb-e244-4267-bde5-bf51e3af8e29/volume', 'rel': 'bookmark'}]} +POST: /v1/nodes {'uuid': '328f20e0-a50b-443c-9fb6-1687f82c12f1', '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', 'cpus': '8', '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 -Openstack-Request-Id: req-a33ba894-34d8-47d3-bc66-81219bd3d65d +Location: http://localhost/v1/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1 +Openstack-Request-Id: req-a645c3b3-9cc3-4879-931a-13d7ccc5af40 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.40 +{"uuid": "328f20e0-a50b-443c-9fb6-1687f82c12f1", "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", "cpus": "8", "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/328f20e0-a50b-443c-9fb6-1687f82c12f1", "rel": "self"}, {"href": "http://localhost/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/ports", "rel": "self"}, {"href": "http://localhost/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/states", "rel": "self"}, {"href": "http://localhost/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/volume", "rel": "self"}, {"href": "http://localhost/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/volume", "rel": "bookmark"}]} +GET: /v1/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1 {} +GOT:{'uuid': '328f20e0-a50b-443c-9fb6-1687f82c12f1', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1', 'rel': 'self'}, {'href': 'http://localhost/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/328f20e0-a50b-443c-9fb6-1687f82c12f1/volume', 'rel': 'bookmark'}]} +POST: /v1/nodes {'uuid': 'eba6681f-443b-4525-9f99-7ca51d6db985', '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', 'cpus': '8', '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 -Openstack-Request-Id: req-c7e39462-2e02-4475-b8d1-03b9df404c8c +Location: http://localhost/v1/nodes/eba6681f-443b-4525-9f99-7ca51d6db985 +Openstack-Request-Id: req-25be5f4e-67b4-4fae-955e-03c1577ebdf0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.40 +{"uuid": "eba6681f-443b-4525-9f99-7ca51d6db985", "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", "cpus": "8", "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/eba6681f-443b-4525-9f99-7ca51d6db985", "rel": "self"}, {"href": "http://localhost/nodes/eba6681f-443b-4525-9f99-7ca51d6db985", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/ports", "rel": "self"}, {"href": "http://localhost/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/states", "rel": "self"}, {"href": "http://localhost/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/volume", "rel": "self"}, {"href": "http://localhost/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/volume", "rel": "bookmark"}]} +GET: /v1/nodes/eba6681f-443b-4525-9f99-7ca51d6db985 {} +GOT:{'uuid': 'eba6681f-443b-4525-9f99-7ca51d6db985', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/eba6681f-443b-4525-9f99-7ca51d6db985', 'rel': 'self'}, {'href': 'http://localhost/nodes/eba6681f-443b-4525-9f99-7ca51d6db985', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/eba6681f-443b-4525-9f99-7ca51d6db985/volume', 'rel': 'bookmark'}]} +POST: /v1/nodes {'uuid': '4bf56309-cf8d-4c40-ab3f-495e912423d1', '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', 'cpus': '8', '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 -Openstack-Request-Id: req-c7e39462-2e02-4475-b8d1-03b9df404c8c +Location: http://localhost/v1/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1 +Openstack-Request-Id: req-26e85195-0465-400c-a43e-2485ac9a32d9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_005_nodes_get_node_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_005_nodes_get_node_admin ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_custom_fields_invalid_fields -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_custom_fields_invalid_fields ... ok +X-Openstack-Ironic-Api-Version: 1.40 +{"uuid": "4bf56309-cf8d-4c40-ab3f-495e912423d1", "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", "cpus": "8", "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/4bf56309-cf8d-4c40-ab3f-495e912423d1", "rel": "self"}, {"href": "http://localhost/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/ports", "rel": "self"}, {"href": "http://localhost/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/states", "rel": "self"}, {"href": "http://localhost/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/volume", "rel": "self"}, {"href": "http://localhost/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/volume", "rel": "bookmark"}]} +GET: /v1/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1 {} +GOT:{'uuid': '4bf56309-cf8d-4c40-ab3f-495e912423d1', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1', 'rel': 'self'}, {'href': 'http://localhost/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/4bf56309-cf8d-4c40-ab3f-495e912423d1/volume', 'rel': 'bookmark'}]} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_077_nodes_vendor_passthru_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_077_nodes_vendor_passthru_put_member ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unrescue_in_allowed_states ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unrescue_in_allowed_states ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one_custom_fields -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one_custom_fields ... ok -GOT:Response: 200 OK +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_064_nodes_states_console_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_064_nodes_states_console_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_078_nodes_vendor_passthru_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_078_nodes_vendor_passthru_put_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unrescue_in_disallowed_states +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unrescue_in_disallowed_states ... ok +POST: /v1/nodes {'uuid': '18aa8cc1-7073-4018-b4aa-cf044f34eaab', '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', 'cpus': '8', '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 -Openstack-Request-Id: req-39086db0-5ca9-4c36-9fa8-7d80e873399f +Location: http://localhost/v1/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab +Openstack-Request-Id: req-73726a28-8a20-4f0d-8ae9-06042de07a2e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:49.898631+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -driver -fake-driverz -ACL Test GOT Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.40 +{"uuid": "18aa8cc1-7073-4018-b4aa-cf044f34eaab", "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", "cpus": "8", "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/18aa8cc1-7073-4018-b4aa-cf044f34eaab", "rel": "self"}, {"href": "http://localhost/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/ports", "rel": "self"}, {"href": "http://localhost/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/states", "rel": "self"}, {"href": "http://localhost/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/volume", "rel": "self"}, {"href": "http://localhost/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/volume", "rel": "bookmark"}]} +GET: /v1/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab {} +GOT:{'uuid': '18aa8cc1-7073-4018-b4aa-cf044f34eaab', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'inspection_started_at': None, 'inspect_interface': 'fake', 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'management_interface': 'fake', 'name': None, 'network_interface': 'flat', 'power_interface': 'fake', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'enroll', 'provision_updated_at': None, 'raid_config': {}, 'raid_interface': 'fake', 'rescue_interface': 'fake', 'reservation': None, 'resource_class': None, 'storage_interface': 'noop', 'target_power_state': None, 'target_provision_state': None, 'target_raid_config': {}, 'traits': [], 'vendor_interface': 'fake', 'links': [{'href': 'http://localhost/v1/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab', 'rel': 'self'}, {'href': 'http://localhost/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab', 'rel': 'bookmark'}], 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'ports': [{'href': 'http://localhost/v1/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/ports', 'rel': 'self'}, {'href': 'http://localhost/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/ports', 'rel': 'bookmark'}], 'states': [{'href': 'http://localhost/v1/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/states', 'rel': 'self'}, {'href': 'http://localhost/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/states', 'rel': 'bookmark'}], 'portgroups': [{'href': 'http://localhost/v1/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/portgroups', 'rel': 'self'}, {'href': 'http://localhost/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/portgroups', 'rel': 'bookmark'}], 'volume': [{'href': 'http://localhost/v1/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/volume', 'rel': 'self'}, {'href': 'http://localhost/nodes/18aa8cc1-7073-4018-b4aa-cf044f34eaab/volume', 'rel': 'bookmark'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-39086db0-5ca9-4c36-9fa8-7d80e873399f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:49.898631+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_006_nodes_get_node_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_006_nodes_get_node_member ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one_invalid_api_version ... ok -GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-d8323fee-b10d-4be0-a5b8-e6c4170c150e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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 {'target': 'rescue', 'rescue_password': 'password'} -GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-2c65eb59-8c34-407b-9676-a02e9119c7bc +Openstack-Request-Id: req-e8bc613b-0e94-4ee8-92b0-6537402530b4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'target': 'rescue', 'rescue_password': 'password'} -GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-277731a5-a5d9-4aaf-9e09-488978f2361f +X-Openstack-Ironic-Api-Version: 1.30 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/nodes {'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', 'cpus': '8', '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-c7d2b95d-bb93-4754-a98b-2e01a46f0ce8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'target': 'rescue', 'rescue_password': 'password'} +X-Openstack-Ironic-Api-Version: 1.30 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'deploy_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_065_nodes_states_console_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_065_nodes_states_console_put_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_cleansteps_not_clean +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_cleansteps_not_clean ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_079_nodes_vendor_passthru_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_079_nodes_vendor_passthru_delete_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces_bad_version +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces_bad_version ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_080_nodes_vendor_passthru_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_080_nodes_vendor_passthru_delete_member ... ok GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-78a73a2c-9731-4b83-871d-0fcaa7d59922 +Openstack-Request-Id: req-ec0685b5-e513-48d0-9f00-3c03ab67d386 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -17000,7 +17192,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rescue', 'rescue_password': 'password'} GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-ccd8c10d-70c9-4094-a8d5-bbdb72601aa7 +Openstack-Request-Id: req-92dfe5b5-41ee-4983-a5f4-bfb27f952f70 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -17008,7 +17200,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rescue', 'rescue_password': 'password'} GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-37e70334-060b-4332-b5ca-87b5738c8cfd +Openstack-Request-Id: req-667877f3-fc02-48d5-b349-eb3e9e88cf4c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -17016,7 +17208,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rescue', 'rescue_password': 'password'} GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-b34548a2-86ef-4c27-ae8a-c1a43f7fbf08 +Openstack-Request-Id: req-985ed87e-afa8-42e7-82a1-5affda007790 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -17024,7 +17216,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rescue'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-71c29015-70c1-45ce-8ac5-7303f2bbbcf5 +Openstack-Request-Id: req-5d17887c-91d8-4aa8-a5f5-2865c4b817a7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -17032,7 +17224,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active', 'rescue_password': 'password'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-f04973be-092f-4280-9b08-8ed640326034 +Openstack-Request-Id: req-b6a48897-9409-4157-b0e6-900f18106b15 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -17040,7 +17232,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'unrescue'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-7b3c997f-1dcb-4105-8ae9-af14dcb44b97 +Openstack-Request-Id: req-8f8f5fb0-74cc-4455-ab20-4d490b705fa3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -17048,7 +17240,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'unrescue'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-512db7b6-1c77-453d-a9ad-6e6460a98640 +Openstack-Request-Id: req-1e9a31d8-0dc6-4ed2-91b5-b3f1a865d65c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -17056,7 +17248,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'unrescue'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-4aeaa753-0ae7-4553-9da8-0573f46599fe +Openstack-Request-Id: req-4e27faa4-d17f-4b60-9e5b-9ee4ccbe3103 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -17064,7 +17256,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'unrescue'} GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-79e35db7-829c-4d42-8bb7-45618452aedf +Openstack-Request-Id: req-45a1fec0-f888-4aab-8670-feac414b1eeb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -17072,7 +17264,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'unrescue'} GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-182b2b0e-58db-42e5-8414-70db2684d30b +Openstack-Request-Id: req-c8a63df9-65e9-4777-8317-36ee4d8f97da X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -17080,7 +17272,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'unrescue'} GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-f11db6bb-bdbd-4b96-9df5-f14b0a8e3a38 +Openstack-Request-Id: req-a37e3381-ac82-4120-ab4d-d372f794bc90 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 @@ -17088,226 +17280,493 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'unrescue'} GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-d74eba64-1a8f-4888-a6f7-410cc29837ef +Openstack-Request-Id: req-2bb617c9-5237-46bb-aaf1-abb61b927cc4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'target': 'unrescue'} -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unrescue_in_disallowed_states -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unrescue_in_disallowed_states ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_cleansteps_not_clean -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_cleansteps_not_clean ... ok -GOT:Response: 200 OK +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-4f9f0313-f1ad-4a53-b5e8-3edba1b97a9a +Openstack-Request-Id: req-604e2565-413e-40c5-9519-95be907ab1e9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:50.600814+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -ACL Test GOT Response: 200 OK +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 {'target': 'provide', 'clean_steps': 'foo'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-4f9f0313-f1ad-4a53-b5e8-3edba1b97a9a +Openstack-Request-Id: req-762b3ee4-94f2-417e-b91f-244a98b76207 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:50.600814+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_007_nodes_get_node_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_007_nodes_get_node_reader ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_links -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_links ... ok -ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_token -ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_token ... ok +X-Openstack-Ironic-Api-Version: 1.4 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected types , for clean_steps: foo\", \"debuginfo\": null}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deleted', 'configdrive': 'foo'} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_configdrive_not_active ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_configdrive_not_active ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_008_nodes_get_node_other_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_008_nodes_get_node_other_admin ... skipped 'Not implemented yet' ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_many -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_many ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_one -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_one ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_traits +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_081_nodes_vendor_passthru_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_081_nodes_vendor_passthru_delete_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_after_deployfail ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_after_deployfail ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_one_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_one_invalid_api_version ... ok -GOT:Response: 200 OK +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_storage_interface_old_api_version +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_storage_interface_old_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_082_nodes_traits_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_082_nodes_traits_get_admin ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cef2da11-d227-4b12-80ab-bbce20f5cd05 +Openstack-Request-Id: req-e5850d59-e45d-4410-b98c-6c7875e9b58e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:51.245110+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -driver -fake-driverz -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cef2da11-d227-4b12-80ab-bbce20f5cd05 +Openstack-Request-Id: req-6632dd28-8d76-4868-aceb-917aa0ca34dc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:51.245110+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3c201913-75da-4bd7-a39b-d29c744b6b5c +Openstack-Request-Id: req-ec51ab5c-1a79-4df1-9fd1-652298906d3c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "c100c241-c8f7-428f-805e-ddb96f9f99c0", "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"}]}]} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_009_nodes_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_009_nodes_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_as_dict -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_as_dict ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_010_nodes_get_other_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_010_nodes_get_other_admin ... skipped 'Not implemented yet' -GOT:{'targets': [{'uuid': '1669bbe0-724c-4825-ad29-55764cfb1ce7', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/targets/1669bbe0-724c-4825-ad29-55764cfb1ce7', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/1669bbe0-724c-4825-ad29-55764cfb1ce7', 'rel': 'bookmark'}]}, {'uuid': 'f3602a21-7d4b-49e7-8d86-e20fbc14c706', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/targets/f3602a21-7d4b-49e7-8d86-e20fbc14c706', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/f3602a21-7d4b-49e7-8d86-e20fbc14c706', 'rel': 'bookmark'}]}, {'uuid': 'ad8f0374-087e-4775-b965-73e290e5ccf7', 'extra': {}, 'links': [{'href': 'http://localhost/v1/volume/targets/ad8f0374-087e-4775-b965-73e290e5ccf7', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/ad8f0374-087e-4775-b965-73e290e5ccf7', 'rel': 'bookmark'}]}]} -GET: /v1/volume/targets?fields=boot_index&limit=2 {} -GOT:{'targets': [{'boot_index': 0, 'links': [{'href': 'http://localhost/v1/volume/targets/dbe0eda1-1f1a-4b8e-8364-652fcd12871e', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/dbe0eda1-1f1a-4b8e-8364-652fcd12871e', 'rel': 'bookmark'}]}, {'boot_index': 1, 'links': [{'href': 'http://localhost/v1/volume/targets/904106b9-3fbf-4e70-9c7b-f3518060f31e', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/904106b9-3fbf-4e70-9c7b-f3518060f31e', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/volume/targets?sort_key=id&sort_dir=asc&fields=boot_index&limit=2&marker=904106b9-3fbf-4e70-9c7b-f3518060f31e'} -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,spongebob {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ac180a7c-1434-482f-8247-d5fff7d5eb17 +Openstack-Request-Id: req-7ca3cf93-2ff0-4fa9-b602-b1d9515cb12a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:33:50.771354+00:00', 'updated_at': None, '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?fields=boot_index,extra {} -GOT:{'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'}]} -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} GOT:Response: 404 Not Found Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/volume/targets/5da7eaf4-46f3-4186-91dd-5a512ec25f05 {} -GOT:{'uuid': '5da7eaf4-46f3-4186-91dd-5a512ec25f05', 'created_at': '2024-01-06T13:33:51.547007+00:00', 'updated_at': None, 'boot_index': 0, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/5da7eaf4-46f3-4186-91dd-5a512ec25f05', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/5da7eaf4-46f3-4186-91dd-5a512ec25f05', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/volume/targets/5da7eaf4-46f3-4186-91dd-5a512ec25f05 {} -GOT:{'uuid': '5da7eaf4-46f3-4186-91dd-5a512ec25f05', 'created_at': '2024-01-06T13:33:51.547007+00:00', 'updated_at': None, 'boot_index': 0, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/5da7eaf4-46f3-4186-91dd-5a512ec25f05', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/5da7eaf4-46f3-4186-91dd-5a512ec25f05', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /volume/targets/5da7eaf4-46f3-4186-91dd-5a512ec25f05 {} -GOT:{'uuid': '5da7eaf4-46f3-4186-91dd-5a512ec25f05', 'created_at': '2024-01-06T13:33:51.547007+00:00', 'updated_at': None, 'boot_index': 0, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/5da7eaf4-46f3-4186-91dd-5a512ec25f05', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/5da7eaf4-46f3-4186-91dd-5a512ec25f05', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/volume/targets {} -GOT:{'targets': [{'uuid': 'f0da0e1d-eac0-4b60-b653-4dc3afc72812', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/f0da0e1d-eac0-4b60-b653-4dc3afc72812', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/f0da0e1d-eac0-4b60-b653-4dc3afc72812', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '85814696-ad5b-4b2a-b437-89f3f5b3cfde', 'boot_index': 1, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/85814696-ad5b-4b2a-b437-89f3f5b3cfde', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/85814696-ad5b-4b2a-b437-89f3f5b3cfde', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '62101e26-d1f5-4488-ae51-14d5615ecac8', 'boot_index': 2, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/62101e26-d1f5-4488-ae51-14d5615ecac8', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/62101e26-d1f5-4488-ae51-14d5615ecac8', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'd5c6b3f2-9635-4956-8df1-e09f8b31d7ba', 'boot_index': 3, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/d5c6b3f2-9635-4956-8df1-e09f8b31d7ba', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/d5c6b3f2-9635-4956-8df1-e09f8b31d7ba', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'd8d8ef58-a697-4216-a67a-c7a94bf4eea8', 'boot_index': 4, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/d8d8ef58-a697-4216-a67a-c7a94bf4eea8', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/d8d8ef58-a697-4216-a67a-c7a94bf4eea8', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/volume/targets {} -GOT:{'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'}]} -GET: /v1/volume/targets {} +Openstack-Request-Id: req-9e5c4d11-9a47-44fd-a84c-9ea8eebefbfc +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} GOT:Response: 404 Not Found Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/volume/targets?sort_key=uuid {} -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_sort_key -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_sort_key ... ok +Openstack-Request-Id: req-d9e56ce2-d0ac-4745-872d-5129d51bdd7a +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-132e93f3-edb9-4221-a46f-10cc382d181b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'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-7e3a1edc-e456-4fb4-9d29-27e851649cbd +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'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-87d97b9d-fe83-4f45-b46b-6ce6b62a9fb0 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'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-e5a96715-d1e0-474d-b768-3344b1c2d6ba +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-91775cbc-fde0-4771-8fe9-4366345c51e1 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-988f26de-d250-45af-8655-4c96bd24a378 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-7c287395-de5f-48af-bbd2-5ad7031d4132 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-7800c3b9-822c-4200-85f7-7a573701e24d +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_066_nodes_states_console_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_066_nodes_states_console_put_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_as_dict +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_as_dict ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_067_nodes_vendor_passthru_methods_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_067_nodes_vendor_passthru_methods_get_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_as_dict_all_fields ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_as_dict_all_fields ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_sort_key_invalid -ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_sort_key_invalid ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_068_nodes_vendor_passthru_methods_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_068_nodes_vendor_passthru_methods_get_member ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_invalid_type ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_invalid_type ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_001_values -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_001_values ... skipped 'These are fake reference values for YAML templating' -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_not_base64 -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_not_base64 ... ok -ACL Test GOT Response: 200 OK +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-1f9da2b0-4148-43ac-94b5-fdb7a125289c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 {'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', 'cpus': '8', '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-3fc97549-62d6-45d6-bbc4-8d439f49dc1a +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'management_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-28a7ff8b-93fa-49ff-9016-4eb12da3b58b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 {'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', 'cpus': '8', '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-4630b2dd-e7cb-4491-b056-d11d33b7416f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 {'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', 'cpus': '8', '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-2639313a-e3ad-4a55-9244-7ee08b932421 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 {'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', 'cpus': '8', '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-7097f02a-abe3-4c1b-900e-97e92e699768 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 {'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', 'cpus': '8', '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-3c201913-75da-4bd7-a39b-d29c744b6b5c +Openstack-Request-Id: req-96bb756f-1947-49ba-a78e-9aef15599af3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "c100c241-c8f7-428f-805e-ddb96f9f99c0", "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"}]}]} -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for node: Additional properties are not allowed ('traits' was unexpected)\", \"debuginfo\": null}"} +POST: /v1/nodes {'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', 'cpus': '8', '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-5db15ba1-f4fa-46f8-97ba-81959f173b5e +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +POST: /v1/nodes {'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', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_driver_info +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_driver_info ... ok +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-3f529a54-30e6-4be6-bfc7-f9c486abc4c6 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-3f529a54-30e6-4be6-bfc7-f9c486abc4c6 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-aba309d2-60d4-4657-b1fa-f1c73dd035c9 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-aba309d2-60d4-4657-b1fa-f1c73dd035c9 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-3dc398bb-e088-45b1-8188-2615292c5bef +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-3dc398bb-e088-45b1-8188-2615292c5bef +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-ebd32cc0-df41-4971-957b-c137a75909be +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-ebd32cc0-df41-4971-957b-c137a75909be +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +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-f611037f-cb50-4d2e-81d4-b2eb23776716 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-f611037f-cb50-4d2e-81d4-b2eb23776716 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +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-02f39afa-4bbc-42d1-b75f-bf816c8d92e0 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-02f39afa-4bbc-42d1-b75f-bf816c8d92e0 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-ac03dda7-5d2e-4020-9685-83a2ba13cff2 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-ac03dda7-5d2e-4020-9685-83a2ba13cff2 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-bd4f75d8-61c0-4f18-882a-141f9a497985 +Openstack-Request-Id: req-803ce52c-a611-4a91-8298-833301cc9f85 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:53.611544+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T13:33:53.638747+00:00", "updated_at": "2024-01-06T13:33:53.670488+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "6cc9f9bd-5a2c-4821-a500-52bb18be2ec2", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "6cc9f9bd-5a2c-4821-a500-52bb18be2ec2", "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": "2024-01-06T13:33:53.784199+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", "cpus": "8", "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/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"}]}]} +{"traits": ["trait1"]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-bd4f75d8-61c0-4f18-882a-141f9a497985 +Openstack-Request-Id: req-803ce52c-a611-4a91-8298-833301cc9f85 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:53.611544+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T13:33:53.638747+00:00", "updated_at": "2024-01-06T13:33:53.670488+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "6cc9f9bd-5a2c-4821-a500-52bb18be2ec2", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "6cc9f9bd-5a2c-4821-a500-52bb18be2ec2", "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": "2024-01-06T13:33:53.784199+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", "cpus": "8", "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/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"}]}]}ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_011_nodes_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_011_nodes_detail_get_admin ... ok +{"traits": ["trait1"]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-876ce91c-aa65-4fe9-880b-18b331326578 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_083_nodes_traits_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_083_nodes_traits_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_not_base64 +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_not_base64 ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_084_nodes_traits_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_084_nodes_traits_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_069_nodes_vendor_passthru_methods_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_069_nodes_vendor_passthru_methods_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_extra +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_extra ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_url ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_url ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_002_nodes_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_002_nodes_post_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_070_nodes_vendor_passthru_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_070_nodes_vendor_passthru_get_admin ... ok /usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_085_nodes_traits_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_085_nodes_traits_put_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_deploy_steps ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_deploy_steps ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_deploy_steps_fail ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_deploy_steps_fail ... ok -ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_without_token -ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_without_token ... ok - -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} -ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address -ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_003_nodes_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_003_nodes_post_member ... ok -ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_show_failed -ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_show_failed ... ok -ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_unbind_port_failed -ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_unbind_port_failed ... ok -GOT:Response: 200 OK +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-ba32d306-9a3f-4881-a44f-68bf2189ca1f +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-f0abb152-95e3-4a0e-b81f-b75e1acd43a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:55.185991+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T13:33:55.205881+00:00", "updated_at": "2024-01-06T13:33:55.244348+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "80a79925-9036-4348-954c-320b4ae32a80", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "80a79925-9036-4348-954c-320b4ae32a80", "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": "2024-01-06T13:33:55.370044+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", "cpus": "8", "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/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"}]}]} -ACL Test GOT Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:21.375072+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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:21.375072+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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 -Openstack-Request-Id: req-ba32d306-9a3f-4881-a44f-68bf2189ca1f +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-bd5e4eb8-5c39-4052-891b-bf0e0e00c6fa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:55.185991+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T13:33:55.205881+00:00", "updated_at": "2024-01-06T13:33:55.244348+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "80a79925-9036-4348-954c-320b4ae32a80", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "80a79925-9036-4348-954c-320b4ae32a80", "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": "2024-01-06T13:33:55.370044+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", "cpus": "8", "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/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"}]}]}ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_012_nodes_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_012_nodes_detail_get_member ... ok +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:21.775591+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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:21.775591+00:00', 'updated_at': None, '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': None, 'dict': {'cat': 'meow'}}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} +POST: /v1/nodes {'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'} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_properties +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_properties ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_071_nodes_vendor_passthru_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_071_nodes_vendor_passthru_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_086_nodes_traits_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_086_nodes_traits_put_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_072_nodes_vendor_passthru_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_072_nodes_vendor_passthru_get_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_configdrive ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_configdrive ... ok -ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_with_binding -ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_with_binding ... ok -ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_with_exception -ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_with_exception ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_chassis_uuid +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_chassis_uuid ... ok /usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_without_binding -ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_without_binding ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_004_nodes_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_004_nodes_post_observer ... ok -GOT:Response: 409 Conflict +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_073_nodes_vendor_passthru_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_073_nodes_vendor_passthru_post_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_deploy_steps +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_deploy_steps ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_unsupported_configdrive +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_unsupported_configdrive ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_074_nodes_vendor_passthru_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_074_nodes_vendor_passthru_post_member ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-02b79ea3-c14f-48f7-935a-86ca89ba6ce7 +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-fd7d833b-5db6-430a-b57d-da389ebc8051 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {'target': 'provide', 'clean_steps': 'foo'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:22.105923+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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:22.105923+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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 -Openstack-Request-Id: req-bca9e5f8-94bb-46bf-817a-a9896e15a77f +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +Openstack-Request-Id: req-77354a35-e79f-4d8e-a236-0739c71f80f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deleted', 'configdrive': 'foo'} +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:22.508910+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", "cpus": "8", "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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:22.508910+00:00', 'updated_at': None, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'extra': {}, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': None, 'provision_updated_at': None, 'reservation': None, 'target_power_state': None, 'target_provision_state': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-454d7203-fcf3-4ea4-bd69-8135c53e9e81 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:11:22.843718+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", "cpus": "8", "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 {} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_default_resource_class +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_default_resource_class ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_087_nodes_traits_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_087_nodes_traits_put_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_internal_field +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_internal_field ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_088_nodes_traits_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_088_nodes_traits_delete_admin ... ok GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-ac61a93f-c54c-43d6-8704-c6144b6a7a6f +Openstack-Request-Id: req-a80bda4f-ef1c-4511-9a38-84c2943450ef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -17315,7 +17774,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-c2f9b464-d0fa-4a02-9b96-518612e997b0 +Openstack-Request-Id: req-3c4f748b-6bbb-40b7-873f-2890f2f976b8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -17323,7 +17782,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-cfafb59f-c8db-47c5-bdfe-02934138171e +Openstack-Request-Id: req-95756e38-279f-44fc-847d-f38b0fb61e83 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -17331,7 +17790,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'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-6da54285-90db-4b35-8cf5-2337b999a9ea +Openstack-Request-Id: req-bd2a116c-fd43-425e-b542-f49999ad44b4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -17339,7 +17798,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'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-ba271c8c-aa27-4953-86d4-ddd37468351e +Openstack-Request-Id: req-5e93cd76-fb4a-471a-960c-eec409413b2f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.56 @@ -17347,7 +17806,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'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-5980d955-693e-4f12-82f7-5b39a0c3b2b1 +Openstack-Request-Id: req-cada7c3c-8040-49c2-9a0a-54af4e14dad2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 @@ -17355,7 +17814,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active', 'configdrive': ['aabb']} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-7a2c3f90-c5a9-457c-8956-76443ba1ec0e +Openstack-Request-Id: req-f0493f0b-e768-442f-a35a-c366e554f07c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 @@ -17363,7 +17822,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active', 'configdrive': '{"meta_data": '} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-f781650a-a520-426f-8538-1ccfad7cf153 +Openstack-Request-Id: req-e7015dab-828c-4399-91df-8cd0fec20c44 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 @@ -17371,7 +17830,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'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-50650a5b-bbd1-4670-bc89-30fad3b7e002 +Openstack-Request-Id: req-feda2292-04f0-4b63-8154-468e35348c52 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -17379,7 +17838,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'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-fe79c6ad-113f-4585-99ce-2978af88b5ac +Openstack-Request-Id: req-647623e2-0e64-4da8-904b-8af0b1d18f7e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -17387,7 +17846,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'active', 'deploy_steps': [{'interface': 'bios', 'step': 'factory_reset'}]} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-bbfb7612-1e1b-489c-8fd3-3c20eeee7d4a +Openstack-Request-Id: req-f09d64bd-4df2-4818-bcc4-7e373fa7f574 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -17395,7 +17854,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rebuild'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-42ce380c-aa7b-4c0f-94f3-202da76b1ba2 +Openstack-Request-Id: req-b1f774d9-5a74-4fee-931d-5d1b31346340 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -17403,371 +17862,663 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rebuild', 'configdrive': 'foo'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-9e021454-b807-4f7a-a594-24cfaecf027a +Openstack-Request-Id: req-dc69b87d-273e-4a50-a700-f53a81bdc73f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.35 PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rebuild', 'deploy_steps': [{'interface': 'bios', 'step': 'factory_reset', 'priority': 95, 'args': {}}]} -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_deploy_steps -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_deploy_steps ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_unsupported_configdrive -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_unsupported_configdrive ... ok +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-4e3ca5d3-9499-4ec9-a385-81be7f1ebd98 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.1 -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rebuild', 'configdrive': 'foo'} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-56fdad11-efa9-479c-b378-061ea1f7c4c4 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deleted'} +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-a3ed709f-7f90-4282-9d14-6c4be917cadb +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.1 + +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down_in_progress_deploywait +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down_in_progress_deploywait ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_075_nodes_vendor_passthru_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_075_nodes_vendor_passthru_post_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_portgroups_subresource +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_portgroups_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down_undeploy +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down_undeploy ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_089_nodes_traits_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_089_nodes_traits_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_076_nodes_vendor_passthru_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_076_nodes_vendor_passthru_put_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_ports_subresource +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_ports_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_ports_subresource_no_node_id +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_ports_subresource_no_node_id ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_090_nodes_traits_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_090_nodes_traits_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_077_nodes_vendor_passthru_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_077_nodes_vendor_passthru_put_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_connectors_subresource +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_connectors_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_connectors_subresource_no_node_id +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_connectors_subresource_no_node_id ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_091_nodes_traits_trait_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_091_nodes_traits_trait_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_078_nodes_vendor_passthru_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_078_nodes_vendor_passthru_put_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_targets_subresource +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_targets_subresource ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_iface_not_supported +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_iface_not_supported ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_async +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_async ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_invalid_parameter_value +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_invalid_parameter_value ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_079_nodes_vendor_passthru_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_079_nodes_vendor_passthru_delete_admin ... ok +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-876ce91c-aa65-4fe9-880b-18b331326578 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-143bd8fb-6e22-4be8-82a2-1a6e60fd229b +Openstack-Request-Id: req-614f5406-a893-41ec-bbc7-d8f7c5068429 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:56.141330+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T13:33:56.176799+00:00", "updated_at": "2024-01-06T13:33:56.233377+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "5a0be882-dccd-4bec-bf40-dc88477f2045", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "5a0be882-dccd-4bec-bf40-dc88477f2045", "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": "2024-01-06T13:33:56.296636+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", "cpus": "8", "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/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"}]}]} +{"traits": ["trait1"]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-143bd8fb-6e22-4be8-82a2-1a6e60fd229b +Openstack-Request-Id: req-614f5406-a893-41ec-bbc7-d8f7c5068429 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:56.141330+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T13:33:56.176799+00:00", "updated_at": "2024-01-06T13:33:56.233377+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "5a0be882-dccd-4bec-bf40-dc88477f2045", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "5a0be882-dccd-4bec-bf40-dc88477f2045", "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": "2024-01-06T13:33:56.296636+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", "cpus": "8", "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/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"}]}]}ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_013_nodes_detail_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_013_nodes_detail_get_reader ... ok -ironic.tests.unit.common.test_nova.TestNovaAdapter.test_get_nova_adapter -ironic.tests.unit.common.test_nova.TestNovaAdapter.test_get_nova_adapter ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_014_nodes_node_ident_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_014_nodes_node_ident_get_admin ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipa_debug_rescue -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipa_debug_rescue ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_005_nodes_get_node_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_005_nodes_get_node_admin ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_from_driver_info -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_from_driver_info ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down_in_progress_deploywait -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down_in_progress_deploywait ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_from_instance_info -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_from_instance_info ... ok - -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 200 OK +{"traits": ["trait1"]} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7da4b440-adf8-4786-8e68-f8991a115c7b +Openstack-Request-Id: req-5aeb3d49-e684-4ecd-83de-52e17faccac5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:57.049166+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7da4b440-adf8-4786-8e68-f8991a115c7b +Openstack-Request-Id: req-5aeb3d49-e684-4ecd-83de-52e17faccac5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:57.049166+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_015_nodes_node_ident_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_015_nodes_node_ident_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down_undeploy -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down_undeploy ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_006_nodes_get_node_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_006_nodes_get_node_member ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_with_default -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_with_default ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-622d58c9-bc80-4323-a20a-a0a9c358815f +Openstack-Request-Id: req-b78764c8-681f-4ab9-a06f-37d0048dd674 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:57.747666+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-622d58c9-bc80-4323-a20a-a0a9c358815f +Openstack-Request-Id: req-b78764c8-681f-4ab9-a06f-37d0048dd674 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:57.747666+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_016_nodes_node_ident_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_016_nodes_node_ident_get_reader ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_iface_not_supported -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_iface_not_supported ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_007_nodes_get_node_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_007_nodes_get_node_observer ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_ipa_debug -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_ipa_debug ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_invalid_parameter_value -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_invalid_parameter_value ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_008_nodes_get_node_other_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_008_nodes_get_node_other_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_017_nodes_node_ident_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_017_nodes_node_ident_patch_admin ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_older_version -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_older_version ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_local_boot -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_local_boot ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_no_kernel_no_ramdisk -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_no_kernel_no_ramdisk ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_rescue_raises_error_before_1_38 -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_rescue_raises_error_before_1_38 ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_009_nodes_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_009_nodes_get_admin ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_opts_ramdisk_opt -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_opts_ramdisk_opt ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_None -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_None ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_018_system_admin_can_patch_chassis -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_018_system_admin_can_patch_chassis ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_boo -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_boo ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_010_nodes_get_other_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_010_nodes_get_other_admin ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_rescue -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_rescue ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_nullstr -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_nullstr ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_without_is_whole_disk_image -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_without_is_whole_disk_image ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_older_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_older_soft_ver ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_011_nodes_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_011_nodes_detail_get_admin ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ramdisk_params -ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ramdisk_params ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-73aa9ef8-41b1-4cd4-bdb2-11546585d470 +Openstack-Request-Id: req-2816278a-c526-4f6d-8cfc-a48042eac012 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:58.622714+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-73aa9ef8-41b1-4cd4-bdb2-11546585d470 +Openstack-Request-Id: req-2816278a-c526-4f6d-8cfc-a48042eac012 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:33:58.622714+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7cb61bf6-a9aa-46c2-84e9-f0a779b7d868 +Openstack-Request-Id: req-0f1bb04f-a952-4e0c-b513-59195192bf0e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7cb61bf6-a9aa-46c2-84e9-f0a779b7d868 +Openstack-Request-Id: req-0f1bb04f-a952-4e0c-b513-59195192bf0e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/chassis_uuid', 'value': 'e74c40e0-d825-11e2-a28f-0800200c9a66'}] +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-0e3bc570-80e9-4ead-843b-7a958e7cedbb +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-0e3bc570-80e9-4ead-843b-7a958e7cedbb +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-8dc8acb6-8524-4653-aba5-47c061abcab6 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-8dc8acb6-8524-4653-aba5-47c061abcab6 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7057f7df-886d-491c-b7ca-293931e6d855 +Openstack-Request-Id: req-313fdcf2-6b8d-4432-ba45-e9cfbc3150cf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7057f7df-886d-491c-b7ca-293931e6d855 +Openstack-Request-Id: req-313fdcf2-6b8d-4432-ba45-e9cfbc3150cf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/conductor_group', 'value': 'DC04-ROW39'}] -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_019_system_member_can_patch_conductor_group -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_019_system_member_can_patch_conductor_group ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_valid_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_valid_soft_ver ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_012_nodes_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_012_nodes_detail_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_valid_undocumented_request_zero -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_valid_undocumented_request_zero ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe_insecure_heartbeat -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe_insecure_heartbeat ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_020_nodes_node_ident_patch_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_020_nodes_node_ident_patch_member ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_invalid_request_two -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_invalid_request_two ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe_source_path -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe_source_path ... ok -GOT:{'targets': [{'uuid': '6ac55c01-fc75-4e3e-918b-c621a538c73e', 'boot_index': 2, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/6ac55c01-fc75-4e3e-918b-c621a538c73e', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/6ac55c01-fc75-4e3e-918b-c621a538c73e', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': '727c279b-1f42-4a38-aa5a-d2a7f40dc9e6', 'boot_index': 0, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/727c279b-1f42-4a38-aa5a-d2a7f40dc9e6', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/727c279b-1f42-4a38-aa5a-d2a7f40dc9e6', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}, {'uuid': 'bc71d097-fafd-4568-a331-87d017cf0ce2', 'boot_index': 1, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/bc71d097-fafd-4568-a331-87d017cf0ce2', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/bc71d097-fafd-4568-a331-87d017cf0ce2', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/volume/targets?sort_key=foo {} -GOT:Response: 400 Bad Request +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_092_nodes_traits_trait_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_092_nodes_traits_trait_put_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_older_version +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_older_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_by_name +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_by_name ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_093_nodes_traits_trait_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_093_nodes_traits_trait_put_observer ... ok +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-4e41025d-8578-4794-aa55-121d77284f2d +Openstack-Request-Id: req-223b9607-093c-4a26-a99c-b78c4a218b47 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-dc92933c-6efc-4b40-9030-37d8fda20cbb +Openstack-Request-Id: req-76d7076a-5daf-46d3-8806-234232d285e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1d065be8-90c8-4011-8f17-c99bf4503f68 +Openstack-Request-Id: req-20187e6c-3348-4d37-8ad6-300944be5ab0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value properties is an invalid field for sorting\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ceb97422-2a68-4ba3-9322-c8573805dec3 +Openstack-Request-Id: req-4c6602e7-94eb-420a-a666-35209675d32d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-20bd4861-4b3f-4730-900f-d05885bd8eab +Openstack-Request-Id: req-570d18be-f6ca-4cdb-84c5-c9ca4fe14831 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-71c1053c-3f1a-416f-9e2c-8bd415650abc +Openstack-Request-Id: req-78c3e2b4-b6ce-461f-b50d-5aaf8590bfde X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e7805f27-c21a-4db1-bfda-0f149a362278 +Openstack-Request-Id: req-316638fd-830c-471f-8adf-569823348e8f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-95da4eed-aff2-4198-b9a7-ee609ed5b163 +Openstack-Request-Id: req-286ba146-8315-4877-b291-3e382b8851d4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-84a98731-14ab-4dde-8c9e-6c03e4a51f92 +Openstack-Request-Id: req-f7a8a415-a700-45e1-a90b-af9014ef7a27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9be89d48-708d-48fe-b3a5-f3bf08a3ee6b +Openstack-Request-Id: req-dfd41d45-a197-497d-8255-c8ca1715b7c2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} -GOT:Response: 403 Forbidden +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f3d46a84-a566-4885-ba3e-18e52086109b +Openstack-Request-Id: req-b59644f6-f16e-4089-83e9-8aa81cd872e2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f8356ece-3a72-4496-899c-86e43c9af512 +Openstack-Request-Id: req-c3f75a61-1326-468f-bb12-b4464288d9d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f8356ece-3a72-4496-899c-86e43c9af512 +Openstack-Request-Id: req-bf9b3e87-5629-4a54-b354-fee99ae85428 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": []} -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +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-8384acc3-4585-460a-b8dc-b55ec4c5abe8 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_080_nodes_vendor_passthru_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_080_nodes_vendor_passthru_delete_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_rescue_raises_error_before_1_38 +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_rescue_raises_error_before_1_38 ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_delete +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_delete ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_094_nodes_traits_trait_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_094_nodes_traits_trait_delete_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_get +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_get ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_None +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_None ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_081_nodes_vendor_passthru_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_081_nodes_vendor_passthru_delete_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_methods +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_methods ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_boo +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_boo ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_095_nodes_traits_trait_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_095_nodes_traits_trait_delete_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_no_such_method +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_no_such_method ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_nullstr +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_nullstr ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_082_nodes_traits_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_082_nodes_traits_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_put +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_put ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_096_nodes_traits_trait_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_096_nodes_traits_trait_delete_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_older_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_older_soft_ver ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_083_nodes_traits_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_083_nodes_traits_get_member ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'created_at': '2024-01-06T14:11:22.843718+00:00', 'updated_at': None, 'clean_step': {}, 'console_enabled': False, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': '******'}, 'driver_internal_info': {}, 'extra': {}, 'inspection_finished_at': None, 'inspection_started_at': None, 'instance_info': {'configdrive': '******', 'image_url': '******', 'foo': 'bar'}, 'instance_uuid': None, 'last_error': None, 'maintenance': False, 'maintenance_reason': None, 'name': None, 'network_interface': 'flat', 'power_state': None, 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', 'local_gb': '10', 'memory_mb': '4096'}, 'provision_state': 'available', 'provision_updated_at': None, 'raid_config': {}, 'reservation': None, 'resource_class': 'class1', 'target_power_state': None, 'target_provision_state': None, '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'}]} +POST: /v1/nodes {'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', 'cpus': '8', '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-cdce8f99-d609-4b3d-8368-527c79bc1f74 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-a23c1be4-cc6a-4d4e-948d-c7f07066b68a +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-e385cef1-f4c8-48a7-b074-a3e4992528e9 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +POST: /v1/nodes/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {'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-2dd15620-0f1a-42cb-9e4c-fc87f2ab6ec0 +Openstack-Request-Id: req-bb0cf088-1f91-4102-9592-1e3a0bcea2ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +POST: /v1/nodes/volume/connectors {'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\": \"\"}"} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {'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-953d39a4-bdf8-42e5-b377-04ed29dfb00a +Openstack-Request-Id: req-4f772c91-070d-44c8-b05f-7f8d31faa122 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_013_nodes_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_013_nodes_detail_get_observer ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/test {'foo': 'bar'} GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-8c104b1d-68ab-44d8-9c4a-d9506acd3c2f +Openstack-Request-Id: req-1b2f3692-77a2-4cb8-b7cb-7341c86cc3c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rebuild', 'configdrive': 'foo'} +POST: /v1/nodes/node-109/vendor_passthru/test {'foo': 'bar'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-19c9a509-87d4-4c8f-a7d0-b941781cfdeb +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.5 + +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/do_test +GOT:Response: 202 Accepted +Openstack-Request-Id: req-e475c6e1-e6be-4749-adee-3be4e838c688 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.1 + +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/do_test {} +GOT:foo +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} +GOT:{'foo': 'bar'} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} +GOT:{'foo': 'bar'} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/test {'foo': 'bar'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-136485a6-1d87-437d-bc79-0993477f4222 +Openstack-Request-Id: req-8297bdf8-8d11-4c7c-953c-e923354a897a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deleted'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver fake-hardware does not support test (disabled or not implemented).\", \"debuginfo\": null}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/do_test {'test_key': 'test_value'} GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-1e76ca8c-7db2-4062-882c-791e0e0f6b36 +Openstack-Request-Id: req-3faab6c1-2107-4ee5-8125-e267bcfa5b4f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/test {'foo': 'bar'} +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_sync +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_sync ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_without_method +ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_without_method ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_valid_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_valid_soft_ver ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_097_nodes_vifs_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_097_nodes_vifs_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_084_nodes_traits_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_084_nodes_traits_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_valid_undocumented_request_zero +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_valid_undocumented_request_zero ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_098_nodes_vifs_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_098_nodes_vifs_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_if_node_locked +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_if_node_locked ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_invalid_request_two +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_invalid_request_two ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_085_nodes_traits_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_085_nodes_traits_put_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_if_node_not_found +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_if_node_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_older_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_older_soft_ver ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_099_nodes_vifs_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_099_nodes_vifs_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_valid_soft_ver +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_valid_soft_ver ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_max_trait_limit +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_max_trait_limit ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_086_nodes_traits_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_086_nodes_traits_put_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_valid_undocumented_request_one +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_valid_undocumented_request_one ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_with_bad_version +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_with_bad_version ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_087_nodes_traits_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_087_nodes_traits_put_observer ... ok +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-5a187da2-9d15-4c37-b2da-f8248989495b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-5a187da2-9d15-4c37-b2da-f8248989495b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-22ab736f-fde4-438c-ba1b-155fffa77010 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-22ab736f-fde4-438c-ba1b-155fffa77010 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-b84e0361-b674-4435-b8f7-c12a001bf3a3 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-b84e0361-b674-4435-b8f7-c12a001bf3a3 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-4ae05d7a-0403-4a5c-9850-fe93f2a02a9c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-4ae05d7a-0403-4a5c-9850-fe93f2a02a9c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-c64e7fea-2ec5-4acf-b4d1-d5b6d13e464d +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-c64e7fea-2ec5-4acf-b4d1-d5b6d13e464d +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-01903309-fc7c-41d9-a1b0-3a9d37a37944 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-01903309-fc7c-41d9-a1b0-3a9d37a37944 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-59a8a62e-e4e6-4a5c-9a5a-73aa64bff305 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-59a8a62e-e4e6-4a5c-9a5a-73aa64bff305 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-d352b965-3bce-474a-9f20-907ebad6948b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:list\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-d352b965-3bce-474a-9f20-907ebad6948b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:list\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-a78a84ff-4b40-4321-9927-1e629abbb052 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_100_nodes_vifs_post_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_100_nodes_vifs_post_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_rejects_bad_trait +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_rejects_bad_trait ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_101_nodes_vifs_post_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_101_nodes_vifs_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_088_nodes_traits_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_088_nodes_traits_delete_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_rejects_too_long_trait +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_rejects_too_long_trait ... ok PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deleted'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-0d15b674-ea0c-4530-b416-85cd2999dbae +Openstack-Request-Id: req-cf451f1b-dea8-4eb5-91dc-f11d327c0402 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -17775,14 +18526,14 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'undeploy'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-92c9b5ff-585a-4fa8-916b-0683cd8ceca7 +Openstack-Request-Id: req-87740376-ad88-4de8-a91b-a54bfee7f376 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'logical_disks': [{'size_gb': 100, 'raid_level': 1}]} GOT:Response: 204 No Content -Openstack-Request-Id: req-fa567d30-f989-42d1-b8ca-ff5add64b220 +Openstack-Request-Id: req-6c6bb5e1-49c3-4aff-8c79-9f6662e3b6a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 @@ -17790,7 +18541,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'logical_disks': [{'size_gb': 100, 'raid_level': 1}]} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3fa3735c-b99a-471f-ac3d-5c976e25b243 +Openstack-Request-Id: req-d566e9d8-b3cb-4d9d-94c1-a0ff91ffbed5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 @@ -17798,7 +18549,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'logical_disks': [{'size_gb': 100, 'raid_level': 1}]} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-7923e41c-a0be-49fb-98ec-9e640f2ccfe2 +Openstack-Request-Id: req-00d7635c-f762-474b-8ac5-b1f7a64d3aa1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 @@ -17806,7 +18557,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'logical_disks': [{'size_gb': 100, 'raid_level': 1}]} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-a2826e99-71cb-4c2d-88a8-e2a026c5d5f3 +Openstack-Request-Id: req-f0d173aa-4808-4c6b-aeda-2a75d9443d5d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 @@ -17814,7 +18565,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'rescue', 'rescue_password': 'password'} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-80beb1cc-4650-4e45-a0df-bdf90f2dde87 +Openstack-Request-Id: req-175cb03a-8382-487c-a55e-0e6668c60031 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 @@ -17822,7 +18573,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': None} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-a05744e4-7342-4d88-be32-9c90778a7805 +Openstack-Request-Id: req-6dd8a6ca-9c11-4509-a240-8dbd01c3cb7c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 @@ -17830,7 +18581,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'boo!'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-312922e0-987a-413b-b588-1a84bdb1f4a5 +Openstack-Request-Id: req-6af2e16f-80ff-4417-b783-90dfb81a3b11 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 @@ -17838,7 +18589,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': ''} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-9ee62675-964a-492c-ae99-0f9362dc3ef7 +Openstack-Request-Id: req-fd680019-9220-4f9d-8c80-bf082675d1d6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 @@ -17846,7 +18597,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': False} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a186e73e-23b8-4732-ac2e-b06fe9729a5c +Openstack-Request-Id: req-ecd82918-59e3-472b-9415-133d829e429d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 @@ -17854,7 +18605,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': False} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-cdfaf05f-3569-4591-8d7b-188216e8771f +Openstack-Request-Id: req-543938ad-3f1c-4fd6-9f08-5c3e12eb5bf6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 @@ -17862,7 +18613,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 0} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-5b81d3b8-bb9e-4256-9d2b-71c6ffeea319 +Openstack-Request-Id: req-8e0c9a3c-7aba-44f8-950c-d1681a92a003 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 @@ -17870,417 +18621,579 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 2} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c83f2dfa-1c9b-4b55-84a7-3ce27627315f +Openstack-Request-Id: req-3ac44527-ea23-44b1-8a01-1f913a464f55 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': True} -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_older_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_older_soft_ver ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_021_nodes_node_ident_patch_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_021_nodes_node_ident_patch_reader ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_prepare_instance_kickstart_config -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_prepare_instance_kickstart_config ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_valid_soft_ver -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_valid_soft_ver ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_014_nodes_node_ident_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_014_nodes_node_ident_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_valid_undocumented_request_one -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_valid_undocumented_request_one ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_prepare_instance_kickstart_config_not_anaconda_boot -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_prepare_instance_kickstart_config_not_anaconda_boot ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_022_nodes_node_ident_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_022_nodes_node_ident_delete_admin ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_015_nodes_node_ident_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_015_nodes_node_ident_get_member ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template ... ok +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-ca9c2218-75b5-40f7-8e98-c1afa70d17b3 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': True} +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-ef9effcd-f12b-40db-b499-3ce1968aeda5 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.76 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 1} +GOT:Response: 202 Accepted +Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +Openstack-Request-Id: req-ddbd46d8-b7a7-4827-aede-a5bda2193d67 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.76 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 204 No Content +Openstack-Request-Id: req-1531e955-815d-4adf-b7ad-c4bdb4bc7da5 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.1 + ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_by_name ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_by_name ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template_has_additional_variables -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template_has_additional_variables ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_023_nodes_node_ident_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_023_nodes_node_ident_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_016_nodes_node_ident_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_016_nodes_node_ident_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_102_nodes_vifs_post_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_102_nodes_vifs_post_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_not_supported ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_not_supported ... ok -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template_missing_variable -ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template_missing_variable ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_089_nodes_traits_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_089_nodes_traits_delete_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits_fails_with_bad_version +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits_fails_with_bad_version ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_persistent ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_persistent ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_024_nodes_node_ident_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_024_nodes_node_ident_delete_reader ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_017_nodes_node_ident_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_017_nodes_node_ident_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_103_nodes_vifs_node_vif_ident_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_103_nodes_vifs_node_vif_ident_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_090_nodes_traits_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_090_nodes_traits_delete_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits_with_chassis +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits_with_chassis ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_persistent_invalid_value ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_persistent_invalid_value ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_ipxe_timeout -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_ipxe_timeout ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_104_nodes_vifs_node_vif_ident_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_104_nodes_vifs_node_vif_ident_delete_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_by_name ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_by_name ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_025_nodes_validate_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_025_nodes_validate_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_018_nodes_node_ident_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_018_nodes_node_ident_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_091_nodes_traits_trait_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_091_nodes_traits_trait_put_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_node_locked +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_node_locked ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_by_name_unsupported ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_by_name_unsupported ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_iscsi_boot -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_iscsi_boot ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_105_nodes_vifs_node_vif_ident_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_105_nodes_vifs_node_vif_ident_delete_observer ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_node_not_found +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_node_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_092_nodes_traits_trait_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_092_nodes_traits_trait_put_member ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_bad_request ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_bad_request ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_026_nodes_validate_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_026_nodes_validate_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_019_nodes_node_ident_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_019_nodes_node_ident_patch_observer ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_iscsi_boot_from_lists -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_iscsi_boot_from_lists ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_trait_not_found +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_trait_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_106_nodes_management_indicators_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_106_nodes_management_indicators_get_admin ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_bad_request_missing_parameter ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_bad_request_missing_parameter ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_020_nodes_node_ident_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_020_nodes_node_ident_delete_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_with_bad_version +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_with_bad_version ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_093_nodes_traits_trait_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_093_nodes_traits_trait_put_observer ... ok ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_console_not_supported ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_console_not_supported ... ok -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_status': 'start', 'agent_status_message': 'woof', 'agent_verify_ca': 'abcdef1'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-e18415d3-dce6-4b2a-982a-6b9df514f9da +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_107_nodes_management_indicators_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_107_nodes_management_indicators_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_disabled +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_disabled ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits_fails_with_bad_version +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits_fails_with_bad_version ... ok +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +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-e974142b-0444-46a6-8fd6-dbc1c896d6fc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'abcdef1'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-b93ec58f-2fa6-43fe-996f-4aa36565b05b +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +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-2a24132f-9c27-44cd-8b83-1e545f2cde42 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_verify_ca': 'abcdef1'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-b01c6297-b9f7-455a-a17e-185acd29542b +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-f06ac804-b39e-4782-aa15-fa7dedd83c50 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_version': '1.4.1', 'agent_token': 'meow'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-ac8f1f55-888b-4053-acd7-c0acf51c2094 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-9b7ae6eb-2f70-477c-be10-f7b816f2b504 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/test.1 {'callback_url': 'url', 'agent_token': 'token'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-e851870d-2103-486e-b90f-29bf49e6d761 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-28188d45-e22f-4f6d-884e-bb2b4eae9415 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123.json {'callback_url': 'url', 'agent_token': 'maybe some magic'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-732c1b1f-39c6-405c-bf6f-25b00b99f248 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-5da2a3c3-34e1-4d4b-bf46-32636f0c3de7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_verify_ca': 'abcd'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3e265e99-3c1a-4f03-bbe1-80b15f7dd8bc +Openstack-Request-Id: req-658d4a15-29bd-455c-9527-cc51ebe33b76 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_version': '1.4.1'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-be55e524-c689-4172-b79c-d7a17dde5fc0 +Openstack-Request-Id: req-8e24c9f8-f837-4c49-a3ba-1f4b6dd5d8c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_verify_ca': 'abcd', 'agent_status': 'wow', 'agent_status_message': 'much status'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b54ba082-207d-4f7c-9594-bfac06427e1c +Openstack-Request-Id: req-7225ba4e-7f49-4ae3-b73f-8a6820db0ab8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/heartbeat/008fd3e7-79ed-4f5d-98a2-67bb69c8f689 {'callback_url': 'url'} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-2c962d1e-e596-4064-b4c5-9c9ce56a9280 +Openstack-Request-Id: req-4cc75eb4-40c0-47ff-8a77-4b78be6e2aeb X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 204 No Content -Openstack-Request-Id: req-3a3f718c-197f-4aee-a27c-534f403abe57 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-8a4deb7f-d130-4016-9a14-ec5d72d81f20 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None GOT:Response: 404 Not Found Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-a92e83bb-eb80-4059-9481-b232415a93f5 +Openstack-Request-Id: req-82b11228-1107-4c5a-895e-2e0ebca0e696 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 409 Conflict +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-10884cec-c6fb-475f-8ee1-6ad84f2c358f +Openstack-Request-Id: req-0d7e371e-32ed-46d7-8fd9-47b30ba6d5da X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} -GET: /v1/bad/path {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None GOT:Response: 404 Not Found Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: / {} -GOT:{'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.80'}, 'versions': [{'id': 'v1', 'links': [{'href': 'http://spam.ham/eggs/v1/', 'rel': 'self'}], 'status': 'CURRENT', 'min_version': '1.1', 'version': '1.80'}]} -GET: / {} -GOT:{'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.80'}, 'versions': [{'id': 'v1', 'links': [{'href': 'https://mycloud.com/ironic/v1/', 'rel': 'self'}], 'status': 'CURRENT', 'min_version': '1.1', 'version': '1.80'}]} -foo() migrated 15 of 15 objects. -func1() migrated 15 of 15 objects. -func2() migrated 20 of 20 objects. -func1() migrated 10 of 10 objects. -func2() migrated 0 of 0 objects. -func1() migrated 10 of 15 objects. -func1() migrated 10 of 10 objects. -func1() migrated 10 of 10 objects. -func1() migrated 0 of 0 objects. -func2() migrated 0 of 0 objects. -Running batches of 50 until migrations have been completed. -Data migrations have completed. -Running batches of 50 until migrations have been completed. -Data migrations have completed. -Running batches of 50 until migrations have been completed. -Malformed option m1key1=value1 -Malformed option m1.key1value1 -Data migrations have not completed. Please re-run. -Running batches of 50 until migrations have been completed. -Data migrations have completed. -{'deployment_ari_path': 'http://192.1.2.3:1234/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/deploy_ramdisk', 'pxe_append_params': 'test_param ipa-global-request-id=req-c4a2eb4e-952c-40d5-ad37-1c182de10d63', 'deployment_aki_path': 'http://192.1.2.3:1234/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/deploy_kernel', 'tftp_server': '127.0.0.1', 'ipxe_timeout': 0, 'ari_path': 'no_ramdisk', 'aki_path': 'no_kernel', 'initrd_filename': 'deploy_ramdisk'} -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_boot_iso -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_boot_iso ... ok -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-97d711ce-9754-4de4-b876-b3d710244375 +Openstack-Request-Id: req-9f5fd69a-ba1c-48ec-bab1-71af8c86efe0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_094_nodes_traits_trait_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_094_nodes_traits_trait_delete_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_enabled +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_enabled ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits_fails_with_node_not_found +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits_fails_with_node_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_095_nodes_traits_trait_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_095_nodes_traits_trait_delete_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state ... ok ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-97d711ce-9754-4de4-b876-b3d710244375 +Openstack-Request-Id: req-a78a84ff-4b40-4321-9927-1e629abbb052 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b590a948-eaa7-4418-a4ef-4a3fc25bedcd +Openstack-Request-Id: req-a60137ae-70e5-4b05-a077-c9b71f0a4d80 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b590a948-eaa7-4418-a4ef-4a3fc25bedcd +Openstack-Request-Id: req-a60137ae-70e5-4b05-a077-c9b71f0a4d80 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2d4b0f23-f9f5-4b64-acfa-d3b8ecad4852 +Openstack-Request-Id: req-12c4c990-37a8-4220-b09d-3e5478cd65cb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2d4b0f23-f9f5-4b64-acfa-d3b8ecad4852 +Openstack-Request-Id: req-12c4c990-37a8-4220-b09d-3e5478cd65cb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +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-8834f48c-bb54-4ef4-97c6-ceedd1e58b4f +Openstack-Request-Id: req-9bb0bbe5-2ae6-4774-92ba-a1acb361c94d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-8834f48c-bb54-4ef4-97c6-ceedd1e58b4f +Openstack-Request-Id: req-9bb0bbe5-2ae6-4774-92ba-a1acb361c94d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GOT:Response: 403 Forbidden +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +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-57db5b4a-420b-479e-9c30-bd96609a2b9b +Openstack-Request-Id: req-94749be1-0f8e-4f98-a0e3-e025665e7f90 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-57db5b4a-420b-479e-9c30-bd96609a2b9b +Openstack-Request-Id: req-94749be1-0f8e-4f98-a0e3-e025665e7f90 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +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-9a32d72e-7018-4e5e-9bdf-9d951c5c19e1 +Openstack-Request-Id: req-35ccd02c-c52b-45b0-8fd6-36ee89d9e409 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9a32d72e-7018-4e5e-9bdf-9d951c5c19e1 +Openstack-Request-Id: req-35ccd02c-c52b-45b0-8fd6-36ee89d9e409 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-8aaa315c-47e0-4116-9e4f-9db68bc1d1ea +Openstack-Request-Id: req-abe78a37-0500-44d0-bd9b-f62f4ae7cd77 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-8aaa315c-47e0-4116-9e4f-9db68bc1d1ea +Openstack-Request-Id: req-abe78a37-0500-44d0-bd9b-f62f4ae7cd77 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} -GOT:Response: 503 Service Unavailable +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9bb2ff5d-e408-4f32-8f53-211afe026800 +Openstack-Request-Id: req-be3e714a-6541-4dbd-8043-29958f5e4cb2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-be3e714a-6541-4dbd-8043-29958f5e4cb2 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-9bb2ff5d-e408-4f32-8f53-211afe026800 +Openstack-Request-Id: req-93dd9e30-dabe-493a-be4e-7ec357f6f5e9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_027_nodes_validate_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_027_nodes_validate_get_reader ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_disabled -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_disabled ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_ipa_debug -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_ipa_debug ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_021_nodes_node_ident_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_021_nodes_node_ident_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_028_nodes_maintenance_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_028_nodes_maintenance_put_admin ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_enabled -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_enabled ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_local_boot -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_local_boot ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_022_nodes_node_ident_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_022_nodes_node_ident_delete_observer ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_029_nodes_maintenance_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_029_nodes_maintenance_put_member ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_invalid_value -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_invalid_value ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_023_nodes_validate_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_023_nodes_validate_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_not_supported -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_not_supported ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_030_nodes_maintenance_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_030_nodes_maintenance_put_reader ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue_swift -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue_swift ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_024_nodes_validate_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_024_nodes_validate_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_qs -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_qs ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue_timeout -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue_timeout ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_031_nodes_maintenance_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_031_nodes_maintenance_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_025_nodes_validate_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_025_nodes_validate_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_108_nodes_management_indicators_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_108_nodes_management_indicators_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_096_nodes_traits_trait_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_096_nodes_traits_trait_delete_observer ... ok +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-ce76df29-77c2-48cf-9ed9-a9fbd8c8dc7d +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.1 +{"cat": "meow"} +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru {'foo': 'bar'} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-ccebfa31-989d-48ab-a2c8-aef49008411a +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PUT: /v1/nodes/node-39/traits/CUSTOM_3 {} +GOT:Response: 204 No Content +Location: http://localhost/v1/nodes/node-39/traits/CUSTOM_3 +Openstack-Request-Id: req-72ae9be7-3b3c-4233-b357-6e12396ef24c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.37 + +PUT: /v1/nodes/node-39/traits/CUSTOM_3 {} +GOT:Response: 409 Conflict +Content-Type: application/json +Openstack-Request-Id: req-f6f541ea-003e-499e-98b4-170267888774 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PUT: /v1/nodes/node-39/traits/CUSTOM_3 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-63a99a72-02df-4912-9327-4938f9f0723e +Openstack-Request-Id: req-26ffe071-6db0-49e8-85b4-f75ce01db3af X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': True} -GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-21ca4764-a7aa-40d8-8f61-6ff83f543dc0 +X-Openstack-Ironic-Api-Version: 1.37 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +PUT: /v1/nodes/node-39/traits/CUSTOM_3 {} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-932cc3d2-17af-447d-a345-ad7802f53dfb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.76 +X-Openstack-Ironic-Api-Version: 1.37 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"too many traits\", \"debuginfo\": null}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT1 {} +GOT:Response: 405 Method Not Allowed +Allow: DELETE, GET, PATCH, POST +Content-Type: application/json +{"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} +PUT: /v1/nodes/node-39/traits/bad_trait {} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-e807000f-10ce-4ac0-aee2-ca68f1c3592e +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PUT: /v1/nodes/node-39/traits/CUSTOM_TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT {} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-d2ad4818-fa53-41fc-84ec-779494c27612 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +DELETE: /v1/nodes/node-39/traits +GOT:Response: 204 No Content +Openstack-Request-Id: req-91f68c90-d5de-4279-8f1a-3367e9fa8f0c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.37 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 1} -GOT:Response: 202 Accepted -Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -Openstack-Request-Id: req-b43cf7ea-679a-4165-9e96-bf707de16ae7 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-2df548cc-6fca-4206-87e2-54e60806c505 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.76 +X-Openstack-Ironic-Api-Version: 1.36 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +DELETE: /v1/nodes/node-39/traits +GOT:Response: 204 No Content +Openstack-Request-Id: req-03abf794-563c-417c-a994-f99ace5721c6 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.37 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +DELETE: /v1/nodes/node-39/traits/CUSTOM_1 GOT:Response: 204 No Content -Openstack-Request-Id: req-71189a3d-e9b6-4266-8fba-a66a0ec5f291 +Openstack-Request-Id: req-81fe9efe-6696-4c40-afed-aa3965d3c6ab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.37 +DELETE: /v1/nodes/node-39/traits/CUSTOM_1 +GOT:Response: 409 Conflict +Content-Type: application/json +Openstack-Request-Id: req-e20e56a8-2f06-4826-bffa-c94baacab4bd +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +DELETE: /v1/nodes/node-39/traits/CUSTOM_1 +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-6b7654d6-3692-4cf7-a95a-7866766330ba +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +DELETE: /v1/nodes/node-39/traits/CUSTOM_12 +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-a4614b79-06a4-4bbb-968c-fa94e09dcf2c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT1 +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-f1fd3661-18e1-4a74-9043-8cd02514c2a8 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +GOT:{'traits': ['CUSTOM_1', 'CUSTOM_2']} +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-2fa14ef1-84f5-4689-80cb-3fd244d9a09a +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/nodes/badname/traits {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-de1adfa1-3e47-42c5-8196-7b330454064a +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +PUT: /v1/nodes/node-39/traits {'trait': 'CUSTOM_3'} +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_no_add_single_trait_via_body +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_no_add_single_trait_via_body ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_invalid_value +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_invalid_value ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_109_nodes_management_indicators_component_get_allow +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.' +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_no_add_single_trait_via_body_2 +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_no_add_single_trait_via_body_2 ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_not_supported +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_not_supported ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_097_nodes_vifs_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_097_nodes_vifs_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_110_nodes_management_indicators_component_ind_ident_get_allow +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.' +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_qs +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_qs ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_empty +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_empty ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_versioning +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_versioning ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_098_nodes_vifs_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_098_nodes_vifs_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_111_nodes_management_indicators_component_ind_ident_put_allow +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.' +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_fails_with_bad_version +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_fails_with_bad_version ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_bad_trait +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_bad_trait ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_by_name +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_by_name ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_099_nodes_vifs_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_099_nodes_vifs_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_112_portgroups_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_112_portgroups_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_no_body +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_no_body ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_error +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_error ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_100_nodes_vifs_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_100_nodes_vifs_post_admin ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_too_long_trait +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_too_long_trait ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_no_reason +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_no_reason ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_113_portgroups_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_113_portgroups_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_with_chassis +ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_with_chassis ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_101_nodes_vifs_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_101_nodes_vifs_post_member ... ok PUT: /v1/nodes/node-39/management/boot_device {'boot_device': 'pxe'} GOT:Response: 204 No Content -Openstack-Request-Id: req-85dd47b3-91c0-4f35-88ce-1cd2b5cf1d35 +Openstack-Request-Id: req-72fe0b99-52dd-497e-b262-55e54a11b2e8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 @@ -18288,14 +19201,14 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-5f94cdb2-feb7-4d91-b027-afd4aac6dc27 +Openstack-Request-Id: req-4f479c07-af3b-48c2-b380-d29de61383d8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device?persistent=True {'boot_device': 'pxe'} GOT:Response: 204 No Content -Openstack-Request-Id: req-9ca11798-e759-4c6b-adac-5a2e1224b2d8 +Openstack-Request-Id: req-e5fa86ba-ffc8-4426-853d-1ec188d06ca0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -18303,7 +19216,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device?persistent=blah {'boot_device': 'pxe'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-9bd75aef-8ed6-406c-8a0f-5b4dcd5e20a9 +Openstack-Request-Id: req-9e10c5bf-0356-4773-836a-f17ad32a76a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -18311,7 +19224,7 @@ PUT: /v1/nodes/node-39/states/console {'enabled': 'true'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/node-39/states/console -Openstack-Request-Id: req-5cc54267-a9ed-476b-8211-f6e2c5905505 +Openstack-Request-Id: req-5a92789d-324f-4702-ae13-c748aec9824d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 @@ -18319,7 +19232,7 @@ PUT: /v1/nodes/node-39/states/console {'enabled': 'true'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-db670b4f-9961-400e-8353-737db4cc46a4 +Openstack-Request-Id: req-e790e53d-fe65-4695-8914-fd97874ebe41 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -18327,7 +19240,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': 'invalid-value'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d27ea549-53a8-468f-94bc-38037b6ae331 +Openstack-Request-Id: req-1eacab4e-6711-4aba-8f33-044ec5d55665 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -18335,7 +19248,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-22fcfff8-060a-4839-a996-cc07c1bc95ba +Openstack-Request-Id: req-02c54327-1c4d-4bd8-a306-321f14d9d1e1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -18343,7 +19256,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': 'true'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b675a664-e9e1-4617-b775-811169f518f8 +Openstack-Request-Id: req-653f1405-f208-4acb-9ad4-7f607f4df493 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -18351,7 +19264,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': 'false'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -Openstack-Request-Id: req-ffe17319-c5b1-494d-9da4-d10bccf869be +Openstack-Request-Id: req-4c1a2b41-0ae4-4d42-8fae-da5dbcd8d404 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -18359,14 +19272,14 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': 'true'} GOT:Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -Openstack-Request-Id: req-efa6cd5b-38b0-4c99-9f4a-574d38d2927d +Openstack-Request-Id: req-ecf9779e-8943-4a8b-9341-f290827ea45c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system {'state': 'on'} GOT:Response: 204 No Content -Openstack-Request-Id: req-59176a35-e4b3-43da-bce5-6b30e0b68a99 +Openstack-Request-Id: req-c758c8e2-9edd-4247-bc26-5d47b2278459 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -18374,7 +19287,7 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system?state=glow {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-15d186ea-a542-4866-9d41-97c8147afd12 +Openstack-Request-Id: req-607af63f-b662-440b-856b-cbb740b6c413 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 @@ -18382,416 +19295,458 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system {'state': 'on'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-3ac198e0-4a29-44f2-b8ce-01831964e8a5 +Openstack-Request-Id: req-2dab9c12-9d9f-490a-88a4-cf5b53657800 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system?state=on {} GOT:Response: 204 No Content -Openstack-Request-Id: req-22c70cff-9ac9-4a39-b850-9215d514e4ef +Openstack-Request-Id: req-73887506-24df-4f70-9160-d6a049411beb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system {'state': 'on'} -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_versioning -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_versioning ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_swift_partition -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_swift_partition ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_032_nodes_maintenance_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_032_nodes_maintenance_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_026_nodes_maintenance_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_026_nodes_maintenance_put_admin ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_by_name -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_by_name ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_swift_wdi -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_swift_wdi ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_clean_up_ipxe_config_uefi -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_clean_up_ipxe_config_uefi ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_033_nodes_maintenance_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_033_nodes_maintenance_delete_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_027_nodes_maintenance_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_027_nodes_maintenance_put_member ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_instance_ipxe_bios -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_instance_ipxe_bios ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_instance_ipxe_uefi -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_instance_ipxe_uefi ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_034_nodes_management_boot_device_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_034_nodes_management_boot_device_put_admin ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_ipxe_ipv6 -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_ipxe_ipv6 ... ok -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-ed6e2dfc-5083-4256-a206-4d1724d8bc65 +GOT:Response: 204 No Content +Openstack-Request-Id: req-f76bf7ec-e12d-466a-89fc-b040ea826371 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-e2575fb0-abe2-45eb-8551-047290af44cf +X-Openstack-Ironic-Api-Version: 1.63 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance {'reason': 'fake_reason'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-eead3d61-1a50-43d4-824c-ee9e066d0f83 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-8d37979c-04ba-470b-b2ad-7114eb598bcc +X-Openstack-Ironic-Api-Version: 1.1 + +PUT: /v1/nodes/node-39/maintenance {'reason': 'fake_reason'} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-dbc09b45-5682-4162-b2b8-b8021e67c3cc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.5 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance {'reason': 'fake'} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-536ffcf2-692e-4ecd-9904-9aafbcb1d212 +Openstack-Request-Id: req-0fbfd11c-9401-40aa-85d7-4fdd5bde73be X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-d5485356-a1d4-4147-bf1b-d1a6b98ec161 +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance {} +GOT:Response: 202 Accepted +Openstack-Request-Id: req-5f83e555-bf87-4363-b0cb-1537884fa81d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.1 + +PUT: /v1/nodes/node-39/maintenance {} +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_no_reason_by_name +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_no_reason_by_name ... ok +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unrescue_raises_error_before_1_38 +ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unrescue_raises_error_before_1_38 ... ok +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_chassis_notification +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_chassis_notification ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_fast_deploy_lookup +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_fast_deploy_lookup ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_114_portgroups_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_114_portgroups_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_common_params +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_common_params ... ok +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_emit_maintenance_notification +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_emit_maintenance_notification ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_102_nodes_vifs_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_102_nodes_vifs_post_observer ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_addresses +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_addresses ... ok +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_maintenance_notification +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_maintenance_notification ... ok +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_notification +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_notification ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_115_portgroups_post_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_115_portgroups_post_admin ... ok +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_notification_mask_secrets +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_notification_mask_secrets ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_103_nodes_vifs_node_vif_ident_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_103_nodes_vifs_node_vif_ident_delete_admin ... ok +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_port_notification +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_port_notification ... ok +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_portgroup_notification +ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_portgroup_notification ... ok +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-da0685ec-bd0c-40dd-8c95-ad6dfdc24a24 +Openstack-Request-Id: req-76ee7c9a-c195-4d7a-8c26-109763ab6b28 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +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}"} +PUT: /v1/nodes/node-39/traits/CUSTOM_3 {'traits': ['CUSTOM_3']} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-980c9ff4-5da8-47c6-8657-835aed1647a2 +Openstack-Request-Id: req-bf31cdd7-c736-44d8-ab11-2a1e43676873 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-d2348173-b29b-4744-9125-9f89c32572fa +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}"} +PUT: /v1/nodes/node-39/traits {'traits': ['CUSTOM_3']} +GOT:Response: 204 No Content +Openstack-Request-Id: req-5f9c7b7e-c4af-42d8-b1f7-4dc84e5bfb3c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-b9761203-6e41-46eb-8ee8-a282bc243ea9 +X-Openstack-Ironic-Api-Version: 1.37 + +PUT: /v1/nodes/node-39/traits {'traits': []} +GOT:Response: 204 No Content +Openstack-Request-Id: req-3bf54234-b570-4913-99de-6f108aad0ddb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.37 + +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'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\": \"\"}"} +PUT: /v1/nodes/node-39/traits {'traits': ['CUSTOM_3', 'BAD_TRAIT']} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-f6d530be-d8ba-419d-b857-1e06fbca092c +Openstack-Request-Id: req-022ad3b3-307c-489e-a388-895ed3746e9a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} -GOT:Response: 404 Not Found +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}"} +PUT: /v1/nodes/node-39/traits {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-e7d52540-b264-48d5-a941-3533998f706a +Openstack-Request-Id: req-514c7a48-bb0b-41b6-bb0d-b454f80281c5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} -GOT:Response: 404 Not Found +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}"} +PUT: /v1/nodes/node-39/traits {'traits': ['CUSTOM_3', 'CUSTOM_TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT']} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-062873fd-795b-49be-9a7a-bcf243350ead +Openstack-Request-Id: req-e9ce4bb9-acec-4f07-b0eb-84fc296538d2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-a90ad0ea-2fa6-4059-ae3f-2010941676d4 +X-Openstack-Ironic-Api-Version: 1.37 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for body: 'CUSTOM_TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT' is too long\", \"debuginfo\": null}"} +PUT: /v1/nodes/node-39/traits {'traits': ['CUSTOM_3']} +GOT:Response: 204 No Content +Openstack-Request-Id: req-f1e79fb0-d916-458b-9478-ec6152e72971 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.37 + +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=5e30f3a0-cb79-49d7-a998-6ddd3b1a7ba8 {} +GOT:{'node': {'uuid': '5e30f3a0-cb79-49d7-a998-6ddd3b1a7ba8', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/5e30f3a0-cb79-49d7-a998-6ddd3b1a7ba8', 'rel': 'self'}, {'href': 'http://localhost/nodes/5e30f3a0-cb79-49d7-a998-6ddd3b1a7ba8', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'abcxyz', 'agent_token_required': True}} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=5e30f3a0-cb79-49d7-a998-6ddd3b1a7ba8 {} +GOT:{'node': {'uuid': '5e30f3a0-cb79-49d7-a998-6ddd3b1a7ba8', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/5e30f3a0-cb79-49d7-a998-6ddd3b1a7ba8', 'rel': 'self'}, {'href': 'http://localhost/nodes/5e30f3a0-cb79-49d7-a998-6ddd3b1a7ba8', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': '******', 'agent_token_required': True}} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=5e30f3a0-cb79-49d7-a998-6ddd3b1a7ba8 {} +GOT:{'node': {'uuid': '5e30f3a0-cb79-49d7-a998-6ddd3b1a7ba8', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/5e30f3a0-cb79-49d7-a998-6ddd3b1a7ba8', 'rel': 'self'}, {'href': 'http://localhost/nodes/5e30f3a0-cb79-49d7-a998-6ddd3b1a7ba8', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': '******', 'agent_token_required': True}} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 {} +GOT:{'node': {'uuid': 'dd64f18e-ba90-45f1-833d-d483776fee03', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/dd64f18e-ba90-45f1-833d-d483776fee03', 'rel': 'self'}, {'href': 'http://localhost/nodes/dd64f18e-ba90-45f1-833d-d483776fee03', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'some-value', 'agent_token_required': True}} +GET: /v1/lookup?node_uuid=ca4aaec6-1736-403c-b875-0e7ab0080947 {} +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_only_uuid +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_only_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_116_portgroups_post_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_116_portgroups_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_104_nodes_vifs_node_vif_ident_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_104_nodes_vifs_node_vif_ident_delete_member ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_byaddress +ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_byaddress ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_uuid +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_byid +ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_byid ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_ignore_malformed_address +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_ignore_malformed_address ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_117_portgroups_post_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_117_portgroups_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_105_nodes_vifs_node_vif_ident_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_105_nodes_vifs_node_vif_ident_delete_observer ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_node_locked +ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_node_locked ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_no_restrict_lookup +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_no_restrict_lookup ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_portgroups_subresource_delete +ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_portgroups_subresource_delete ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__GetPortsCollection.test__get_ports_collection +ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__GetPortsCollection.test__get_ports_collection ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_106_nodes_management_indicators_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_106_nodes_management_indicators_get_admin ... ok +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b5b13376-5e7b-4927-b49e-618df2776cbe +Openstack-Request-Id: req-93dd9e30-dabe-493a-be4e-7ec357f6f5e9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ad60f67b-58f9-4c6a-adff-f6d907c9275b +Openstack-Request-Id: req-a4704256-8374-423d-9e1a-de674f599844 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_028_nodes_maintenance_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_028_nodes_maintenance_put_observer ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_error -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_error ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_ipxe_ipv6_uefi -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_ipxe_ipv6_uefi ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_no_reason -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_no_reason ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_029_nodes_maintenance_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_029_nodes_maintenance_delete_admin ... ok +{"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"}]}]} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-a4704256-8374-423d-9e1a-de674f599844 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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"}]}]} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0ccd7b83-e575-4a75-b78b-5dffe54beead +Openstack-Request-Id: req-c4c5b7ba-513d-4419-88c6-5680b3d71d63 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0ccd7b83-e575-4a75-b78b-5dffe54beead +Openstack-Request-Id: req-c4c5b7ba-513d-4419-88c6-5680b3d71d63 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c4c7c84a-1a54-48f8-a900-656e676f8600 +Openstack-Request-Id: req-0e206e6c-f9cd-4f02-9537-b7ebade96c4e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c4c7c84a-1a54-48f8-a900-656e676f8600 +Openstack-Request-Id: req-0e206e6c-f9cd-4f02-9537-b7ebade96c4e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None -GOT:Response: 503 Service Unavailable +{"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"}]}]} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-eeb30a49-4e2e-40e2-b648-8c25fae98570 +Location: http://localhost/v1/portgroups/dbdc2759-9f44-4d28-9cba-d3b06abe3345 +Openstack-Request-Id: req-007bd478-a7ef-4c9a-a535-6a21e55b9643 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "dbdc2759-9f44-4d28-9cba-d3b06abe3345", "created_at": "2024-01-06T14:11:30.395964+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/dbdc2759-9f44-4d28-9cba-d3b06abe3345", "rel": "self"}, {"href": "http://localhost/portgroups/dbdc2759-9f44-4d28-9cba-d3b06abe3345", "rel": "bookmark"}], "node_uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "ports": [{"href": "http://localhost/v1/portgroups/dbdc2759-9f44-4d28-9cba-d3b06abe3345/ports", "rel": "self"}, {"href": "http://localhost/portgroups/dbdc2759-9f44-4d28-9cba-d3b06abe3345/ports", "rel": "bookmark"}]} +ACL Test GOT Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-eeb30a49-4e2e-40e2-b648-8c25fae98570 +Location: http://localhost/v1/portgroups/dbdc2759-9f44-4d28-9cba-d3b06abe3345 +Openstack-Request-Id: req-007bd478-a7ef-4c9a-a535-6a21e55b9643 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +{"uuid": "dbdc2759-9f44-4d28-9cba-d3b06abe3345", "created_at": "2024-01-06T14:11:30.395964+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/dbdc2759-9f44-4d28-9cba-d3b06abe3345", "rel": "self"}, {"href": "http://localhost/portgroups/dbdc2759-9f44-4d28-9cba-d3b06abe3345", "rel": "bookmark"}], "node_uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "ports": [{"href": "http://localhost/v1/portgroups/dbdc2759-9f44-4d28-9cba-d3b06abe3345/ports", "rel": "self"}, {"href": "http://localhost/portgroups/dbdc2759-9f44-4d28-9cba-d3b06abe3345/ports", "rel": "bookmark"}]} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-86ec77a0-9978-4075-b47a-5360fab3fb79 +Openstack-Request-Id: req-c93dcea3-8646-4050-b238-e671c53c140d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-86ec77a0-9978-4075-b47a-5360fab3fb79 +Openstack-Request-Id: req-c93dcea3-8646-4050-b238-e671c53c140d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3b5bc97d-9ebf-4a94-a90f-cc4513c7c241 +Openstack-Request-Id: req-58cfa19b-3c06-466e-99a0-8737a39b2138 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3b5bc97d-9ebf-4a94-a90f-cc4513c7c241 +Openstack-Request-Id: req-58cfa19b-3c06-466e-99a0-8737a39b2138 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/detail +GET: /v1/portgroups/detail {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_118_portgroups_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_118_portgroups_detail_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_not_found +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_nothing_provided +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_nothing_provided ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_119_portgroups_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_119_portgroups_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_107_nodes_management_indicators_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_107_nodes_management_indicators_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_old_api_version +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_old_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_address_already_exist +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_address_already_exist ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_120_portgroups_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_120_portgroups_detail_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_restrict_lookup +ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_restrict_lookup ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_address_normalized +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_address_normalized ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_multiple_node_policies_and_retrieve +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_multiple_node_policies_and_retrieve ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-35538c30-5540-48af-8749-23d8188ac386 +Openstack-Request-Id: req-66e64931-264d-44cf-8e03-57c658ff5c58 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-35538c30-5540-48af-8749-23d8188ac386 +Openstack-Request-Id: req-363acab3-4bc8-4d28-af1e-cbbb2cf3ca72 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-074cede5-ad9c-492a-a23e-78387ced9db7 +Openstack-Request-Id: req-08b0c23c-08b2-4945-9960-7ab6a1ee9a68 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-074cede5-ad9c-492a-a23e-78387ced9db7 +Openstack-Request-Id: req-2f09d94e-61db-4ccb-944a-332b8d000458 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a483c553-75ef-4688-8161-d3ad7cd7bd6d +Openstack-Request-Id: req-de8d4d64-8ae0-4202-ae49-47bd4ed383bb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a483c553-75ef-4688-8161-d3ad7cd7bd6d +Openstack-Request-Id: req-6963ace3-c8aa-4672-884d-c950aecda747 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_035_nodes_management_boot_device_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_035_nodes_management_boot_device_put_member ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_no_reason_by_name -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_no_reason_by_name ... ok -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unrescue_raises_error_before_1_38 -ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unrescue_raises_error_before_1_38 ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_unsupported_additional_volume_type -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_unsupported_additional_volume_type ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_036_nodes_management_boot_device_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_036_nodes_management_boot_device_put_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_030_nodes_maintenance_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_030_nodes_maintenance_delete_member ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links ... ok -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_unsupported_volume_type -ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_unsupported_volume_type ... ok -ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier -ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links_custom_fields -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links_custom_fields ... ok -ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier_no_notifier -ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier_no_notifier ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_037_nodes_management_boot_device_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_037_nodes_management_boot_device_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_031_nodes_maintenance_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_031_nodes_maintenance_delete_observer ... ok -ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier_no_publisher_id -ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier_no_publisher_id ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links_default_limit -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links_default_limit ... ok -ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier -ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_038_nodes_management_boot_device_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_038_nodes_management_boot_device_get_member ... ok -ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier_no_notifier -ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier_no_notifier ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_032_nodes_management_boot_device_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_032_nodes_management_boot_device_put_admin ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_against_single -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_against_single ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_039_nodes_management_boot_device_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_039_nodes_management_boot_device_get_reader ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_by_node_name_not_supported -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_by_node_name_not_supported ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_033_nodes_management_boot_device_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_033_nodes_management_boot_device_put_member ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_by_node_name_ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_by_node_name_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_040_nodes_management_boot_device_supported_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_040_nodes_management_boot_device_supported_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_query -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_query ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_034_nodes_management_boot_device_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_034_nodes_management_boot_device_put_observer ... ok -ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier_no_publisher_id -ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier_no_publisher_id ... ok -GOT:Response: 204 No Content -Openstack-Request-Id: req-9e1aac0e-e5ef-4218-ae31-2ddfbcdf5afb +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-31e5e423-ae4d-4b88-b8e7-835f8503d41f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.63 - -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance {'reason': 'fake_reason'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-508870c7-b7ec-4289-bebe-b211ffe51f2d +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-7ff92a75-fe71-4561-849b-f4c227a3c554 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 - -PUT: /v1/nodes/node-39/maintenance {'reason': 'fake_reason'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-59331338-76c6-48bf-9507-9d98effef8c5 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-6568a7ff-238a-4524-bbe2-82e98935c5c6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.5 - -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance {'reason': 'fake'} -GOT:Response: 500 Internal Server Error +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +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-c03ccec1-206a-450a-a711-4416f8441c12 +Openstack-Request-Id: req-fac23b5f-b5fa-49d7-9f8a-cfb6feb42d4a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance {} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-f4a5e26c-fa7f-4607-aa58-4bb22c495aa7 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +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-e659fc89-6abe-46dc-a38e-d8546cc8a896 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.1 - -PUT: /v1/nodes/node-39/maintenance {} +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +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-1a572c1a-546c-4ece-912e-17d758b2334e +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-66614d11-0c04-4109-ae36-3eeb8ca8b1ba +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-683cc520-2f27-4baa-afbc-4a604c94acf8 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_108_nodes_management_indicators_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_108_nodes_management_indicators_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_109_nodes_management_indicators_component_get_allow +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.' +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_121_portgroups_portgroup_ident_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_121_portgroups_portgroup_ident_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_multiple_node_policies_and_retrieve_first_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_multiple_node_policies_and_retrieve_first_fail ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_node_policy_and_retrieve_no_node +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_node_policy_and_retrieve_no_node ... ok GOT:Response: 202 Accepted -Openstack-Request-Id: req-df81796e-a421-4580-9927-f3cc8484041b +Openstack-Request-Id: req-f640114f-cd6b-4d27-8b93-7cfcbc8d27e4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 @@ -18799,18550 +19754,17152 @@ PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'unrescue'} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-715df49d-5ff9-4fc5-b4ec-2112d8b757c1 +Openstack-Request-Id: req-414d7e0e-0f7a-4042-bbe9-98f11800a497 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/ports/?limit=3 {} -GOT:{'ports': [{'uuid': '80f8baee-8f1c-49f0-bf4d-fdbc8bbc742c', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/80f8baee-8f1c-49f0-bf4d-fdbc8bbc742c', 'rel': 'self'}, {'href': 'http://localhost/ports/80f8baee-8f1c-49f0-bf4d-fdbc8bbc742c', 'rel': 'bookmark'}]}, {'uuid': '17b53936-cc74-4775-8ae6-2d897fd70490', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/17b53936-cc74-4775-8ae6-2d897fd70490', 'rel': 'self'}, {'href': 'http://localhost/ports/17b53936-cc74-4775-8ae6-2d897fd70490', 'rel': 'bookmark'}]}, {'uuid': 'ce19b4a1-520e-4ffb-9018-4f8701e9d92e', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/ce19b4a1-520e-4ffb-9018-4f8701e9d92e', 'rel': 'self'}, {'href': 'http://localhost/ports/ce19b4a1-520e-4ffb-9018-4f8701e9d92e', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=3&marker=ce19b4a1-520e-4ffb-9018-4f8701e9d92e'} -GET: /v1/ports?fields=address,uuid {} -GOT:{'ports': [{'uuid': 'bea61325-b453-4dbf-a2e0-5f1761169b1b', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/bea61325-b453-4dbf-a2e0-5f1761169b1b', 'rel': 'self'}, {'href': 'http://localhost/ports/bea61325-b453-4dbf-a2e0-5f1761169b1b', 'rel': 'bookmark'}]}, {'uuid': '8c3c585d-3532-4237-8c43-1e199da04b28', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/8c3c585d-3532-4237-8c43-1e199da04b28', 'rel': 'self'}, {'href': 'http://localhost/ports/8c3c585d-3532-4237-8c43-1e199da04b28', 'rel': 'bookmark'}]}, {'uuid': '2f32e34d-122e-4c4c-8997-d1a7802aa556', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/2f32e34d-122e-4c4c-8997-d1a7802aa556', 'rel': 'self'}, {'href': 'http://localhost/ports/2f32e34d-122e-4c4c-8997-d1a7802aa556', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=address,uuid&limit=3&marker=2f32e34d-122e-4c4c-8997-d1a7802aa556'} -GET: /v1/ports {} -GOT:{'ports': [{'uuid': '4666583d-d32d-4c06-9325-a2bc46fec02d', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/4666583d-d32d-4c06-9325-a2bc46fec02d', 'rel': 'self'}, {'href': 'http://localhost/ports/4666583d-d32d-4c06-9325-a2bc46fec02d', 'rel': 'bookmark'}]}, {'uuid': '544da296-d523-4db2-a8d8-545cd32869fd', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/544da296-d523-4db2-a8d8-545cd32869fd', 'rel': 'self'}, {'href': 'http://localhost/ports/544da296-d523-4db2-a8d8-545cd32869fd', 'rel': 'bookmark'}]}, {'uuid': '9d0d3d24-3376-49af-bb85-ac1742ba1f34', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/9d0d3d24-3376-49af-bb85-ac1742ba1f34', 'rel': 'self'}, {'href': 'http://localhost/ports/9d0d3d24-3376-49af-bb85-ac1742ba1f34', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=3&marker=9d0d3d24-3376-49af-bb85-ac1742ba1f34'} -GET: /v1/ports/detail {} -GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:17.022971+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'}]} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781/detail {} -GOT:Response: 404 Not Found +DELETE: /v1/ports/52:54:00:cf:2d:31 +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-0eefe9b0-e457-44d0-82a6-bf4eec8d56de +Openstack-Request-Id: req-3de39fe8-e217-48c2-9f11-d597233ff373 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/ports/detail?node=test-node {} -GOT:Response: 406 Not Acceptable -Content-Type: application/json -Openstack-Request-Id: req-2d58ac4e-21e5-4abe-83eb-be904b9ab8e2 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for port_uuid: 52:54:00:cf:2d:31\", \"debuginfo\": null}"} +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 204 No Content +Openstack-Request-Id: req-43512ee7-ee10-4ba2-abc3-c104927f1919 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/ports/detail?node=test-node {} -GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:17.840333+00:00', 'updated_at': None, '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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/ports?detail=True {} -GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:18.139984+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'}]} -GET: /v1/ports {} -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_query_false -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_query_false ... ok -ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_notifications_disabled -ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_notifications_disabled ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_041_nodes_management_boot_device_supported_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_041_nodes_management_boot_device_supported_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_sort_key_allowed -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_sort_key_allowed ... ok -ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_notifications_enabled -ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_notifications_enabled ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_sort_key_not_allowed -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_sort_key_not_allowed ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_035_nodes_management_boot_device_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_035_nodes_management_boot_device_get_admin ... ok -ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_with_custom_topics -ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_with_custom_topics ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_and_fields -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_and_fields ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_042_nodes_management_boot_device_supported_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_042_nodes_management_boot_device_supported_get_reader ... ok -ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_get_root_helper -ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_get_root_helper ... ok -ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_not_use_standard_locale -ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_not_use_standard_locale ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_false_and_fields -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_false_and_fields ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_036_nodes_management_boot_device_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_036_nodes_management_boot_device_get_member ... ok -ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_use_standard_locale_no_env_variables -ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_use_standard_locale_no_env_variables ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_old_version -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_old_version ... ok -ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_use_standard_locale_with_env_variables -ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_use_standard_locale_with_env_variables ... ok -ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_without_root_helper -ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_without_root_helper ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_with_incorrect_api_usage -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_with_incorrect_api_usage ... ok -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities ... ok -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-2e5796f5-9828-4ccc-829a-23074e775d13 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable + +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-2e5796f5-9828-4ccc-829a-23074e775d13 +Openstack-Request-Id: req-ee1dd428-d44c-4691-8706-c1e846e7466b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +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}"} +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/99b2e27e-234a-4617-9a41-26208f7e4b34 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2b8fec22-f72a-40c5-b639-773ac70ccf60 +Openstack-Request-Id: req-b30a27a3-8db4-4150-9aa9-39b8407b5079 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.24 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-2b8fec22-f72a-40c5-b639-773ac70ccf60 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-8f182096-4a5a-4585-b178-32185a2c5266 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} -GOT:Response: 503 Service Unavailable +{"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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-588e2a7c-f961-49ed-b6cd-3708dfa73d7b +Openstack-Request-Id: req-2f154081-af5a-4317-8e8c-5c426ff50410 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A port with MAC address AA:AA:AA:11:22:33 already exists.\", \"debuginfo\": null}"} +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-588e2a7c-f961-49ed-b6cd-3708dfa73d7b +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-1a11dd82-2f7e-42ff-b90d-0e91e4f35016 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} -GOT:Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:31.727401+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:11:31.727401+00:00', 'updated_at': None, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_doesnt_contain_id +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_doesnt_contain_id ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_error +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_error ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_110_nodes_management_indicators_component_ind_ident_get_allow +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.' +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_generate_uuid +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_generate_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_111_nodes_management_indicators_component_ind_ident_put_allow +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.' +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-7b5e05a9-23db-4f92-aeda-78675a52ea3b +Openstack-Request-Id: req-c77e296d-b10c-443b-8f6c-e698c1fb4d65 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:31.071276+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-7b5e05a9-23db-4f92-aeda-78675a52ea3b +Openstack-Request-Id: req-c77e296d-b10c-443b-8f6c-e698c1fb4d65 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:31.071276+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +API ACL Testing Path get /v1/portgroups/detail +GET: /v1/portgroups/detail {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3899464e-4259-4bc9-ad96-907d876b6190 +Openstack-Request-Id: req-38e6096a-a4db-41fa-963d-d4ac1f372428 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3899464e-4259-4bc9-ad96-907d876b6190 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-c92a9fa1-2fdb-4835-9b63-e9289fa87845 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-c92a9fa1-2fdb-4835-9b63-e9289fa87845 +Openstack-Request-Id: req-38e6096a-a4db-41fa-963d-d4ac1f372428 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/detail +GET: /v1/portgroups/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a028473a-f8a0-4e82-963c-680752c874fa +Openstack-Request-Id: req-9c954781-1e57-4ab6-8db7-bef56a17dcef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:31.575282+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a028473a-f8a0-4e82-963c-680752c874fa +Openstack-Request-Id: req-9c954781-1e57-4ab6-8db7-bef56a17dcef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} -GOT:Response: 403 Forbidden +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:31.575282+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-68e3cf22-80f6-4dd6-96a2-3e5caa2bc77b +Openstack-Request-Id: req-9106ca5c-88e0-4d36-a572-2cef054a390c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:31.818206+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-68e3cf22-80f6-4dd6-96a2-3e5caa2bc77b +Openstack-Request-Id: req-9106ca5c-88e0-4d36-a572-2cef054a390c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_043_nodes_management_inject_nmi_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_043_nodes_management_inject_nmi_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_037_nodes_management_boot_device_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_037_nodes_management_boot_device_get_observer ... ok -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_add_to_existing_capabilities -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_add_to_existing_capabilities ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_empty -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_empty ... ok -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_capabilities_not_dict -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_capabilities_not_dict ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_044_nodes_management_inject_nmi_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_044_nodes_management_inject_nmi_put_member ... ok -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_invalid_capabilities -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_invalid_capabilities ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_038_nodes_management_boot_device_supported_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_038_nodes_management_boot_device_supported_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_non_admin -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_non_admin ... ok -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_multiple_keys -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_multiple_keys ... ok -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_replace_to_existing_capabilities -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_replace_to_existing_capabilities ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_non_admin_no_match -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_non_admin_no_match ... ok -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_validate_network_port -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_validate_network_port ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_039_nodes_management_boot_device_supported_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_039_nodes_management_boot_device_supported_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_045_nodes_management_inject_nmi_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_045_nodes_management_inject_nmi_put_reader ... ok -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_validate_network_port_fail -ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_validate_network_port_fail ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_not_supported -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_not_supported ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_040_nodes_management_boot_device_supported_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_040_nodes_management_boot_device_supported_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_046_nodes_states_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_046_nodes_states_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_uuid_and_name -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_uuid_and_name ... ok -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_check_orphaned_allocations -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_check_orphaned_allocations ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_041_nodes_management_inject_nmi_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_041_nodes_management_inject_nmi_put_admin ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_name -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_name ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_047_nodes_states_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_047_nodes_states_get_member ... ok -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_create_allocation -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_create_allocation ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid ... ok -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:31.818206+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9b261c47-2d78-441a-ac95-b8ce21502dbf +Openstack-Request-Id: req-81b9653e-0c6e-43e5-b1af-80f5cecbb269 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_122_portgroups_portgroup_ident_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_122_portgroups_portgroup_ident_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_addr_format +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_addr_format ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckOwnerPolicy.test_check_owner_policy +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckOwnerPolicy.test_check_owner_policy ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckOwnerPolicy.test_check_owner_policy_forbidden +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckOwnerPolicy.test_check_owner_policy_forbidden ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_node_uuid_format +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_node_uuid_format ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_invalid_name +ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_invalid_name ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_112_portgroups_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_112_portgroups_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_123_portgroups_portgroup_ident_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_123_portgroups_portgroup_ident_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_name +ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_name ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_empty_string +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_empty_string ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_uuid +ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_duplicates +ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_duplicates ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_non_text +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_non_text ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_113_portgroups_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_113_portgroups_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_max_ver_str +ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_max_ver_str ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_124_portgroups_portgroup_ident_patch_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_124_portgroups_portgroup_ident_patch_admin ... ok +ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_min_ver_str +ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_min_ver_str ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-6ff90b42-1c7c-4df2-8686-ea8dba8e077d +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-5f3d7309-178b-42d5-8012-54ea3237286e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:31.934299+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:11:31.934299+00:00', 'updated_at': None, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-eb6e04bc-ffff-4b38-a005-265e7f8de451 +Openstack-Request-Id: req-361231c9-c063-43bc-8ac0-49e9b9976417 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-0e2e1de8-4e40-40ae-b10a-b676e7b2799e +Location: http://localhost/v1/ports/74f226aa-776d-4863-8d53-e27527d9ad10 +Openstack-Request-Id: req-fe5ddbc3-a244-4f87-9bf0-60c2a4e62954 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 404 Not Found +{"uuid": "74f226aa-776d-4863-8d53-e27527d9ad10", "created_at": "2024-01-06T14:11:32.339394+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, "links": [{"href": "http://localhost/v1/ports/74f226aa-776d-4863-8d53-e27527d9ad10", "rel": "self"}, {"href": "http://localhost/ports/74f226aa-776d-4863-8d53-e27527d9ad10", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +GET: /v1/ports/74f226aa-776d-4863-8d53-e27527d9ad10 {} +GOT:{'uuid': '74f226aa-776d-4863-8d53-e27527d9ad10', 'created_at': '2024-01-06T14:11:32.339394+00:00', 'updated_at': None, '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': None, 'pxe_enabled': True, 'links': [{'href': 'http://localhost/v1/ports/74f226aa-776d-4863-8d53-e27527d9ad10', 'rel': 'self'}, {'href': 'http://localhost/ports/74f226aa-776d-4863-8d53-e27527d9ad10', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d3a9a4dc-4665-494f-82a7-9d03e52a9846 +Openstack-Request-Id: req-9582b481-0100-4f01-bb37-a5b81affe31f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-format\", \"debuginfo\": null}"} +POST: /v1/ports {'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, 'node_uuid': 'invalid-format', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-8f3bab0c-cbc1-4227-80a7-6eb8c93956b7 +Openstack-Request-Id: req-82ca252c-27d9-411a-9dd4-0573f66a73e1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for node_uuid: invalid-format\", \"debuginfo\": null}"} +POST: /v1/ports {'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': '', 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c97f143e-5157-43c8-ba40-c2233f0b24f9 +Openstack-Request-Id: req-2d8cd473-0812-4e78-8305-a21cd5087cfc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A non-empty value is required when setting physical_network\", \"debuginfo\": null}"} +POST: /v1/ports {'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': 1234, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-0b51b357-dbae-4e8f-9aeb-2afad25c70ad +Openstack-Request-Id: req-1b21bdfc-6b66-496a-a098-caa26b4768ba X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for port: 1234 is not of type 'string', 'null'\", \"debuginfo\": null}"} +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_too_long +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_too_long ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_114_portgroups_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_114_portgroups_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_name_value_match +ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_name_value_match ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_keys +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_keys ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_125_portgroups_portgroup_ident_patch_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_125_portgroups_portgroup_ident_patch_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_byid +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_byid ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_missing_mandatory +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_missing_mandatory ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_byid_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_byid_invalid_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_115_portgroups_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_115_portgroups_post_admin ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_missing_optional +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_missing_optional ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_126_portgroups_portgroup_ident_patch_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_126_portgroups_portgroup_ident_patch_observer ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_invalid_power_state +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_invalid_power_state ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_switch_id_bad_mac +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_switch_id_bad_mac ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_116_portgroups_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_116_portgroups_post_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_node_locked +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_node_locked ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_min_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_min_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_127_portgroups_portgroup_ident_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_127_portgroups_portgroup_ident_delete_admin ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_no_mandatory_field_address +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_no_mandatory_field_address ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_117_portgroups_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_117_portgroups_post_observer ... ok +GOT:{'node': {'uuid': 'ca4aaec6-1736-403c-b875-0e7ab0080947', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/ca4aaec6-1736-403c-b875-0e7ab0080947', 'rel': 'self'}, {'href': 'http://localhost/nodes/ca4aaec6-1736-403c-b875-0e7ab0080947', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'xyzabc', 'agent_token_required': True}} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=002f0a60-0cc8-43e2-8f0b-ec07c90b79eb {} +GOT:{'node': {'uuid': '002f0a60-0cc8-43e2-8f0b-ec07c90b79eb', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/002f0a60-0cc8-43e2-8f0b-ec07c90b79eb', 'rel': 'self'}, {'href': 'http://localhost/nodes/002f0a60-0cc8-43e2-8f0b-ec07c90b79eb', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'this_thing_on?', 'agent_token_required': True}} +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 {} +GOT:{'node': {'uuid': '426a905d-d21c-4172-b1bd-ec2f4aa841db', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/426a905d-d21c-4172-b1bd-ec2f4aa841db', 'rel': 'self'}, {'href': 'http://localhost/nodes/426a905d-d21c-4172-b1bd-ec2f4aa841db', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': '123456', 'agent_token_required': True}} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=f90105b9-6187-4959-af84-1f811491b145 {} +GOT:{'node': {'uuid': 'f90105b9-6187-4959-af84-1f811491b145', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/f90105b9-6187-4959-af84-1f811491b145', 'rel': 'self'}, {'href': 'http://localhost/nodes/f90105b9-6187-4959-af84-1f811491b145', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': '234567890', 'agent_token_required': True}} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-44a42be5-dacc-429b-8db3-34fdf3ffebbb +Openstack-Request-Id: req-5e72964c-a35c-4cc9-b96c-bb388e6c125b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +GET: /v1/lookup {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-248706c9-4ef5-4aaa-87aa-9d975261dbfa +Openstack-Request-Id: req-2731f1a8-2685-4777-a70d-c1ec6a134bc2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"At least one of 'addresses' and 'node_uuid' parameters is required\", \"debuginfo\": null}"} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ffb884cb-91b0-4b53-865b-aa76e1852d6c +Openstack-Request-Id: req-73cc3f17-e4c2-4561-84d5-db308ab6bbbb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=4a7bbd2f-d37d-4976-bbec-dc82f9edd3b5 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-4add2c65-3efd-434a-9958-ab6405befb39 +Openstack-Request-Id: req-6863ffe2-9b7a-4095-ae1f-3995f5a9bc26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-ad768f52-9415-4783-b167-5eedd3afaaec +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 204 No Content +Openstack-Request-Id: req-822d4dce-f18f-43ae-87c5-4692eea2f880 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} + +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c781efed-ae90-45fa-b46c-00f480d7a442 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_042_nodes_management_inject_nmi_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_042_nodes_management_inject_nmi_put_member ... ok -GOT:{'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 {} -GOT:{'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?sort_key=pxe_enabled {} -GOT:{'ports': [{'uuid': 'a44ce59f-7197-46b8-94f5-6baeaac6a568', 'created_at': '2024-01-06T13:34:18.887542+00:00', 'updated_at': None, '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': None, 'pxe_enabled': False, 'links': [{'href': 'http://localhost/v1/ports/a44ce59f-7197-46b8-94f5-6baeaac6a568', 'rel': 'self'}, {'href': 'http://localhost/ports/a44ce59f-7197-46b8-94f5-6baeaac6a568', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None}, {'uuid': '8b86d939-6213-4cc4-afa5-e4cb63325ca0', 'created_at': '2024-01-06T13:34:18.892699+00:00', 'updated_at': None, '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': None, 'pxe_enabled': True, 'links': [{'href': 'http://localhost/v1/ports/8b86d939-6213-4cc4-afa5-e4cb63325ca0', 'rel': 'self'}, {'href': 'http://localhost/ports/8b86d939-6213-4cc4-afa5-e4cb63325ca0', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None}]} -GET: /v1/ports/detail?sort_key=pxe_enabled {} -GOT:Response: 406 Not Acceptable -Content-Type: application/json -Openstack-Request-Id: req-f77619f1-4854-4e35-abf4-2554615b5b8c -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -GET: /v1/ports?detail=True&fields=name {} +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-4ad06dde-cd70-4866-bad3-863bd4316b0b +Openstack-Request-Id: req-f3bb3ff0-33a8-4121-bfd6-a80238cc22c6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} -GET: /v1/ports?detail=False&fields=internal_info {} -GOT:{'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'}]}]} -GET: /v1/ports?detail=True {} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-e8b9386d-11ac-4795-8b46-84a7adbf81ec -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -GET: /v1/ports/detail?node=test-node&node_uuid=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'ports': []} -GET: /v1/ports {} -GOT:{'ports': []} -GET: /v1/ports?node=test-node {} -GOT:{'ports': [{'uuid': 'ea7c7024-a346-494a-acf6-88181e370cd2', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/ea7c7024-a346-494a-acf6-88181e370cd2', 'rel': 'self'}, {'href': 'http://localhost/ports/ea7c7024-a346-494a-acf6-88181e370cd2', 'rel': 'bookmark'}]}, {'uuid': '3f37d9ff-e31e-4f9d-93b7-f1767e1b8e0e', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/3f37d9ff-e31e-4f9d-93b7-f1767e1b8e0e', 'rel': 'self'}, {'href': 'http://localhost/ports/3f37d9ff-e31e-4f9d-93b7-f1767e1b8e0e', 'rel': 'bookmark'}]}, {'uuid': '40c7a852-b5a7-40a4-82cc-d11e4ff8ad41', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/40c7a852-b5a7-40a4-82cc-d11e4ff8ad41', 'rel': 'self'}, {'href': 'http://localhost/ports/40c7a852-b5a7-40a4-82cc-d11e4ff8ad41', 'rel': 'bookmark'}]}]} -GET: /v1/ports?node=test-node {} -GOT:{'ports': []} -GET: /v1/ports?node=test-node {} -GOT:Response: 406 Not Acceptable +{"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}"} +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-f5fe8687-b411-489c-9813-87c3d74b9fa7 +Openstack-Request-Id: req-2cf4a37d-523b-497b-88b8-f2d3bed91b97 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/ports?node=test-node {} -GOT:{'ports': [{'uuid': '7b22cb21-db77-4744-be46-9c613a29a9a4', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/7b22cb21-db77-4744-be46-9c613a29a9a4', 'rel': 'self'}, {'href': 'http://localhost/ports/7b22cb21-db77-4744-be46-9c613a29a9a4', 'rel': 'bookmark'}]}, {'uuid': '2ccfccbe-8035-4350-8901-b8a6a2a3668b', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/2ccfccbe-8035-4350-8901-b8a6a2a3668b', 'rel': 'self'}, {'href': 'http://localhost/ports/2ccfccbe-8035-4350-8901-b8a6a2a3668b', 'rel': 'bookmark'}]}, {'uuid': '0e113a4b-cd3d-44bb-a166-0c6a8380d9c4', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/0e113a4b-cd3d-44bb-a166-0c6a8380d9c4', 'rel': 'self'}, {'href': 'http://localhost/ports/0e113a4b-cd3d-44bb-a166-0c6a8380d9c4', 'rel': 'bookmark'}]}]} -GET: /v1/ports/detail?node_uuid=1be26c0b-03f2-4d2e-ae87-c02d7f33c123&node=node-name {} -GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:23.132035+00:00', 'updated_at': None, '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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/ports/detail?portgroup=fooname {} -GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:23.459525+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'}]} -GET: /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:23.803902+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'}]} -GET: /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4&node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_and_node_uuid -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_and_node_uuid ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_non_admin -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_non_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_048_nodes_states_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_048_nodes_states_get_reader ... ok -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_create_allocation_with_node_id -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_create_allocation_with_node_id ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_043_nodes_management_inject_nmi_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_043_nodes_management_inject_nmi_put_observer ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_non_admin_no_match -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_non_admin_no_match ... ok -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_active_node -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_active_node ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_older_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_older_api_version ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_049_nodes_states_power_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_049_nodes_states_power_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_044_nodes_states_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_044_nodes_states_get_admin ... ok -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_node -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_node ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_collection_custom_fields -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_collection_custom_fields ... ok -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_node_in_maintenance -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_node_in_maintenance ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_collection_next_marker_no_uuid -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_collection_next_marker_no_uuid ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_045_nodes_states_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_045_nodes_states_get_member ... ok -GOT:Response: 503 Service Unavailable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} +POST: /v1/volume/connectors {'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 -Openstack-Request-Id: req-2c8b6dea-1a55-4625-a5a4-f5057a2f85b9 +Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-75951bf0-603e-43d2-89c8-0d42495dc245 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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 {} +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_doesnt_contain_id +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_doesnt_contain_id ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_128_portgroups_portgroup_ident_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_128_portgroups_portgroup_ident_delete_member ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_no_mandatory_field_node_uuid +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_no_mandatory_field_node_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_118_portgroups_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_118_portgroups_detail_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_error +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_error ... ok +POST: /v1/ports {'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': 'ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp', 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-2c8b6dea-1a55-4625-a5a4-f5057a2f85b9 +Openstack-Request-Id: req-187c5468-3bca-4c91-ac74-0b6ae1959c60 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for port: 'ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp' is too long\", \"debuginfo\": null}"} +POST: /v1/ports {'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': 'Ethernet1/15', 'switch_info': 'value3'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-4ee71e1c-eb83-4f68-994f-40be2c6ae10f +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-f087f170-0a20-405a-bb2f-c6a85ae23345 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:33.190759+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +POST: /v1/ports {'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', 'switch_info': 'fooswitch'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-4ee71e1c-eb83-4f68-994f-40be2c6ae10f +Openstack-Request-Id: req-55930da0-e226-462c-a197-cca9be795cb1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} -GOT:Response: 403 Forbidden +{"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}"} +POST: /v1/ports {'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': 'Ethernet1/15'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-fc731953-37bb-49f0-88f0-ac318f15ffa7 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-b4411b53-0f3a-4327-82de-51b06f09d384 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:33.496394+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-fc731953-37bb-49f0-88f0-ac318f15ffa7 +Openstack-Request-Id: req-9556a33d-381f-4efc-a4f2-f860727f5b05 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a MAC address or OpenFlow datapath ID but received zz:zz:zz:zz:zz:zz.\", \"debuginfo\": null}"} +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'address': '52:54:00:cf:2d:31', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-175364df-e1d3-42dd-8391-cd5107b64fe4 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-bc71bbbd-52e2-482d-be49-564c64f1409d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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} -ACL Test GOT Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.1 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:33.777243+00:00", "updated_at": null, "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"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-175364df-e1d3-42dd-8391-cd5107b64fe4 +Openstack-Request-Id: req-8fab0b13-9a73-4a8b-bdf7-f25b98007ea1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for port: 'address' is a required property\", \"debuginfo\": null}"} +POST: /v1/ports {'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, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c2a280a6-f32b-45f0-af8a-fbb33e32f1d8 +Openstack-Request-Id: req-34d9a27b-3979-4a3b-b1a5-d3a76d35513a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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} -ACL Test GOT Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for port: 'node_uuid' is a required property\", \"debuginfo\": null}"} +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_node_uuid_not_found +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_node_uuid_not_found ... ok +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c2a280a6-f32b-45f0-af8a-fbb33e32f1d8 +Openstack-Request-Id: req-81b9653e-0c6e-43e5-b1af-80f5cecbb269 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-862392e4-8f9b-4513-b42d-f112a878e3ac +Openstack-Request-Id: req-142c6726-dc83-499f-ada0-1241cf0f1dc5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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} +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:32.572315+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-862392e4-8f9b-4513-b42d-f112a878e3ac +Openstack-Request-Id: req-142c6726-dc83-499f-ada0-1241cf0f1dc5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:32.572315+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-02f0e90c-4dce-45a7-86c3-072925f730c3 +Openstack-Request-Id: req-77cd2de5-3f57-4180-833d-0c2084cb5eeb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-02f0e90c-4dce-45a7-86c3-072925f730c3 +Openstack-Request-Id: req-77cd2de5-3f57-4180-833d-0c2084cb5eeb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} -GOT:Response: 503 Service Unavailable +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-4fa30c48-6ad2-476e-98d3-83a299649115 +Openstack-Request-Id: req-cba28599-bda2-49c0-abab-bb3f56552b56 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_050_nodes_states_power_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_050_nodes_states_power_put_member ... ok -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_transient_node -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_transient_node ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_invalid_api_version ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_046_nodes_states_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_046_nodes_states_get_observer ... ok -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_without_node -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_without_node ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_invalid_fields -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_invalid_fields ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_051_nodes_states_power_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_051_nodes_states_power_put_reader ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_is_smartnic -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_is_smartnic ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_047_nodes_states_power_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_047_nodes_states_power_put_admin ... ok -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_resume_allocations -ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_resume_allocations ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_052_nodes_states_boot_mode_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_052_nodes_states_boot_mode_put_admin ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_physical_network -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_physical_network ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_048_nodes_states_power_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_048_nodes_states_power_put_member ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_physical_network_upgrade -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_physical_network_upgrade ... ok -ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive -ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_053_nodes_states_boot_mode_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_053_nodes_states_boot_mode_put_member ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_049_nodes_states_power_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_049_nodes_states_power_put_observer ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one_custom_fields -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one_custom_fields ... ok -ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive_failed_db_conn -ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive_failed_db_conn ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one_portgroup_is_none -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one_portgroup_is_none ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_054_nodes_states_boot_mode_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_054_nodes_states_boot_mode_put_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_050_nodes_states_boot_mode_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_050_nodes_states_boot_mode_put_admin ... ok -ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive_failed_error -ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive_failed_error ... ok -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-c83047f7-a650-45fc-825f-4432c30c37a0 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -GET: /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:24.514936+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'}]} -GET: /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:{'ports': []} -GET: /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:Response: 406 Not Acceptable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-74e5b369-45a4-478b-a241-9364f7c934de +Openstack-Request-Id: req-cba28599-bda2-49c0-abab-bb3f56552b56 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/ports?fields=uuid,extra {} -GOT:{'ports': [{'uuid': '3bc78360-db42-4d0f-9b00-671aee021890', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/3bc78360-db42-4d0f-9b00-671aee021890', 'rel': 'self'}, {'href': 'http://localhost/ports/3bc78360-db42-4d0f-9b00-671aee021890', 'rel': 'bookmark'}]}, {'uuid': '0ab1b844-2c64-4feb-93b1-170b8174f5ff', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/0ab1b844-2c64-4feb-93b1-170b8174f5ff', 'rel': 'self'}, {'href': 'http://localhost/ports/0ab1b844-2c64-4feb-93b1-170b8174f5ff', 'rel': 'bookmark'}]}, {'uuid': '0e6a130f-c22d-46e6-81ed-29d3bf62ef4b', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/0e6a130f-c22d-46e6-81ed-29d3bf62ef4b', 'rel': 'self'}, {'href': 'http://localhost/ports/0e6a130f-c22d-46e6-81ed-29d3bf62ef4b', 'rel': 'bookmark'}]}]} -GET: /v1/ports?fields=address&limit=2 {} -GOT:{'ports': [{'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/938d8498-b827-4b78-b369-1c7850274bfe', 'rel': 'self'}, {'href': 'http://localhost/ports/938d8498-b827-4b78-b369-1c7850274bfe', 'rel': 'bookmark'}]}, {'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/123f693b-cc4d-4b59-843d-a82160399ae6', 'rel': 'self'}, {'href': 'http://localhost/ports/123f693b-cc4d-4b59-843d-a82160399ae6', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=address&limit=2&marker=123f693b-cc4d-4b59-843d-a82160399ae6'} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,extra {} -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0be5da6d-77e2-42f3-91e3-50be3eda53c6 +Openstack-Request-Id: req-bc89c893-ca18-454a-aa31-75b024a92482 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,spongebob {} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ccdc79d3-8a0f-45e9-97aa-b992b5eb00a3 +Openstack-Request-Id: req-bc89c893-ca18-454a-aa31-75b024a92482 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,is_smartnic {} -GOT:Response: 406 Not Acceptable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-769fee9c-5053-4de2-bb19-29c421cd01e5 +Openstack-Request-Id: req-afa62dff-b3da-494b-a904-02ba52f4bcbb X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {} -GOT:{'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'}]} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,physical_network {} -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-fa331009-adee-4cf2-a742-dbb205bb1611 +Openstack-Request-Id: req-afa62dff-b3da-494b-a904-02ba52f4bcbb X-Openstack-Ironic-Api-Maximum-Version: 1.80 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 {} -GOT:{'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'}]} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,physical_network {} -GOT:Response: 406 Not Acceptable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-db0fbe12-d48a-4ee5-8058-73442f29323f +Openstack-Request-Id: req-2f7d70f0-c89f-4828-85e5-022654969c3c X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:28.306468+00:00', 'updated_at': None, '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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=address,extra {} -GOT:{'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'}]} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:28.846812+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:29.205728+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, '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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_advanced_net -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_advanced_net ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_055_nodes_states_secure_boot_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_055_nodes_states_secure_boot_put_admin ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_internal_info -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_internal_info ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_is_smartnic -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_is_smartnic ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_056_nodes_states_secure_boot_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_056_nodes_states_secure_boot_put_member ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_exception_in_background_task -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_exception_in_background_task ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_physical_network -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_physical_network ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_057_nodes_states_secure_boot_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_057_nodes_states_secure_boot_put_reader ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_physical_network_upgrade -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_physical_network_upgrade ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_051_nodes_states_boot_mode_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_051_nodes_states_boot_mode_put_member ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_node_already_locked -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_node_already_locked ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_portgroup_uuid -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_portgroup_uuid ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_052_nodes_states_boot_mode_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_052_nodes_states_boot_mode_put_observer ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_links -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_links ... ok -ACL Test GOT Response: 503 Service Unavailable +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-4fa30c48-6ad2-476e-98d3-83a299649115 +Openstack-Request-Id: req-2f7d70f0-c89f-4828-85e5-022654969c3c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-eaba1fae-8c90-4184-9016-74b6f21e2060 +Openstack-Request-Id: req-fcc5a571-5143-4567-a58b-84e8416403fe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_129_portgroups_portgroup_ident_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_129_portgroups_portgroup_ident_delete_observer ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_noportgroup +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_noportgroup ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_generate_uuid +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_generate_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_119_portgroups_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_119_portgroups_detail_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_portgroup_nostandalone_ports +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_portgroup_nostandalone_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_130_nodes_portgroups_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_130_nodes_portgroups_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_invalid_node_uuid_format +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_invalid_node_uuid_format ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_120_portgroups_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_120_portgroups_detail_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_portgroup_standalone_ports +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_portgroup_standalone_ports ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_connector_id +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_connector_id ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_131_nodes_portgroups_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_131_nodes_portgroups_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_node_uuid +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_node_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_noportgroup +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_noportgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_121_portgroups_portgroup_ident_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_121_portgroups_portgroup_ident_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_type +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_type ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_portgroup_nostandalone_ports +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_portgroup_nostandalone_ports ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_node_uuid_not_found +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_node_uuid_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_132_nodes_portgroups_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_132_nodes_portgroups_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_122_portgroups_portgroup_ident_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_122_portgroups_portgroup_ident_get_member ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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'} +POST: /v1/volume/connectors {'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 -Openstack-Request-Id: req-eaba1fae-8c90-4184-9016-74b6f21e2060 +Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-caae302b-0a2b-4c22-8caa-7ee29665da92 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} -GOT:Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:34.046711+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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:11:34.046711+00:00', 'updated_at': None, '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'} +POST: /v1/volume/connectors {'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-9e7b436c-a206-48e0-b12a-79c15f0c9db1 +Openstack-Request-Id: req-733aa94a-61b7-43db-b95e-dde1ec02bb26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} +POST: /v1/volume/connectors {'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 -Openstack-Request-Id: req-9e7b436c-a206-48e0-b12a-79c15f0c9db1 +Location: http://localhost/v1/volume/connectors/913bbbda-6a8d-468f-94c6-2b1d08ad5c7f +Openstack-Request-Id: req-4963f89e-cf6a-48d7-bf44-74a55f0611f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} -GOT:Response: 503 Service Unavailable +{"uuid": "913bbbda-6a8d-468f-94c6-2b1d08ad5c7f", "created_at": "2024-01-06T14:11:34.452102+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/913bbbda-6a8d-468f-94c6-2b1d08ad5c7f", "rel": "self"}, {"href": "http://localhost/volume/connectors/913bbbda-6a8d-468f-94c6-2b1d08ad5c7f", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +GET: /v1/volume/connectors/913bbbda-6a8d-468f-94c6-2b1d08ad5c7f {} +GOT:{'uuid': '913bbbda-6a8d-468f-94c6-2b1d08ad5c7f', 'created_at': '2024-01-06T14:11:34.452102+00:00', 'updated_at': None, 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/913bbbda-6a8d-468f-94c6-2b1d08ad5c7f', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/913bbbda-6a8d-468f-94c6-2b1d08ad5c7f', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +POST: /v1/volume/connectors {'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 -Openstack-Request-Id: req-b7f0e471-77bc-4b5d-afd1-3ab9d4ef6185 +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +POST: /v1/volume/connectors {'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-89e301a9-bfe2-4cc1-ae96-a9ac2adb2484 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for connector: 123 is not of type 'string'\", \"debuginfo\": null}"} +POST: /v1/volume/connectors {'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-b7f0e471-77bc-4b5d-afd1-3ab9d4ef6185 +Openstack-Request-Id: req-2c9828ea-9924-4cbc-a3de-17473bf5775a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for connector: 'connector_id' is a required property\", \"debuginfo\": null}"} +POST: /v1/volume/connectors {'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-f281bdf5-f848-42da-8800-e61ef16413cc +Openstack-Request-Id: req-0027e0ba-c4d4-40c0-a0a8-a8b24b1c8080 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for connector: 'node_uuid' is a required property\", \"debuginfo\": null}"} +POST: /v1/volume/connectors {'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-f281bdf5-f848-42da-8800-e61ef16413cc +Openstack-Request-Id: req-695835c1-d6c6-45c9-ac63-da6036a12154 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for connector: 'type' is a required property\", \"debuginfo\": null}"} +POST: /v1/volume/connectors {'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-ea6d46c5-6093-42dc-8682-db36dc9fecd5 +Openstack-Request-Id: req-dc8ff402-e49f-45c0-9b6e-1adace407d8e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid input for field/attribute node_uuid. Value: '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'. \", \"debuginfo\": null}"} +POST: /v1/volume/connectors {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'test-connector-id-456', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_type_value_already_exist +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_type_value_already_exist ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_133_nodes_portgroups_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_133_nodes_portgroups_detail_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_valid_extra +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_valid_extra ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_123_portgroups_portgroup_ident_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_123_portgroups_portgroup_ident_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_node_uuid_to_node_id_mapping +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_node_uuid_to_node_id_mapping ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_134_nodes_portgroups_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_134_nodes_portgroups_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_124_portgroups_portgroup_ident_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_124_portgroups_portgroup_ident_patch_admin ... ok +POST: /v1/ports {'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, 'node_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-ea6d46c5-6093-42dc-8682-db36dc9fecd5 +Openstack-Request-Id: req-dbb0fc3f-a173-4279-8408-271665eebcde X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} -GOT:Response: 503 Service Unavailable +X-Openstack-Ironic-Api-Version: 1.1 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e could not be found.\", \"debuginfo\": null}"} +POST: /v1/ports {'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': False, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-8b19f85e-84c0-4ef8-a1f3-e3bdcb0ef095 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-4ab3e4f7-f575-4a51-8fe7-3bc684934f0b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:34.454340+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +POST: /v1/ports {'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': False, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-8b19f85e-84c0-4ef8-a1f3-e3bdcb0ef095 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-409030ee-2cc3-4734-94df-3f6d9fe681e8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:34.648137+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +POST: /v1/ports {'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': False, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-65db9315-83b1-49c3-9eda-bf84bb059d94 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-ec17e4c0-07f6-4713-86c6-0d9da410e5de X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:34.825943+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-65db9315-83b1-49c3-9eda-bf84bb059d94 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-d61f2a80-db65-44af-b4d3-5b87575b8658 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} -GOT:Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:35.002450+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-2040c61d-ec10-4c18-8a9c-b43493f22729 +Openstack-Request-Id: req-3fdcf8bc-4e76-4c0a-b6ce-2e56aa64db10 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_058_nodes_states_provision_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_058_nodes_states_provision_put_admin ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_power_on -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_power_on ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_053_nodes_states_secure_boot_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_053_nodes_states_secure_boot_put_admin ... ok -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:29.205728+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:29.631120+00:00', 'updated_at': None, '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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:29.631120+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'foo': 'bar'}, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:29.974651+00:00', 'updated_at': None, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:29.974651+00:00', 'updated_at': None, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:30.316037+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:30.316037+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:30.733757+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:31.045134+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:31.045134+00:00', 'updated_at': None, '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, 'links': [{'href': 'http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'self'}, {'href': 'http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} -GET: /v1/ports/15a4f4f9-f86b-4072-806a-27664da59680 {} -GOT:{'uuid': '15a4f4f9-f86b-4072-806a-27664da59680', 'created_at': '2024-01-06T13:34:31.495493+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/15a4f4f9-f86b-4072-806a-27664da59680', 'rel': 'self'}, {'href': 'http://localhost/ports/15a4f4f9-f86b-4072-806a-27664da59680', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/ports/15a4f4f9-f86b-4072-806a-27664da59680 {} -GOT:{'uuid': '15a4f4f9-f86b-4072-806a-27664da59680', 'created_at': '2024-01-06T13:34:31.495493+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/15a4f4f9-f86b-4072-806a-27664da59680', 'rel': 'self'}, {'href': 'http://localhost/ports/15a4f4f9-f86b-4072-806a-27664da59680', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /ports/15a4f4f9-f86b-4072-806a-27664da59680 {} -GOT:{'uuid': '15a4f4f9-f86b-4072-806a-27664da59680', 'created_at': '2024-01-06T13:34:31.495493+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/15a4f4f9-f86b-4072-806a-27664da59680', 'rel': 'self'}, {'href': 'http://localhost/ports/15a4f4f9-f86b-4072-806a-27664da59680', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/ports/ec76d85c-d2f4-450c-90d3-a1cacb519ec5 {} -GOT:{'uuid': 'ec76d85c-d2f4-450c-90d3-a1cacb519ec5', 'created_at': '2024-01-06T13:34:31.936443+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'links': [{'href': 'http://foo/v1/ports/ec76d85c-d2f4-450c-90d3-a1cacb519ec5', 'rel': 'self'}, {'href': 'http://foo/ports/ec76d85c-d2f4-450c-90d3-a1cacb519ec5', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_links_public_url -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_links_public_url ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_059_nodes_states_provision_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_059_nodes_states_provision_put_member ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_detailed_with_deleted_node -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_detailed_with_deleted_node ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_054_nodes_states_secure_boot_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_054_nodes_states_secure_boot_put_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_060_nodes_states_provision_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_060_nodes_states_provision_put_reader ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_soft_power_off_timeout -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_soft_power_off_timeout ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_non_admin_forbidden -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_non_admin_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_non_admin_forbidden_no_project -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_non_admin_forbidden_no_project ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_055_nodes_states_secure_boot_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_055_nodes_states_secure_boot_put_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_061_nodes_states_raid_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_061_nodes_states_raid_put_admin ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_unsupported_state -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_unsupported_state ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_with_deleted_node -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_with_deleted_node ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_with_deleted_port_group -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_with_deleted_port_group ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_062_nodes_states_raid_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_062_nodes_states_raid_put_member ... ok -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} -GOT:Response: 404 Not Found +{"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}"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_portgroup_standalone_ports +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_portgroup_standalone_ports ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_doesnt_contain_id +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_doesnt_contain_id ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_125_portgroups_portgroup_ident_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_125_portgroups_portgroup_ident_patch_member ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_different_nodes +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_different_nodes ... ok +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3a675bb8-a345-4662-b24c-f85b12796ad6 +Openstack-Request-Id: req-fcc5a571-5143-4567-a58b-84e8416403fe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0993c7b9-983e-47c5-8525-64c3317c0344 +Openstack-Request-Id: req-5a08553c-e253-4c3c-a916-5416799a466a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} -GOT:Response: 404 Not Found +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-875ad4f6-a228-4238-b3c6-1a874d6278d3 +Openstack-Request-Id: req-5a08553c-e253-4c3c-a916-5416799a466a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +{"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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-91a23533-20aa-4f31-a6c3-7f50c5482582 +Openstack-Request-Id: req-fcd6cab0-2130-420a-ae69-2d3fde07202b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} -GOT:Response: 404 Not Found +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cfae56a0-e5e2-48ef-87df-7d2c8d8c1d64 +Openstack-Request-Id: req-fcd6cab0-2130-420a-ae69-2d3fde07202b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} -GOT:Response: 404 Not Found +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-7a23a85b-e889-476b-b75e-1605d7f785f6 +Openstack-Request-Id: req-bf5ef865-1a6e-4ed2-aeee-b8e4d5d0463e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} -GOT:Response: 404 Not Found +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e0ffd2ad-4a11-4e43-a347-3d953b05323d +Openstack-Request-Id: req-bf5ef865-1a6e-4ed2-aeee-b8e4d5d0463e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} -GOT:Response: 404 Not Found +{"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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-37eb7cb5-b5c1-4f79-977d-9772f39ab40b +Openstack-Request-Id: req-01593561-f973-4384-9ac1-b92b780444df X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} -GOT:Response: 404 Not Found +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:35.407454+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-98f3b8de-4a08-4a92-8267-0ee077db408f +Openstack-Request-Id: req-01593561-f973-4384-9ac1-b92b780444df X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:35.407454+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-de88ffaa-632d-4954-a304-9b97ea6e7603 +Openstack-Request-Id: req-b85a5a3c-9ff4-464d-b9d9-8b1c2dcd417b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} -GOT:Response: 404 Not Found +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-29f84e1b-1e8b-43a3-8e1c-adcc6760dc43 +Openstack-Request-Id: req-b85a5a3c-9ff4-464d-b9d9-8b1c2dcd417b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} -GOT:Response: 404 Not Found +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_135_nodes_portgroups_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_135_nodes_portgroups_detail_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_old_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_old_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_136_ports_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_136_ports_get_admin ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-2da725e8-5a15-45f9-8875-d9f077860823 +Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-679bc6d1-47aa-4c6d-bb8e-7b9463e8d2a2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:35.355951+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 {'uuid': '191105ac-d374-4245-9a43-755b7fd7a59c', '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-6359d09a-9df2-4f9e-a139-d4a1c8cae165 +Openstack-Request-Id: req-b01c4a1c-a134-46b6-8fa9-f8b314383dbf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A volume connector with type iqn and connector ID test-connector-id-456 already exists.\", \"debuginfo\": null}"} +POST: /v1/volume/connectors {'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 -Openstack-Request-Id: req-8d59b2a4-2581-4c80-8ba0-8e47e94ea3a1 +Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-661ccaac-dc4e-4af2-8d5c-21f5c138cfe9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_056_nodes_states_provision_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_056_nodes_states_provision_put_admin ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_validate_fail -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_validate_fail ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_many -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_many ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_057_nodes_states_provision_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_057_nodes_states_provision_put_member ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_many_non_admin -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_many_non_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_063_nodes_states_raid_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_063_nodes_states_raid_put_reader ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_worker_pool_full -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_worker_pool_full ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_one -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_one ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_058_nodes_states_provision_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_058_nodes_states_provision_put_observer ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_064_nodes_states_console_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_064_nodes_states_console_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_invalid_address_format -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_invalid_address_format ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_059_nodes_states_raid_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_059_nodes_states_raid_put_admin ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_admin -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_admin ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_get_power_fail -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_get_power_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_065_nodes_states_console_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_065_nodes_states_console_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_admin_no_match -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_admin_no_match ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_060_nodes_states_raid_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_060_nodes_states_raid_put_member ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_existent_address -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_existent_address ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_portgroups_subresource_invalid_ident -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_portgroups_subresource_invalid_ident ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_061_nodes_states_raid_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_061_nodes_states_raid_put_observer ... ok -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:35.536257+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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:11:35.536257+00:00', 'updated_at': None, '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'}}, '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 {'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 -Openstack-Request-Id: req-2040c61d-ec10-4c18-8a9c-b43493f22729 +Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-96e6c7aa-c7d4-4c61-9bd0-87737fc3302f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} -GOT:Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:35.710054+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"} +POST: /v1/volume/targets {'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 -Openstack-Request-Id: req-1a9c31fa-7bb7-4652-9e9a-d47f910748d7 +Location: http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-80f43039-aaa0-4b9f-9811-64d4afa4a772 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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'} +POST: /v1/volume/targets {'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 -Openstack-Request-Id: req-1a9c31fa-7bb7-4652-9e9a-d47f910748d7 +Location: http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-53f18071-64f1-4552-a8f6-9fd94aef53ca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:36.102861+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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:11:36.102861+00:00', 'updated_at': None, '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'} +POST: /v1/volume/targets {'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'} +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_error +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_error ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-611ac7ce-b272-4f0c-b255-6b7513228e19 +Openstack-Request-Id: req-ce02aa6e-0fa3-4d06-ad02-6191db51e18f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-611ac7ce-b272-4f0c-b255-6b7513228e19 +Openstack-Request-Id: req-361669f7-25d5-4ca6-a386-88191bf00b6a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c0489264-46cc-4cae-8f58-59711fc9bf12 +Openstack-Request-Id: req-e3a108d3-f2ad-484b-99ce-ed276a57e35a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c0489264-46cc-4cae-8f58-59711fc9bf12 +Openstack-Request-Id: req-7990dc6d-27c5-4567-9507-d1ec09c03a25 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1f9135f1-f500-44ce-b9d8-6c8177d4052d +Openstack-Request-Id: req-b9607d55-0491-4e63-8887-6662ea050aed X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1f9135f1-f500-44ce-b9d8-6c8177d4052d +Openstack-Request-Id: req-0d9fd5cc-594d-4241-aa12-abd28acbcfa3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d5a6e769-05d7-4fc1-815e-66e78e417b09 +Openstack-Request-Id: req-0eefd57f-70be-4341-a291-b8a4cc24f6f8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/detail +GET: /v1/portgroups/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d5a6e769-05d7-4fc1-815e-66e78e417b09 +Openstack-Request-Id: req-7089eb19-57c2-4ea9-b008-de83c47a9ed6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/detail +GET: /v1/portgroups/detail {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-18c39635-5778-4525-a2b8-e4e24814ce1f +Openstack-Request-Id: req-39ff0952-974c-4705-a3ed-60569f174245 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/detail +GET: /v1/portgroups/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-18c39635-5778-4525-a2b8-e4e24814ce1f +Openstack-Request-Id: req-24dd731b-7a83-4503-b27a-1532c437625a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5e817688-ae94-4d27-b880-f3d77990d118 +Openstack-Request-Id: req-c73d4aac-9f52-42f7-928a-bbf9757674dc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5e817688-ae94-4d27-b880-f3d77990d118 +Openstack-Request-Id: req-bd0db7bb-2731-4837-9dce-4834dddbe3e2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1b971b26-e6da-48e5-aeb1-e4cafc5b03ed +Openstack-Request-Id: req-0fd9c34a-cf1d-4894-8b36-d4193eeface3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_066_nodes_states_console_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_066_nodes_states_console_put_admin ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_portgroups_subresource_node_not_found -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_portgroups_subresource_node_not_found ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_no_state_change -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_no_state_change ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_067_nodes_states_console_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_067_nodes_states_console_put_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_062_nodes_states_console_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_062_nodes_states_console_get_admin ... ok -GET: /v1/ports/ec76d85c-d2f4-450c-90d3-a1cacb519ec5 {} -GOT:{'uuid': 'ec76d85c-d2f4-450c-90d3-a1cacb519ec5', 'created_at': '2024-01-06T13:34:31.936443+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'links': [{'href': 'http://foo/v1/ports/ec76d85c-d2f4-450c-90d3-a1cacb519ec5', 'rel': 'self'}, {'href': 'http://foo/ports/ec76d85c-d2f4-450c-90d3-a1cacb519ec5', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /ports/ec76d85c-d2f4-450c-90d3-a1cacb519ec5 {} -GOT:{'uuid': 'ec76d85c-d2f4-450c-90d3-a1cacb519ec5', 'created_at': '2024-01-06T13:34:31.936443+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'links': [{'href': 'http://foo/v1/ports/ec76d85c-d2f4-450c-90d3-a1cacb519ec5', 'rel': 'self'}, {'href': 'http://foo/ports/ec76d85c-d2f4-450c-90d3-a1cacb519ec5', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GET: /v1/ports/detail {} -GOT:{'ports': [{'uuid': '6adfd0b2-5dde-4d7d-be5a-a16932aea731', 'created_at': '2024-01-06T13:34:32.503142+00:00', 'updated_at': None, 'address': '66:44:55:33:11:22', 'extra': {}, 'links': [{'href': 'http://localhost/v1/ports/6adfd0b2-5dde-4d7d-be5a-a16932aea731', 'rel': 'self'}, {'href': 'http://localhost/ports/6adfd0b2-5dde-4d7d-be5a-a16932aea731', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'}]} -GET: /v1/ports {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-dea8c3c6-2f54-4d15-97cb-1c425b0309fa +Openstack-Request-Id: req-19d99254-441c-4391-997c-12a5fd69b0f2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/ports {} -GOT:Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-61efcf16-3bc7-48d4-9cb2-f2f93680c051 +Openstack-Request-Id: req-b9e8d467-6641-4112-8492-ddbc32ba73e2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/ports {} -GOT:{'ports': []} -GET: /v1/ports/detail {} -GOT:{'ports': [{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:34:33.993261+00:00', 'updated_at': None, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': None}]} -GET: /v1/ports {} -GOT:{'ports': [{'uuid': 'b5699c6f-9de2-4206-ba2c-c6f4f4bcd38a', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/b5699c6f-9de2-4206-ba2c-c6f4f4bcd38a', 'rel': 'self'}, {'href': 'http://localhost/ports/b5699c6f-9de2-4206-ba2c-c6f4f4bcd38a', 'rel': 'bookmark'}]}, {'uuid': '75ed46e8-cd77-48d9-971e-3a0c37e6216e', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/75ed46e8-cd77-48d9-971e-3a0c37e6216e', 'rel': 'self'}, {'href': 'http://localhost/ports/75ed46e8-cd77-48d9-971e-3a0c37e6216e', 'rel': 'bookmark'}]}, {'uuid': 'd0aae89d-adae-4976-8708-532b7046feb7', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/d0aae89d-adae-4976-8708-532b7046feb7', 'rel': 'self'}, {'href': 'http://localhost/ports/d0aae89d-adae-4976-8708-532b7046feb7', 'rel': 'bookmark'}]}, {'uuid': 'e464df94-a1b0-487d-8c27-882b2b236c2a', 'address': '52:54:00:cf:2d:33', 'links': [{'href': 'http://localhost/v1/ports/e464df94-a1b0-487d-8c27-882b2b236c2a', 'rel': 'self'}, {'href': 'http://localhost/ports/e464df94-a1b0-487d-8c27-882b2b236c2a', 'rel': 'bookmark'}]}, {'uuid': 'd5ff3066-478b-4a1f-ae41-f04366efda4b', 'address': '52:54:00:cf:2d:34', 'links': [{'href': 'http://localhost/v1/ports/d5ff3066-478b-4a1f-ae41-f04366efda4b', 'rel': 'self'}, {'href': 'http://localhost/ports/d5ff3066-478b-4a1f-ae41-f04366efda4b', 'rel': 'bookmark'}]}]} -GET: /v1/ports {} -GOT:{'ports': [{'uuid': '30deb699-4473-40b5-ad76-38e842b130f2', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/30deb699-4473-40b5-ad76-38e842b130f2', 'rel': 'self'}, {'href': 'http://localhost/ports/30deb699-4473-40b5-ad76-38e842b130f2', 'rel': 'bookmark'}]}, {'uuid': '15204224-d9da-48a4-a6e1-8a84596422ec', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/15204224-d9da-48a4-a6e1-8a84596422ec', 'rel': 'self'}, {'href': 'http://localhost/ports/15204224-d9da-48a4-a6e1-8a84596422ec', 'rel': 'bookmark'}]}]} -GET: /v1/ports {} -GOT:{'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?address=aa:bb:cc:dd:ee:f1 {} -GOT:{'ports': [{'uuid': '909dcc73-233d-42af-8e90-10fa409a07eb', 'address': 'aa:bb:cc:dd:ee:f1', 'links': [{'href': 'http://localhost/v1/ports/909dcc73-233d-42af-8e90-10fa409a07eb', 'rel': 'self'}, {'href': 'http://localhost/ports/909dcc73-233d-42af-8e90-10fa409a07eb', 'rel': 'bookmark'}]}]} -GET: /v1/ports?address=invalid-mac-format {} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_126_portgroups_portgroup_ident_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_126_portgroups_portgroup_ident_patch_observer ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_uuid_not_found +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_uuid_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_137_ports_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_137_ports_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_generate_uuid +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_generate_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_127_portgroups_portgroup_ident_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_127_portgroups_portgroup_ident_delete_admin ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_invalid_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_uuid_not_found_old_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_uuid_not_found_old_api_version ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_invalid_node_uuid_format +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_invalid_node_uuid_format ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_138_ports_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_138_ports_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_node_uuid +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_node_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_some_invalid_local_link_connection_key +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_some_invalid_local_link_connection_key ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_128_portgroups_portgroup_ident_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_128_portgroups_portgroup_ident_delete_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_type +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_type ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_139_ports_post_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_139_ports_post_admin ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_value +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_value ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_129_portgroups_portgroup_ident_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_129_portgroups_portgroup_ident_delete_observer ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-6b8bd699-dfa5-4197-99c3-60f29280ad47 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-f214a915-3c24-4a6c-a666-77fe4918d797 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/ports?address=aa:bb:cc:dd:ee:f1 {} -GOT:{'ports': [{'uuid': '0c81f36c-c61b-42e7-821b-0eebe25b357b', 'address': 'aa:bb:cc:dd:ee:f1', 'links': [{'href': 'http://localhost/v1/ports/0c81f36c-c61b-42e7-821b-0eebe25b357b', 'rel': 'self'}, {'href': 'http://localhost/ports/0c81f36c-c61b-42e7-821b-0eebe25b357b', 'rel': 'bookmark'}]}]} -GET: /v1/ports?address=aa:bb:cc:dd:ee:f1 {} -GOT:{'ports': []} -GET: /v1/ports?address=aa:bb:cc:dd:ee:ff {} -GOT:{'ports': []} -GET: /v1/portgroups/123 123/ports {} -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\"}"} -GET: /v1/portgroups/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/ports {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/ports?sort_key=uuid {} -GOT:{'ports': [{'uuid': '0ac4f1c2-529e-4e20-81eb-a54640cb36fa', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/0ac4f1c2-529e-4e20-81eb-a54640cb36fa', 'rel': 'self'}, {'href': 'http://localhost/ports/0ac4f1c2-529e-4e20-81eb-a54640cb36fa', 'rel': 'bookmark'}]}, {'uuid': '1d2e3857-9914-49d9-b44d-9fc0edb122da', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/1d2e3857-9914-49d9-b44d-9fc0edb122da', 'rel': 'self'}, {'href': 'http://localhost/ports/1d2e3857-9914-49d9-b44d-9fc0edb122da', 'rel': 'bookmark'}]}, {'uuid': 'f2dc6643-2860-45cb-832b-322d8c85b062', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/ports/f2dc6643-2860-45cb-832b-322d8c85b062', 'rel': 'self'}, {'href': 'http://localhost/ports/f2dc6643-2860-45cb-832b-322d8c85b062', 'rel': 'bookmark'}]}]} -GET: /v1/ports?sort_key=pxe_enabled {} -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_allowed -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_allowed ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_068_nodes_states_console_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_068_nodes_states_console_put_reader ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_set_power_fail -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_set_power_fail ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_invalid -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_invalid ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_063_nodes_states_console_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_063_nodes_states_console_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_not_allowed -ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_not_allowed ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_069_nodes_vendor_passthru_methods_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_069_nodes_vendor_passthru_methods_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_064_nodes_states_console_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_064_nodes_states_console_put_admin ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_spawn_fail -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_spawn_fail ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links_custom_fields -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links_custom_fields ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_070_nodes_vendor_passthru_methods_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_070_nodes_vendor_passthru_methods_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_065_nodes_states_console_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_065_nodes_states_console_put_member ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links_default_limit -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links_default_limit ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_071_nodes_vendor_passthru_methods_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_071_nodes_vendor_passthru_methods_get_reader ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_success -ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_success ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_against_single -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_against_single ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_066_nodes_states_console_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_066_nodes_states_console_put_observer ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_by_node_name_ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_by_node_name_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_072_nodes_vendor_passthru_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_072_nodes_vendor_passthru_get_admin ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_exception_getting_current -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_exception_getting_current ... ok -GOT:{'ports': [{'uuid': 'efde33ce-1308-4e62-ac45-15c645d5ea54', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/efde33ce-1308-4e62-ac45-15c645d5ea54', 'rel': 'self'}, {'href': 'http://localhost/ports/efde33ce-1308-4e62-ac45-15c645d5ea54', 'rel': 'bookmark'}]}, {'uuid': '23601c96-7d69-4a76-83cc-b346c7e9963f', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/23601c96-7d69-4a76-83cc-b346c7e9963f', 'rel': 'self'}, {'href': 'http://localhost/ports/23601c96-7d69-4a76-83cc-b346c7e9963f', 'rel': 'bookmark'}]}]} -GET: /v1/ports?sort_key=foo {} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:35.790342+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-9f838415-3070-4d6e-b7ae-efe67042ab8d +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-f1a12c06-6acb-425f-b5b8-10ccfe991cb1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} -GET: /v1/ports?sort_key=extra {} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:35.992338+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +POST: /v1/ports {'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, 'node_uuid': '26e97c22-e82c-426f-9b21-cd6da976b626', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-08eaddb9-8be2-49c1-b437-4e31fa4ece52 +Openstack-Request-Id: req-8858e501-1151-4732-99e0-d153481af3fa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 26e97c22-e82c-426f-9b21-cd6da976b626 could not be found.\", \"debuginfo\": null}"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-635d9a14-68bf-4c44-97ff-c3f76cb0c790 +Openstack-Request-Id: req-cb2437ba-2e39-4066-96b5-8c35a4849b38 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} +X-Openstack-Ironic-Api-Version: 1.15 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-86460c8c-eb0b-4edd-9aa1-cda77fc15a04 +Openstack-Request-Id: req-c3734685-b33f-4bfd-81c7-f5d7aa961c16 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value local_link_connection is an invalid field for sorting\", \"debuginfo\": null}"} -GET: /v1/ports?sort_key=pxe_enabled {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e could not be found.\", \"debuginfo\": null}"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-ed764f08-f14f-4efa-9582-2bb5f2fcc672 +Openstack-Request-Id: req-6d77a00f-7d28-4646-b0fb-8fc4f72ddd1e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.18 +X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} -GET: /v1/portgroups/?limit=3 {} -GOT:{'portgroups': [{'uuid': 'c8e3bbca-c224-4d37-a763-d4c5625bcc48', 'address': '52:54:00:cf:2d:30', 'name': 'portgroup0', 'links': [{'href': 'http://localhost/v1/portgroups/c8e3bbca-c224-4d37-a763-d4c5625bcc48', 'rel': 'self'}, {'href': 'http://localhost/portgroups/c8e3bbca-c224-4d37-a763-d4c5625bcc48', 'rel': 'bookmark'}]}, {'uuid': '23520a91-bd78-4d7e-bc14-1e1efefd0164', 'address': '52:54:00:cf:2d:31', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/23520a91-bd78-4d7e-bc14-1e1efefd0164', 'rel': 'self'}, {'href': 'http://localhost/portgroups/23520a91-bd78-4d7e-bc14-1e1efefd0164', 'rel': 'bookmark'}]}, {'uuid': 'defebda2-4e79-44dd-aec5-88c219737c08', 'address': '52:54:00:cf:2d:32', 'name': 'portgroup2', 'links': [{'href': 'http://localhost/v1/portgroups/defebda2-4e79-44dd-aec5-88c219737c08', 'rel': 'self'}, {'href': 'http://localhost/portgroups/defebda2-4e79-44dd-aec5-88c219737c08', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=uuid,address,name&limit=3&marker=defebda2-4e79-44dd-aec5-88c219737c08'} -GET: /v1/portgroups?fields=address,uuid {} -GOT:{'portgroups': [{'uuid': '110f34a0-c22c-4543-8621-fac0db62fb34', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/portgroups/110f34a0-c22c-4543-8621-fac0db62fb34', 'rel': 'self'}, {'href': 'http://localhost/portgroups/110f34a0-c22c-4543-8621-fac0db62fb34', 'rel': 'bookmark'}]}, {'uuid': 'fed9c290-cf01-49af-8a70-952ad3c0a26f', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/portgroups/fed9c290-cf01-49af-8a70-952ad3c0a26f', 'rel': 'self'}, {'href': 'http://localhost/portgroups/fed9c290-cf01-49af-8a70-952ad3c0a26f', 'rel': 'bookmark'}]}, {'uuid': '2ae4c4c7-c151-489d-98ee-18e981b86849', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/portgroups/2ae4c4c7-c151-489d-98ee-18e981b86849', 'rel': 'self'}, {'href': 'http://localhost/portgroups/2ae4c4c7-c151-489d-98ee-18e981b86849', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=address,uuid&limit=3&marker=2ae4c4c7-c151-489d-98ee-18e981b86849'} -GET: /v1/portgroups {} -GOT:{'portgroups': [{'uuid': '04e95dd4-73ef-4739-9d1a-6e50182b72e9', 'address': '52:54:00:cf:2d:30', 'name': 'portgroup0', 'links': [{'href': 'http://localhost/v1/portgroups/04e95dd4-73ef-4739-9d1a-6e50182b72e9', 'rel': 'self'}, {'href': 'http://localhost/portgroups/04e95dd4-73ef-4739-9d1a-6e50182b72e9', 'rel': 'bookmark'}]}, {'uuid': '5b9761a2-9d22-4734-a4b2-a1f05272ea77', 'address': '52:54:00:cf:2d:31', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/5b9761a2-9d22-4734-a4b2-a1f05272ea77', 'rel': 'self'}, {'href': 'http://localhost/portgroups/5b9761a2-9d22-4734-a4b2-a1f05272ea77', 'rel': 'bookmark'}]}, {'uuid': '558e8cda-ec95-4aee-be93-2cca13a68aaf', 'address': '52:54:00:cf:2d:32', 'name': 'portgroup2', 'links': [{'href': 'http://localhost/v1/portgroups/558e8cda-ec95-4aee-be93-2cca13a68aaf', 'rel': 'self'}, {'href': 'http://localhost/portgroups/558e8cda-ec95-4aee-be93-2cca13a68aaf', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=uuid,address,name&limit=3&marker=558e8cda-ec95-4aee-be93-2cca13a68aaf'} -GET: /v1/portgroups/detail {} -GOT:{'portgroups': [{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:34:40.236215+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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/detail {} -GOT:Response: 404 Not Found +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-9ccc0907-5f6b-4066-8d2d-27f9407d9e98 +Openstack-Request-Id: req-30de2b5c-9ab3-488d-8a05-877c539eaf19 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -GET: /v1/portgroups/detail?node=test-node {} -GOT:{'portgroups': [{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:34:40.918185+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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/detail {} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_invalid_api_version ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_067_nodes_vendor_passthru_methods_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_067_nodes_vendor_passthru_methods_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_query -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_query ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_073_nodes_vendor_passthru_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_073_nodes_vendor_passthru_get_member ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_exception_in_background_task -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_exception_in_background_task ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_068_nodes_vendor_passthru_methods_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_068_nodes_vendor_passthru_methods_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_query_false -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_query_false ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_sort_key_allowed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_sort_key_allowed ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_069_nodes_vendor_passthru_methods_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_069_nodes_vendor_passthru_methods_get_observer ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_existing -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_existing ... ok -ACL Test GOT Response: 503 Service Unavailable +{"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}"} +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-1b971b26-e6da-48e5-aeb1-e4cafc5b03ed +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-49900433-b5f3-4f72-8f96-8d69d02aa0e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} -GOT:Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:37.160011+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_valid_extra +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_valid_extra ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_node_uuid_not_found +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_node_uuid_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_nopxe_noportgroup +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_nopxe_noportgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_140_ports_post_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_140_ports_post_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_valid_extra +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_valid_extra ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_130_nodes_portgroups_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_130_nodes_portgroups_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_nopxe_portgroup_standalone_ports +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_nopxe_portgroup_standalone_ports ... ok +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-75f764e8-54d7-4fd2-b4d6-5154aeed4725 +Openstack-Request-Id: req-75ffad3b-cb96-4b3e-b8b0-294d90221054 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} +POST: /v1/volume/targets {'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 -Openstack-Request-Id: req-75f764e8-54d7-4fd2-b4d6-5154aeed4725 +Location: http://localhost/v1/volume/targets/cd8b1436-db5d-4432-a528-30607fc1aa2e +Openstack-Request-Id: req-3674d69a-d108-4c55-bfdc-73d4917733ce X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} -GOT:Response: 403 Forbidden +{"uuid": "cd8b1436-db5d-4432-a528-30607fc1aa2e", "created_at": "2024-01-06T14:11:36.576620+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/cd8b1436-db5d-4432-a528-30607fc1aa2e", "rel": "self"}, {"href": "http://localhost/volume/targets/cd8b1436-db5d-4432-a528-30607fc1aa2e", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +GET: /v1/volume/targets/cd8b1436-db5d-4432-a528-30607fc1aa2e {} +GOT:{'uuid': 'cd8b1436-db5d-4432-a528-30607fc1aa2e', 'created_at': '2024-01-06T14:11:36.576620+00:00', 'updated_at': None, 'boot_index': 0, 'extra': {}, 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'volume_type': 'iscsi', 'links': [{'href': 'http://localhost/v1/volume/targets/cd8b1436-db5d-4432-a528-30607fc1aa2e', 'rel': 'self'}, {'href': 'http://localhost/volume/targets/cd8b1436-db5d-4432-a528-30607fc1aa2e', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +POST: /v1/volume/targets {'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\": \"\"}"} +POST: /v1/volume/targets {'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-0eb450d4-7650-4776-b96a-07c72202f2ec +Openstack-Request-Id: req-cd914823-62b7-4ca9-920b-4531dac5defc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for target: 123 is not of type 'string'\", \"debuginfo\": null}"} +POST: /v1/volume/targets {'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-0eb450d4-7650-4776-b96a-07c72202f2ec +Openstack-Request-Id: req-26b767e6-7d6a-4eda-8266-876e197c0e24 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for target: 'node_uuid' is a required property\", \"debuginfo\": null}"} +POST: /v1/volume/targets {'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-85f60bb0-02ef-4b8f-962a-431deda9b77c +Openstack-Request-Id: req-207ff1aa-cb17-47e1-b86b-0325db8759d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for target: 'volume_type' is a required property\", \"debuginfo\": null}"} +POST: /v1/volume/targets {'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-85f60bb0-02ef-4b8f-962a-431deda9b77c +Openstack-Request-Id: req-666261e2-ca75-4755-83ee-24696394f4ea X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for target: 'boot_index' is a required property\", \"debuginfo\": null}"} +POST: /v1/volume/targets {'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-c2c0a39a-735a-4884-929e-cfa79f581168 +Openstack-Request-Id: req-46e054b1-b45b-4124-a962-9bcf2e8f48b1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid input for field/attribute node_uuid. Value: '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'. \", \"debuginfo\": null}"} +POST: /v1/volume/targets {'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 -Openstack-Request-Id: req-c2c0a39a-735a-4884-929e-cfa79f581168 +Location: http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-2e4d56c8-91ab-4c0e-b021-c8b4f3f05e29 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:37.441739+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 {} +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:11:37.441739+00:00', 'updated_at': None, 'boot_index': 0, 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, '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'} +POST: /v1/volume/targets {'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'} +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_node_uuid_to_node_id_mapping +ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_node_uuid_to_node_id_mapping ... ok +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_exception_success +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_exception_success ... ok +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_141_ports_post_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_141_ports_post_observer ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_noportgroup +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_noportgroup ... ok +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault_debug +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault_debug ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_131_nodes_portgroups_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_131_nodes_portgroups_get_member ... ok +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault_debug_tracebacks +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault_debug_tracebacks ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_portgroup_nostandalone_ports +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_portgroup_nostandalone_ports ... ok +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_132_nodes_portgroups_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_132_nodes_portgroups_get_observer ... ok +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault_debug +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault_debug ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6585b265-bc3a-481c-87b6-038b3989917f +Openstack-Request-Id: req-2859c6f3-95f9-465b-9685-ceaa9dab7697 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:35.953539+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6585b265-bc3a-481c-87b6-038b3989917f +Openstack-Request-Id: req-2859c6f3-95f9-465b-9685-ceaa9dab7697 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} -GOT:Response: 503 Service Unavailable +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:35.953539+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +API ACL Testing Path get /v1/ports +GET: /v1/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-84d4ab16-913a-4479-8dc0-2e9f46254a46 +Openstack-Request-Id: req-5bbc1a5f-c9bf-41d2-845d-16cb48a1100a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-84d4ab16-913a-4479-8dc0-2e9f46254a46 +Openstack-Request-Id: req-5bbc1a5f-c9bf-41d2-845d-16cb48a1100a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +{"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"}]}]} +API ACL Testing Path get /v1/ports +GET: /v1/ports {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9943b595-0c7f-445d-b99d-d708ba196ae8 +Openstack-Request-Id: req-24643164-258b-4e4f-b4e8-008fb149fd32 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9943b595-0c7f-445d-b99d-d708ba196ae8 +Openstack-Request-Id: req-24643164-258b-4e4f-b4e8-008fb149fd32 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports +GET: /v1/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1719c3fa-1cfb-4f77-b915-0b887430dff1 +Openstack-Request-Id: req-1458ca71-7782-4ac5-b36c-51c2e13311c2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_074_nodes_vendor_passthru_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_074_nodes_vendor_passthru_get_reader ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_sort_key_not_allowed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_sort_key_not_allowed ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_075_nodes_vendor_passthru_post_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_075_nodes_vendor_passthru_post_admin ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_and_fields -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_and_fields ... ok -GOT:Response: 404 Not Found +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-693bbef1-3f62-46a6-b1a8-34b59c4e539c +Openstack-Request-Id: req-1458ca71-7782-4ac5-b36c-51c2e13311c2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} -GOT:Response: 404 Not Found +{"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"}]}]} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-f6deb93e-ea7d-4884-b8af-e8111fabc27a +Openstack-Request-Id: req-3b0ce88f-fedc-4ed9-8982-24ca5c5c1db1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 68a552fb-dcd2-43bf-9302-e4c93287be16 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c6a6777c-2c44-4d19-9557-e43e6e78718a +Openstack-Request-Id: req-3b0ce88f-fedc-4ed9-8982-24ca5c5c1db1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 68a552fb-dcd2-43bf-9302-e4c93287be16 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-ba41bbfd-73dd-4077-bb0e-59fb5cc00fb4 +Openstack-Request-Id: req-75646734-9607-43ec-b8d6-4f15faa4fe32 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0f2624a8-6e75-4e3c-a1c6-eabadb2a0da4 +Openstack-Request-Id: req-75646734-9607-43ec-b8d6-4f15faa4fe32 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-08f668b2-f5a4-4a21-bb42-4e91c408c138 +Openstack-Request-Id: req-8b06b1fe-82a7-47b1-ac22-86916917a201 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e50b2de1-1574-42f9-a672-68cd82817b29 +Openstack-Request-Id: req-8b06b1fe-82a7-47b1-ac22-86916917a201 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/detail +GET: /v1/ports/detail {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_142_ports_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_142_ports_detail_get_admin ... ok +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault_debug_tracebacks +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault_debug_tracebacks ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_portgroup_standalone_ports +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_portgroup_standalone_ports ... ok +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_remote_error_success +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_remote_error_success ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_hyphens_delimiter +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_hyphens_delimiter ... ok +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_143_ports_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_143_ports_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_133_nodes_portgroups_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_133_nodes_portgroups_detail_get_admin ... ok +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback_debug +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback_debug ... ok +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback_debug_tracebacks +ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback_debug_tracebacks ... ok +GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T14:11:37.160011+00:00', 'updated_at': None, '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'}}, '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': None, 'pxe_enabled': 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'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +POST: /v1/ports {'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': False, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-e28415bf-1856-4793-ba20-63eb7dd1eaf8 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-94dcd763-66c7-492f-b536-2f1a34ffdd20 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:37.420357+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +POST: /v1/ports {'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': False, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-ffeecd15-9ec2-4d0b-a688-d367f43033f5 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-7329ecf3-6a8a-4985-86cb-2f872346c374 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:37.614012+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-a9a534c0-98ee-4be2-b226-6df66b4ce770 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-bcaf36fe-becd-4f9f-87b7-595a0ed2dab5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:37.839713+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-bce56cb7-997d-4afc-9f28-1901c05791c1 +Openstack-Request-Id: req-8bb401f7-4ec5-4254-a869-17354147fce4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} -GOT:Response: 404 Not Found +{"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}"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-32a34729-ffb9-48b5-b42a-3738b1cbbb14 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-f4609e3b-358a-4600-84dc-3de64151dbe1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:38.252436+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-f2cc85ce-aa05-456d-82db-29fa290ec1c8 +Openstack-Request-Id: req-4d29e0cb-a2ad-45a3-afbf-4cd89e787d6f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} -GOT:Response: 404 Not Found +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}"} +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_internal_field +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_internal_field ... ok +ironic.tests.unit.api.test_method.TestExpose.test_exception +ironic.tests.unit.api.test_method.TestExpose.test_exception ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_144_ports_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_144_ports_detail_get_observer ... ok +ironic.tests.unit.api.test_method.TestExpose.test_expose +ironic.tests.unit.api.test_method.TestExpose.test_expose ... ok +ironic.tests.unit.api.test_method.TestExpose.test_expose_validation +ironic.tests.unit.api.test_method.TestExpose.test_expose_validation ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_default_value +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_default_value ... ok +ironic.tests.unit.api.test_method.TestExpose.test_post_body +ironic.tests.unit.api.test_method.TestExpose.test_post_body ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_145_ports_port_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_145_ports_port_id_get_admin ... ok +ironic.tests.unit.api.test_method.TestExpose.test_post_body_validation +ironic.tests.unit.api.test_method.TestExpose.test_post_body_validation ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_missing_hostname +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_missing_hostname ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_134_nodes_portgroups_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_134_nodes_portgroups_detail_get_member ... ok +ironic.tests.unit.api.test_method.TestExpose.test_response_204 +ironic.tests.unit.api.test_method.TestExpose.test_response_204 ... ok +ironic.tests.unit.api.test_method.TestExpose.test_response_content +ironic.tests.unit.api.test_method.TestExpose.test_response_content ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_missing_port_id +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_missing_port_id ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_146_ports_port_id_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_146_ports_port_id_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_135_nodes_portgroups_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_135_nodes_portgroups_detail_get_observer ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-f1a5884d-9163-40b8-977b-cd6ba48655df +Location: http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-89b4b83d-b888-4ed1-99da-649f6b5d5cf2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_070_nodes_vendor_passthru_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_070_nodes_vendor_passthru_get_admin ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_node_already_locked -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_node_already_locked ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_false_and_fields -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_false_and_fields ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_076_nodes_vendor_passthru_post_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_076_nodes_vendor_passthru_post_member ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_old_version -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_old_version ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_071_nodes_vendor_passthru_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_071_nodes_vendor_passthru_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_empty -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_empty ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_valid -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_valid ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_077_nodes_vendor_passthru_post_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_077_nodes_vendor_passthru_post_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_072_nodes_vendor_passthru_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_072_nodes_vendor_passthru_get_observer ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_by_node_name_ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_by_node_name_ok ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_by_node_uuid_ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_by_node_uuid_ok ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_validate_fail -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_validate_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_078_nodes_vendor_passthru_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_078_nodes_vendor_passthru_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_073_nodes_vendor_passthru_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_073_nodes_vendor_passthru_post_admin ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_ports_by_portgroup_uuid -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_ports_by_portgroup_uuid ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_079_nodes_vendor_passthru_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_079_nodes_vendor_passthru_put_member ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_worker_pool_full -ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_worker_pool_full ... ok -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:37.589100+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: / {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/portgroups?detail=True {} -GOT:{'portgroups': [{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:34:41.686433+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {} -GOT:{'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 {} -GOT:{'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?sort_key=mode {} -GOT:{'portgroups': [{'uuid': '8345c0a4-516e-46d2-bc5b-17f355d12277', 'created_at': '2024-01-06T13:34:42.351948+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'mode_1', 'name': 'portgroup1', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/8345c0a4-516e-46d2-bc5b-17f355d12277', 'rel': 'self'}, {'href': 'http://localhost/portgroups/8345c0a4-516e-46d2-bc5b-17f355d12277', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/8345c0a4-516e-46d2-bc5b-17f355d12277/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/8345c0a4-516e-46d2-bc5b-17f355d12277/ports', 'rel': 'bookmark'}]}, {'uuid': '5a9eda66-37fe-4c9f-8d1a-93b0d224f2ff', 'created_at': '2024-01-06T13:34:42.347346+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:32', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'mode_2', 'name': 'portgroup2', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/5a9eda66-37fe-4c9f-8d1a-93b0d224f2ff', 'rel': 'self'}, {'href': 'http://localhost/portgroups/5a9eda66-37fe-4c9f-8d1a-93b0d224f2ff', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/5a9eda66-37fe-4c9f-8d1a-93b0d224f2ff/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/5a9eda66-37fe-4c9f-8d1a-93b0d224f2ff/ports', 'rel': 'bookmark'}]}, {'uuid': '0f92ba3c-54f6-423f-b2f5-ba6597f0ab50', 'created_at': '2024-01-06T13:34:42.334733+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:33', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'mode_3', 'name': 'portgroup3', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/0f92ba3c-54f6-423f-b2f5-ba6597f0ab50', 'rel': 'self'}, {'href': 'http://localhost/portgroups/0f92ba3c-54f6-423f-b2f5-ba6597f0ab50', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/0f92ba3c-54f6-423f-b2f5-ba6597f0ab50/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/0f92ba3c-54f6-423f-b2f5-ba6597f0ab50/ports', 'rel': 'bookmark'}]}]} -GET: /v1/portgroups/detail?sort_key=mode {} -GOT:Response: 406 Not Acceptable +Openstack-Request-Id: req-dceaa9a3-4113-4866-8ccf-e47a79419012 +{"error_message": "{\"faultcode\":\"Server\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} +GET: / {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-fc41085a-85c9-4f95-95e8-17f731dd3aa1 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -GET: /v1/portgroups?detail=True&fields=name {} +Openstack-Request-Id: req-80935a76-64f5-48bc-be4c-42cd70dc9e13 +{"error_message": "{\"faultcode\":\"Client\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} +GET: / {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d94b0a5a-401c-4550-b901-9cde64af1cd1 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} -GET: /v1/portgroups?detail=False&fields=internal_info {} -GOT:{'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'}]}]} -GET: /v1/portgroups?detail=True {} +Openstack-Request-Id: req-b68b639b-2e9f-467e-b45a-c70e3692939b +{"error_message": "{\"faultcode\":\"Client\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} +GET: / {} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-0c681517-5cf6-46b0-9312-6d4bf17a2dc6 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -GET: /v1/portgroups {} -GOT:{'portgroups': []} -GET: /v1/portgroups?node=test-node {} -GOT:{'portgroups': [{'uuid': '9c69c0b9-34aa-4815-83b9-3b35016fff0f', 'address': '52:54:00:cf:2d:30', 'name': 'portgroup0', 'links': [{'href': 'http://localhost/v1/portgroups/9c69c0b9-34aa-4815-83b9-3b35016fff0f', 'rel': 'self'}, {'href': 'http://localhost/portgroups/9c69c0b9-34aa-4815-83b9-3b35016fff0f', 'rel': 'bookmark'}]}, {'uuid': '1de8231f-a480-450f-92bc-d886f0203520', 'address': '52:54:00:cf:2d:31', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/1de8231f-a480-450f-92bc-d886f0203520', 'rel': 'self'}, {'href': 'http://localhost/portgroups/1de8231f-a480-450f-92bc-d886f0203520', 'rel': 'bookmark'}]}, {'uuid': 'd00d6da9-6620-44cf-b1d0-4f70d796ecc1', 'address': '52:54:00:cf:2d:32', 'name': 'portgroup2', 'links': [{'href': 'http://localhost/v1/portgroups/d00d6da9-6620-44cf-b1d0-4f70d796ecc1', 'rel': 'self'}, {'href': 'http://localhost/portgroups/d00d6da9-6620-44cf-b1d0-4f70d796ecc1', 'rel': 'bookmark'}]}]} -GET: /v1/portgroups/detail?node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:{'portgroups': [{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:34:44.576832+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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/ports {} -GOT:{'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/portgroups?fields=uuid,extra {} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_custom_fields -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_custom_fields ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_074_nodes_vendor_passthru_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_074_nodes_vendor_passthru_post_member ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_pagination_no_uuid -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_pagination_no_uuid ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_080_nodes_vendor_passthru_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_080_nodes_vendor_passthru_put_reader ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_properties_field_lower_api_version -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_properties_field_lower_api_version ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_075_nodes_vendor_passthru_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_075_nodes_vendor_passthru_post_observer ... ok -ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy -ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_custom_fields_invalid_fields -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_custom_fields_invalid_fields ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_081_nodes_vendor_passthru_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_081_nodes_vendor_passthru_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_076_nodes_vendor_passthru_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_076_nodes_vendor_passthru_put_admin ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one ... ok -ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_deprecated -ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_deprecated ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_custom_fields -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_custom_fields ... ok -ACL Test GOT Response: 403 Forbidden +Openstack-Request-Id: req-2093b124-c6ad-48cd-bea6-4dc048350500 +{"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}"} +GET: / {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-1719c3fa-1cfb-4f77-b915-0b887430dff1 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 503 Service Unavailable +Openstack-Request-Id: req-35892524-6b06-4e26-831f-f05ac72f0707 +{"error_message": "{\"faultcode\":\"Server\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} +GET: / {} +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-e1381b97-7a91-4dcb-91e1-ca01e0ff01bc +{"error_message": "{\"faultcode\":\"Server\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} +GET: / {} +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-722b4741-301b-48a1-b3dd-7e8dc9cb4947 +{"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 \\\"/build/reproducible-path/ironic-21.1.0/ironic/api/method.py\\\", line 42, in callfunction\\n result = f(self, *args, **kwargs)\\n ^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n File \\\"/build/reproducible-path/ironic-21.1.0/ironic/api/controllers/root.py\\\", line 43, in index\\n return root()\\n ^^^^^^\\n\\n File \\\"\\\", line 3, in root\\n\\n File \\\"/usr/lib/python3.11/unittest/mock.py\\\", line 1118, in __call__\\n return self._mock_call(*args, **kwargs)\\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n File \\\"/usr/lib/python3.11/unittest/mock.py\\\", line 1122, in _mock_call\\n return self._execute_mock_call(*args, **kwargs)\\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n File \\\"/usr/lib/python3.11/unittest/mock.py\\\", line 1177, 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\"}"} +GET: / {} +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-77d6fb44-3380-409b-a68a-3ce91c750933 +{"error_message": "{\"faultcode\":\"Server\",\"faultstring\":\"Remote error: TestException Test exception message.\\n['\",\"debuginfo\":null}"} +GET: / {} +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-fe9394ad-b088-4804-a2d1-1e0a889cb5a6 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Error message without traceback \\n but \\n multiline\", \"debuginfo\": null}"} +GET: / {} +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-7f3b6797-6b51-46fd-9f9c-99eb96f296d8 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Error message without traceback \\n but \\n multiline\", \"debuginfo\": null}"} +GET: / {} +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-f4e0b888-bd43-4ce7-9875-4b9ee43bc280 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Error message without traceback \\n but \\n multiline\", \"debuginfo\": \"Traceback (most recent call last):\\n\\n File \\\"/build/reproducible-path/ironic-21.1.0/ironic/api/method.py\\\", line 42, in callfunction\\n result = f(self, *args, **kwargs)\\n ^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n File \\\"/build/reproducible-path/ironic-21.1.0/ironic/api/controllers/root.py\\\", line 43, in index\\n return root()\\n ^^^^^^\\n\\n File \\\"\\\", line 3, in root\\n\\n File \\\"/usr/lib/python3.11/unittest/mock.py\\\", line 1118, in __call__\\n return self._mock_call(*args, **kwargs)\\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n File \\\"/usr/lib/python3.11/unittest/mock.py\\\", line 1122, in _mock_call\\n return self._execute_mock_call(*args, **kwargs)\\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n File \\\"/usr/lib/python3.11/unittest/mock.py\\\", line 1177, in _execute_mock_call\\n raise effect\\n\\nException: Error message without traceback \\n but \\n multiline\\n\"}"} +GET: /v1/things/ouch {} +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-812b0e15-b352-44ba-b4ba-938360006346 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"ouch\", \"debuginfo\": null}"} +GET: /v1/things {'name': 'foo', 'flag': True} +GOT:{'foo': True} +GET: /v1/things {'name': 'foo', 'flag': 'truish'} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-518e0427-74c5-4a4c-9315-c02407b3cd73 +{"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}"} +POST: /v1/things/ {'three': 'three', 'four': 'four', 'five': 'five'} +GOT:Response: 201 Created +Content-Type: application/json +Openstack-Request-Id: req-0a418858-7bc2-4d6e-84de-3deb9b5220f9 +{"three": "three", "four": "four", "five": "five"} +POST: /v1/things/ {'three': 'three', 'four': 'fourrrr', 'five': 'five'} +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-7334eede-da28-4354-aeb0-286518d77285 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for body: 'fourrrr' is too long\", \"debuginfo\": null}"} +GET: /v1/things/no_content {} +GOT:Response: 204 No Content +Openstack-Request-Id: req-fbd9053f-db46-4032-ab7a-c576ef39bf60 + +GET: /v1/things/response_content {} +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-e3f1ddfb-9834-446a-b73a-fe7e134187ae +"nothing" +GET: /v1/things/response_custom_status {} +ironic.tests.unit.api.test_method.TestExpose.test_response_custom_status +ironic.tests.unit.api.test_method.TestExpose.test_response_custom_status ... ok +ironic.tests.unit.api.test_proxy_middleware.TestProxyHeadersMiddleware.test_proxy_headers_disabled +ironic.tests.unit.api.test_proxy_middleware.TestProxyHeadersMiddleware.test_proxy_headers_disabled ... ok +ironic.tests.unit.api.test_proxy_middleware.TestProxyHeadersMiddleware.test_proxy_headers_enabled +ironic.tests.unit.api.test_proxy_middleware.TestProxyHeadersMiddleware.test_proxy_headers_enabled ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_old_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_old_api_version ... ok +ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_defaults +ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_defaults ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_136_ports_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_136_ports_get_admin ... ok +ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_produces_a_warning +ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_produces_a_warning ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_llc_old_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_llc_old_api_version ... ok +ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_random_no_zeros +ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_random_no_zeros ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-156a88f3-d027-4af0-9ea0-8f4fd9d5e18c +Openstack-Request-Id: req-2a37d192-84ad-4330-ba5f-d345f87ffb4d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:37.989922+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-156a88f3-d027-4af0-9ea0-8f4fd9d5e18c +Openstack-Request-Id: req-2a37d192-84ad-4330-ba5f-d345f87ffb4d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:37.989922+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +API ACL Testing Path get /v1/ports/detail +GET: /v1/ports/detail {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3506880b-f394-41c3-8cba-cfea4ffaad71 +Openstack-Request-Id: req-b3df2117-929a-4761-bc8b-829fb3b5e980 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3506880b-f394-41c3-8cba-cfea4ffaad71 +Openstack-Request-Id: req-b3df2117-929a-4761-bc8b-829fb3b5e980 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/detail +GET: /v1/ports/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ff9e7a48-bb01-4e2b-91cf-9bc8aeb0c85c +Openstack-Request-Id: req-fd6c8b7d-84ef-44fb-9a15-5df5add3b6ee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:38.679969+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ff9e7a48-bb01-4e2b-91cf-9bc8aeb0c85c +Openstack-Request-Id: req-fd6c8b7d-84ef-44fb-9a15-5df5add3b6ee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 503 Service Unavailable +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:38.679969+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-00904ad4-ea8d-44fe-970c-2f674abe451b +Openstack-Request-Id: req-8a01e787-a65b-4aa9-a5f7-cde0889ee85f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:38.990183+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-00904ad4-ea8d-44fe-970c-2f674abe451b +Openstack-Request-Id: req-8a01e787-a65b-4aa9-a5f7-cde0889ee85f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:38.990183+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-947afd8d-38c8-450b-b698-e2056fb314eb +Openstack-Request-Id: req-9bdb9616-e0d4-4766-a4ce-5dbfc924b6b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-947afd8d-38c8-450b-b698-e2056fb314eb +Openstack-Request-Id: req-9bdb9616-e0d4-4766-a4ce-5dbfc924b6b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_147_ports_port_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_147_ports_port_id_get_observer ... ok +ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_zeros +ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_zeros ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_network_type_in_llc +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_network_type_in_llc ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_137_ports_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_137_ports_get_member ... ok +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. +ironic.tests.unit.cmd.test_dbsync.DbSyncTestCase.test_upgrade_and_version +ironic.tests.unit.cmd.test_dbsync.DbSyncTestCase.test_upgrade_and_version ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions ... ok +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'internal_info': {'a': 'b'}} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c33b0a27-ed79-44f4-a534-46e31e186998 +Openstack-Request-Id: req-b575c7a4-1724-45d0-8d34-c86a4dd1e00f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +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}"} +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-c33b0a27-ed79-44f4-a534-46e31e186998 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-841a6e15-7ac4-41f3-a463-b70082442cc9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GOT:Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:38.777577+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-6ab73d00-00e9-4990-83f0-0e9689bef04b +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-22ad1157-ee55-4a26-88fb-f4aa1d04b793 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:38.968872+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-6ab73d00-00e9-4990-83f0-0e9689bef04b +Openstack-Request-Id: req-7408f27a-0831-4c18-8eeb-a278c7d07cef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Smart NIC port must have port_id and hostname in local_link_connection\", \"debuginfo\": null}"} +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-4b1842af-38dd-43af-acfa-46c7a28ce4e7 +Openstack-Request-Id: req-cad45820-b3b5-4be4-b8bb-6cadcc07f3e4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_082_nodes_vendor_passthru_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_082_nodes_vendor_passthru_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_077_nodes_vendor_passthru_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_077_nodes_vendor_passthru_put_member ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_invalid_api_version ... ok -ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_locked -ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_locked ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_083_nodes_vendor_passthru_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_083_nodes_vendor_passthru_delete_reader ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_mode_field_lower_api_version -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_mode_field_lower_api_version ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_078_nodes_vendor_passthru_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_078_nodes_vendor_passthru_put_observer ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_084_nodes_traits_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_084_nodes_traits_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_079_nodes_vendor_passthru_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_079_nodes_vendor_passthru_delete_admin ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json_in_name -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json_in_name ... ok -ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_worker_pool_full -ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_worker_pool_full ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_085_nodes_traits_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_085_nodes_traits_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_suffix -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_suffix ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_080_nodes_vendor_passthru_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_080_nodes_vendor_passthru_delete_member ... ok -ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_wrong_state -ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_wrong_state ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_086_nodes_traits_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_086_nodes_traits_get_reader ... ok -GOT:{'portgroups': [{'uuid': 'f78aa3ea-d1a9-4dc6-92ee-8db33a5c3044', 'extra': {}, 'links': [{'href': 'http://localhost/v1/portgroups/f78aa3ea-d1a9-4dc6-92ee-8db33a5c3044', 'rel': 'self'}, {'href': 'http://localhost/portgroups/f78aa3ea-d1a9-4dc6-92ee-8db33a5c3044', 'rel': 'bookmark'}]}, {'uuid': '5c39ead7-26ec-40d0-ba24-751c2b3038de', 'extra': {}, 'links': [{'href': 'http://localhost/v1/portgroups/5c39ead7-26ec-40d0-ba24-751c2b3038de', 'rel': 'self'}, {'href': 'http://localhost/portgroups/5c39ead7-26ec-40d0-ba24-751c2b3038de', 'rel': 'bookmark'}]}, {'uuid': '9ff11d07-0fef-4d09-894b-9e692cb78340', 'extra': {}, 'links': [{'href': 'http://localhost/v1/portgroups/9ff11d07-0fef-4d09-894b-9e692cb78340', 'rel': 'self'}, {'href': 'http://localhost/portgroups/9ff11d07-0fef-4d09-894b-9e692cb78340', 'rel': 'bookmark'}]}]} -GET: /v1/portgroups?fields=address&limit=2 {} -GOT:{'portgroups': [{'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/portgroups/e9cc9bbe-3e9f-4e1f-873a-a545f3770bbf', 'rel': 'self'}, {'href': 'http://localhost/portgroups/e9cc9bbe-3e9f-4e1f-873a-a545f3770bbf', 'rel': 'bookmark'}]}, {'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/portgroups/98ce84e9-3d7c-43b2-9abc-5437e02ad113', 'rel': 'self'}, {'href': 'http://localhost/portgroups/98ce84e9-3d7c-43b2-9abc-5437e02ad113', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=address&limit=2&marker=98ce84e9-3d7c-43b2-9abc-5437e02ad113'} -GET: /v1/portgroups/?fields=address,properties {} +{"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}"} +POST: /v1/ports {'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': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-beaf640b-68f7-487c-a846-244590c3eebd +Openstack-Request-Id: req-9ec13004-a5d9-480a-8a31-1c35e2d675a8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.25 +X-Openstack-Ironic-Api-Version: 1.52 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4?fields=uuid,spongebob {} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-cb4486de-ef7a-4a59-ba9f-e1375b6e8ee6 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:34:46.570896+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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?fields=address,extra {} -GOT:{'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'}]} -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4?fields=address,mode {} +POST: /v1/ports {'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': 'Ethernet1/15'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-48cba79b-fbca-41b1-aad4-44f76a76b4b9 +Openstack-Request-Id: req-3cce4b9a-6b54-4ae7-b983-afbd268519ce X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.25 +X-Openstack-Ironic-Api-Version: 1.14 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4.json {} -GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:34:48.024703+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {} -GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:34:48.442130+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'pg.json', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {} -GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T13:34:48.795081+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'pg.1', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e {} -GOT:{'uuid': 'd7bf2c46-15f6-47b6-a819-f8d503dd7a8e', 'created_at': '2024-01-06T13:34:49.274690+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e', 'rel': 'self'}, {'href': 'http://localhost/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e/ports', 'rel': 'bookmark'}]} -GET: /v1/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e {} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_links -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_links ... ok -ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port -ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_081_nodes_vendor_passthru_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_081_nodes_vendor_passthru_delete_observer ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_many -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_many ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_087_nodes_traits_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_087_nodes_traits_put_admin ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_one -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_one ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_082_nodes_traits_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_082_nodes_traits_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_088_nodes_traits_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_088_nodes_traits_put_member ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address_invalid_address_format -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address_invalid_address_format ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_083_nodes_traits_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_083_nodes_traits_get_member ... ok -ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_mac_exists -ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_mac_exists ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address_non_existent_address -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address_non_existent_address ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_089_nodes_traits_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_089_nodes_traits_put_reader ... ok -ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_node_locked -ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_node_locked ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_get_all_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_get_all_invalid_api_version ... ok -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} -GOT:Response: 404 Not Found +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'network_type': 'unmanaged'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-89bdd390-5cec-4951-ac03-c4b469a21d62 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-3f594e83-58d4-4e1e-8ad2-78ee6cb51f7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:39.940223+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_network_type_in_llc_old_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_network_type_in_llc_old_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_148_ports_port_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_148_ports_port_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_138_ports_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_138_ports_get_observer ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2 +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2 ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_done +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_done ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_notdone +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_notdone ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_139_ports_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_139_ports_post_admin ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_onedone +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_onedone ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_149_ports_port_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_149_ports_port_id_patch_member ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network_old_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network_old_api_version ... ok +Error while running foo: bar. +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_exception +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_exception ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_none +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_none ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_140_ports_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_140_ports_post_member ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network_upgrade +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network_upgrade ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_two_calls_done +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_two_calls_done ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_150_ports_port_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_150_ports_port_id_patch_observer ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_batches +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_batches ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_pxe_enabled_old_api_version +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_pxe_enabled_old_api_version ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_exception +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_exception ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_invalid_option1 +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_invalid_option1 ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_151_ports_port_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_151_ports_port_id_delete_admin ... ok GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1ad2e436-7218-48ab-a8de-293f1eb5f7d2 +Openstack-Request-Id: req-bd22cbca-73c6-47b5-a572-52afd6d650c6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e856db92-200c-4b0a-935c-818d8d4958be +Openstack-Request-Id: req-4dcc6156-29c6-4713-a2a6-1de29ab3a92b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c6845962-27be-4073-9500-70144a97e096 +Openstack-Request-Id: req-6007d79d-bf0b-437c-b763-a3a7c661396b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ca94db36-da60-4189-be31-16e8eed97ce7 +Openstack-Request-Id: req-1a84fb85-499e-4809-a9f8-97687389fd27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-37ee3e10-0cc2-4ef4-a529-759c19b442e2 +Openstack-Request-Id: req-ce2ed3e1-69e2-4d86-a49e-f435fe3edfbc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7a66b26b-18a9-4272-af4f-bcedc792b14b +Openstack-Request-Id: req-63e50893-701e-42b5-9696-22ae27361140 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d471f23c-e798-475b-9d95-c1abaf11da30 +Openstack-Request-Id: req-46f747de-ec44-4a65-96c6-fe156e43481f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-44a59bbf-8fa2-4f55-9ddf-5d562d92bff0 +Openstack-Request-Id: req-e14dc7b8-8499-4cea-a721-d9629dbcafe8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-361b37e7-7540-4d3e-af87-21f119e09996 +Openstack-Request-Id: req-dc6d658c-8992-444d-ba7f-dc5a009c784e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-70b1d2ff-afa3-4ff0-aa24-e08ae99a2a01 +Openstack-Request-Id: req-9902413e-854d-4a33-b531-b3a3099c35f7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GOT:Response: 404 Not Found +API ACL Testing Path get /v1/ports +GET: /v1/ports {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-cb33b1bd-f88b-4cf2-b808-c5a17c858b6d +Openstack-Request-Id: req-2fa2d688-28f1-4b53-b003-47aa3a0ec290 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports +GET: /v1/ports {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-47c9cc3f-4062-44be-afb8-35aef2db7fc5 +Openstack-Request-Id: req-61978bd0-d9ec-4489-9768-588070ef2c06 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports +GET: /v1/ports {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8204eb28-7386-436c-9361-3707b83a3eb6 +Openstack-Request-Id: req-20b928fd-8d86-4cea-8bfa-f16eb2cd8113 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_084_nodes_traits_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_084_nodes_traits_get_observer ... ok -ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_physnet_validation_failure_conflict -ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_physnet_validation_failure_conflict ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_090_nodes_traits_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_090_nodes_traits_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_085_nodes_traits_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_085_nodes_traits_put_admin ... ok -ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_physnet_validation_failure_inconsistent -ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_physnet_validation_failure_inconsistent ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource ... ok -ironic.tests.unit.conductor.test_manager.DestroyPortgroupTestCase.test_destroy_portgroup -ironic.tests.unit.conductor.test_manager.DestroyPortgroupTestCase.test_destroy_portgroup ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_086_nodes_traits_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_086_nodes_traits_put_member ... ok -GOT:{'uuid': 'd7bf2c46-15f6-47b6-a819-f8d503dd7a8e', 'created_at': '2024-01-06T13:34:49.274690+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e', 'rel': 'self'}, {'href': 'http://localhost/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e/ports', 'rel': 'bookmark'}]} -GET: /portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e {} -GOT:{'uuid': 'd7bf2c46-15f6-47b6-a819-f8d503dd7a8e', 'created_at': '2024-01-06T13:34:49.274690+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e', 'rel': 'self'}, {'href': 'http://localhost/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/d7bf2c46-15f6-47b6-a819-f8d503dd7a8e/ports', 'rel': 'bookmark'}]} -GET: /v1/portgroups {} -GOT:{'portgroups': [{'uuid': 'fc0ecc09-f735-433f-9f9b-c36c9d7a685f', 'address': '52:54:00:cf:2d:30', 'name': 'portgroup0', 'links': [{'href': 'http://localhost/v1/portgroups/fc0ecc09-f735-433f-9f9b-c36c9d7a685f', 'rel': 'self'}, {'href': 'http://localhost/portgroups/fc0ecc09-f735-433f-9f9b-c36c9d7a685f', 'rel': 'bookmark'}]}, {'uuid': 'f85df587-4ea4-474b-af3b-29c7b72189b5', 'address': '52:54:00:cf:2d:31', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/f85df587-4ea4-474b-af3b-29c7b72189b5', 'rel': 'self'}, {'href': 'http://localhost/portgroups/f85df587-4ea4-474b-af3b-29c7b72189b5', 'rel': 'bookmark'}]}, {'uuid': '13064c7e-c7ad-402e-8605-a4edf2ab37df', 'address': '52:54:00:cf:2d:32', 'name': 'portgroup2', 'links': [{'href': 'http://localhost/v1/portgroups/13064c7e-c7ad-402e-8605-a4edf2ab37df', 'rel': 'self'}, {'href': 'http://localhost/portgroups/13064c7e-c7ad-402e-8605-a4edf2ab37df', 'rel': 'bookmark'}]}, {'uuid': '5a850d27-c058-426d-bda9-6e3c41de6c49', 'address': '52:54:00:cf:2d:33', 'name': 'portgroup3', 'links': [{'href': 'http://localhost/v1/portgroups/5a850d27-c058-426d-bda9-6e3c41de6c49', 'rel': 'self'}, {'href': 'http://localhost/portgroups/5a850d27-c058-426d-bda9-6e3c41de6c49', 'rel': 'bookmark'}]}, {'uuid': 'c0085dc6-93c9-4c6e-99e6-47c183d00901', 'address': '52:54:00:cf:2d:34', 'name': 'portgroup4', 'links': [{'href': 'http://localhost/v1/portgroups/c0085dc6-93c9-4c6e-99e6-47c183d00901', 'rel': 'self'}, {'href': 'http://localhost/portgroups/c0085dc6-93c9-4c6e-99e6-47c183d00901', 'rel': 'bookmark'}]}]} -GET: /v1/portgroups {} -GOT:{'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?address=aa:bb:cc:dd:ee:f1 {} -GOT:{'portgroups': [{'uuid': 'f9bb2e8e-3f36-4f7a-bcda-4b7cca4ff077', 'address': 'aa:bb:cc:dd:ee:f1', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/f9bb2e8e-3f36-4f7a-bcda-4b7cca4ff077', 'rel': 'self'}, {'href': 'http://localhost/portgroups/f9bb2e8e-3f36-4f7a-bcda-4b7cca4ff077', 'rel': 'bookmark'}]}]} -GET: /v1/portgroups?address=invalid-mac-format {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-abc66b54-fb93-4eac-84f6-c3eee7e5d47e +Openstack-Request-Id: req-67c44429-b58d-4a9d-adab-17335e40b26a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-mac-format\", \"debuginfo\": null}"} -GET: /v1/portgroups?address=aa:bb:cc:dd:ee:ff {} -GOT:{'portgroups': []} -GET: /v1/portgroups {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-03eb09ef-c056-42bb-b5fc-ff3758c0268b -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -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}"} -GET: /v1/portgroups/7e736f12-bea9-43b5-acc9-3eb578248c0a/ports {} -GOT:{'ports': [{'uuid': '4dde8b29-62b9-44d1-9269-b7443fceb225', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/4dde8b29-62b9-44d1-9269-b7443fceb225', 'rel': 'self'}, {'href': 'http://localhost/ports/4dde8b29-62b9-44d1-9269-b7443fceb225', 'rel': 'bookmark'}]}, {'uuid': 'abc3042d-4a83-4b99-8ac6-e8d457be7e81', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/abc3042d-4a83-4b99-8ac6-e8d457be7e81', 'rel': 'self'}, {'href': 'http://localhost/ports/abc3042d-4a83-4b99-8ac6-e8d457be7e81', 'rel': 'bookmark'}]}]} -GET: /v1/portgroups/7e736f12-bea9-43b5-acc9-3eb578248c0a/ports/detail {} -GOT:{'ports': [{'uuid': '4dde8b29-62b9-44d1-9269-b7443fceb225', 'created_at': '2024-01-06T13:34:51.905783+00:00', 'updated_at': None, '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': None, 'pxe_enabled': True, 'links': [{'href': 'http://localhost/v1/ports/4dde8b29-62b9-44d1-9269-b7443fceb225', 'rel': 'self'}, {'href': 'http://localhost/ports/4dde8b29-62b9-44d1-9269-b7443fceb225', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '7e736f12-bea9-43b5-acc9-3eb578248c0a'}, {'uuid': 'abc3042d-4a83-4b99-8ac6-e8d457be7e81', 'created_at': '2024-01-06T13:34:51.919010+00:00', 'updated_at': None, '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': None, 'pxe_enabled': True, 'links': [{'href': 'http://localhost/v1/ports/abc3042d-4a83-4b99-8ac6-e8d457be7e81', 'rel': 'self'}, {'href': 'http://localhost/ports/abc3042d-4a83-4b99-8ac6-e8d457be7e81', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '7e736f12-bea9-43b5-acc9-3eb578248c0a'}]} -GET: /v1/portgroups/7e736f12-bea9-43b5-acc9-3eb578248c0a/ports?limit=1 {} -GOT:{'ports': [{'uuid': '4dde8b29-62b9-44d1-9269-b7443fceb225', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/4dde8b29-62b9-44d1-9269-b7443fceb225', 'rel': 'self'}, {'href': 'http://localhost/ports/4dde8b29-62b9-44d1-9269-b7443fceb225', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=1&marker=4dde8b29-62b9-44d1-9269-b7443fceb225'} -GET: /v1/portgroups/7e736f12-bea9-43b5-acc9-3eb578248c0a/ports/f782be12-dcad-462b-8046-2faa2372b24d {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/portgroups/7e736f12-bea9-43b5-acc9-3eb578248c0a/ports/6eb4aab6-507d-449a-aabb-dd83282d87f8 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-07a53502-a68c-4898-a65b-3acbe4a85f5d +Openstack-Request-Id: req-72e4e76b-6422-4d13-b4b4-f12d3416ace0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_no_portgroups_allowed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_no_portgroups_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_not_allowed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_not_allowed ... ok -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_141_ports_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_141_ports_post_observer ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_node_uuid_to_node_id_mapping +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_node_uuid_to_node_id_mapping ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_invalid_option2 +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_invalid_option2 ... ok +"max-count" must be a positive value. +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_max_count_neg +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_max_count_neg ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_notdone +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_notdone ... ok +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_portgroups_subresource_post +ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_portgroups_subresource_post ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_142_ports_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_142_ports_detail_get_admin ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_with_options +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_with_options ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_152_ports_port_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_152_ports_port_id_delete_member ... ok +INFO [alembic.runtime.migration] Context impl SQLiteImpl. +INFO [alembic.runtime.migration] Will assume non-transactional DDL. +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links ... ok +INFO [alembic.runtime.migration] Context impl SQLiteImpl. +INFO [alembic.runtime.migration] Will assume non-transactional DDL. +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions_bad +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions_bad ... ok +INFO [alembic.runtime.migration] Context impl SQLiteImpl. +INFO [alembic.runtime.migration] Will assume non-transactional DDL. +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions_ignore_models +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions_ignore_models ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_143_ports_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_143_ports_detail_get_member ... ok +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_versions_bad +ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_versions_bad ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_153_ports_port_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_153_ports_port_id_delete_observer ... ok +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'network_type': 'unmanaged'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-4b1842af-38dd-43af-acfa-46c7a28ce4e7 +Openstack-Request-Id: req-345f4cf2-b612-44a2-aadb-078f922f06cf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GOT:Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.63 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/ports {'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': 'physnet1', 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-b53d23ee-b18b-4ca7-a212-4010259ebd06 +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-2db6cd4f-24a7-44c1-ab5a-a2ffe6f07d9c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:40.355903+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +POST: /v1/ports {'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': 'physnet1', 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-b53d23ee-b18b-4ca7-a212-4010259ebd06 +Openstack-Request-Id: req-cef95ca9-8840-4101-a1ff-822b19569371 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.33 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/ports {'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': 'physnet1', 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-3d880440-e512-4f6b-aaed-0a2cc7ac66a2 +Openstack-Request-Id: req-b11b63cf-2ac4-4e9d-92b9-47bc90027e2e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"traits": ["trait1"]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/ports {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'pxe_enabled': False, 'physical_network': None, 'is_smartnic': False, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-3d880440-e512-4f6b-aaed-0a2cc7ac66a2 +Openstack-Request-Id: req-7a3416ba-e71b-4c18-9f40-e21e722e2e86 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"traits": ["trait1"]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.14 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-1a33dd5f-40d2-472d-9885-3e2706782abe +Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +Openstack-Request-Id: req-5395fd18-6ced-4a7e-90fd-4dac4d6ac4b5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"traits": ["trait1"]} -ACL Test GOT Response: 200 OK +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:41.111039+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} +POST: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {'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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1a33dd5f-40d2-472d-9885-3e2706782abe +Openstack-Request-Id: req-5209d37c-a131-40fc-a3a6-6b2f3dffe567 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"traits": ["trait1"]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +X-Openstack-Ironic-Api-Version: 1.24 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +GET: /v1/portgroups/?limit=3 {} +GOT:{'portgroups': [{'uuid': 'e9c24aec-940e-4030-ad96-b9455a13d040', 'address': '52:54:00:cf:2d:30', 'name': 'portgroup0', 'links': [{'href': 'http://localhost/v1/portgroups/e9c24aec-940e-4030-ad96-b9455a13d040', 'rel': 'self'}, {'href': 'http://localhost/portgroups/e9c24aec-940e-4030-ad96-b9455a13d040', 'rel': 'bookmark'}]}, {'uuid': '633615a9-3557-4067-a354-9394a702d10a', 'address': '52:54:00:cf:2d:31', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/633615a9-3557-4067-a354-9394a702d10a', 'rel': 'self'}, {'href': 'http://localhost/portgroups/633615a9-3557-4067-a354-9394a702d10a', 'rel': 'bookmark'}]}, {'uuid': '5e3cf12f-c339-4e61-89f4-673819263684', 'address': '52:54:00:cf:2d:32', 'name': 'portgroup2', 'links': [{'href': 'http://localhost/v1/portgroups/5e3cf12f-c339-4e61-89f4-673819263684', 'rel': 'self'}, {'href': 'http://localhost/portgroups/5e3cf12f-c339-4e61-89f4-673819263684', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=uuid,address,name&limit=3&marker=5e3cf12f-c339-4e61-89f4-673819263684'} +GET: /v1/portgroups?fields=address,uuid {} +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links_custom_fields +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links_custom_fields ... ok +ironic.tests.unit.common.test_args.ValidateDictTest.test_dict_valid +ironic.tests.unit.common.test_args.ValidateDictTest.test_dict_valid ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links_default_limit +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links_default_limit ... ok +ironic.tests.unit.common.test_args.ValidateDictTest.test_dict_valid_colon_key_name +ironic.tests.unit.common.test_args.ValidateDictTest.test_dict_valid_colon_key_name ... ok +ironic.tests.unit.common.test_args.ValidatePatchSchemaTest.test_patch +ironic.tests.unit.common.test_args.ValidatePatchSchemaTest.test_patch ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_144_ports_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_144_ports_detail_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail ... ok +ironic.tests.unit.common.test_args.ValidatePatchSchemaTest.test_patch_validation_failed +ironic.tests.unit.common.test_args.ValidatePatchSchemaTest.test_patch_validation_failed ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f0b07046-a330-4a18-8986-6988dfcf147b +Openstack-Request-Id: req-2eb15082-6bc6-4a9a-a49d-592bdb703219 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"traits": ["trait1"]} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:39.643631+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f0b07046-a330-4a18-8986-6988dfcf147b +Openstack-Request-Id: req-2eb15082-6bc6-4a9a-a49d-592bdb703219 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"traits": ["trait1"]} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:39.643631+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0257364a-c329-4732-ab27-c99cf9cc599e +Openstack-Request-Id: req-8099a74a-ef86-4ec6-b39b-de306798f3c6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0257364a-c329-4732-ab27-c99cf9cc599e +Openstack-Request-Id: req-8099a74a-ef86-4ec6-b39b-de306798f3c6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -GOT:Response: 503 Service Unavailable +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cb1dad27-fe18-4544-9eaf-3e1515e95805 +Openstack-Request-Id: req-197e49f4-348d-4887-94f3-724314954fe3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cb1dad27-fe18-4544-9eaf-3e1515e95805 +Openstack-Request-Id: req-197e49f4-348d-4887-94f3-724314954fe3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d995a930-8e87-4a0d-a355-c6052a810f3c +Openstack-Request-Id: req-82ff070e-99b0-4345-ac91-f96d5dabef0e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d995a930-8e87-4a0d-a355-c6052a810f3c +Openstack-Request-Id: req-82ff070e-99b0-4345-ac91-f96d5dabef0e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2227075f-ab4b-4ea5-9d7c-22b686339e36 +Openstack-Request-Id: req-cb75b63d-c972-4e10-b2d7-821a253ccbb3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2227075f-ab4b-4ea5-9d7c-22b686339e36 +Openstack-Request-Id: req-cb75b63d-c972-4e10-b2d7-821a253ccbb3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 503 Service Unavailable +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-70b54f32-f2f9-4d3c-b7ba-3f547568af1a +Openstack-Request-Id: req-2915d6a0-c89a-49d3-bf36-2374313357bd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_091_nodes_traits_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_091_nodes_traits_delete_member ... ok -ironic.tests.unit.conductor.test_manager.DestroyPortgroupTestCase.test_destroy_portgroup_node_locked -ironic.tests.unit.conductor.test_manager.DestroyPortgroupTestCase.test_destroy_portgroup_node_locked ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_092_nodes_traits_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_092_nodes_traits_delete_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_087_nodes_traits_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_087_nodes_traits_put_observer ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_boot_validate_failure -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_boot_validate_failure ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_093_nodes_traits_trait_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_093_nodes_traits_trait_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_088_nodes_traits_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_088_nodes_traits_delete_admin ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_portgroup_not_found -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_portgroup_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_094_nodes_traits_trait_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_094_nodes_traits_trait_put_member ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_ramdisk_deploy -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_ramdisk_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_089_nodes_traits_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_089_nodes_traits_delete_member ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_allowed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_invalid -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_invalid ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_095_nodes_traits_trait_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_095_nodes_traits_trait_put_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_090_nodes_traits_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_090_nodes_traits_delete_observer ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_take_over_failure -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_take_over_failure ... ok -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_not_allowed -ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_not_allowed ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_bad_invalid_agent_status -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_bad_invalid_agent_status ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_096_nodes_traits_trait_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_096_nodes_traits_trait_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_091_nodes_traits_trait_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_091_nodes_traits_trait_put_admin ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_heartbeat_rejects_different_callback_url -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_heartbeat_rejects_different_callback_url ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_with_takeover -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_with_takeover ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_node_not_found -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_node_not_found ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_092_nodes_traits_trait_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_092_nodes_traits_trait_put_member ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_adopt_node -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_adopt_node ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_status_and_status -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_status_and_status ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_token -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_token ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_093_nodes_traits_trait_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_093_nodes_traits_trait_put_observer ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_adopt_node_retry -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_adopt_node_retry ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_verify_ca -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_verify_ca ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_097_nodes_traits_trait_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_097_nodes_traits_trait_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_094_nodes_traits_trait_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_094_nodes_traits_trait_delete_admin ... ok -GET: /v1/portgroups/5cfc7591-6f40-497c-bc46-df85685c6919/ports {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -GET: /v1/portgroups/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/ports {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7f85b9a6-0064-445e-baec-4f587c0058ee +Openstack-Request-Id: req-2915d6a0-c89a-49d3-bf36-2374313357bd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup eeeeeeee-cccc-aaaa-bbbb-cccccccccccc could not be found.\", \"debuginfo\": null}"} -GET: /v1/portgroups?sort_key=uuid {} -GOT:{'portgroups': [{'uuid': '51c6f810-1f7b-4b3f-bdee-6351aacc9c28', 'address': '52:54:00:cf:2d:30', 'name': 'portgroup0', 'links': [{'href': 'http://localhost/v1/portgroups/51c6f810-1f7b-4b3f-bdee-6351aacc9c28', 'rel': 'self'}, {'href': 'http://localhost/portgroups/51c6f810-1f7b-4b3f-bdee-6351aacc9c28', 'rel': 'bookmark'}]}, {'uuid': '69ca3485-a16c-48eb-8bdc-d0cb3d7bf3ba', 'address': '52:54:00:cf:2d:31', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/69ca3485-a16c-48eb-8bdc-d0cb3d7bf3ba', 'rel': 'self'}, {'href': 'http://localhost/portgroups/69ca3485-a16c-48eb-8bdc-d0cb3d7bf3ba', 'rel': 'bookmark'}]}, {'uuid': 'bd4554aa-4be9-4beb-ab9e-a3274dc30941', 'address': '52:54:00:cf:2d:32', 'name': 'portgroup2', 'links': [{'href': 'http://localhost/v1/portgroups/bd4554aa-4be9-4beb-ab9e-a3274dc30941', 'rel': 'self'}, {'href': 'http://localhost/portgroups/bd4554aa-4be9-4beb-ab9e-a3274dc30941', 'rel': 'bookmark'}]}]} -GET: /v1/portgroups?sort_key=mode {} -GOT:{'portgroups': [{'uuid': '4db4d97d-be69-4152-8181-a87f1318663d', 'address': '52:54:00:cf:2d:31', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/4db4d97d-be69-4152-8181-a87f1318663d', 'rel': 'self'}, {'href': 'http://localhost/portgroups/4db4d97d-be69-4152-8181-a87f1318663d', 'rel': 'bookmark'}]}, {'uuid': 'f0455c2f-1f35-4f62-9fd3-64d36e83b21c', 'address': '52:54:00:cf:2d:32', 'name': 'portgroup2', 'links': [{'href': 'http://localhost/v1/portgroups/f0455c2f-1f35-4f62-9fd3-64d36e83b21c', 'rel': 'self'}, {'href': 'http://localhost/portgroups/f0455c2f-1f35-4f62-9fd3-64d36e83b21c', 'rel': 'bookmark'}]}, {'uuid': '0c51703f-3d80-479f-9c51-e58485b4c3a0', 'address': '52:54:00:cf:2d:33', 'name': 'portgroup3', 'links': [{'href': 'http://localhost/v1/portgroups/0c51703f-3d80-479f-9c51-e58485b4c3a0', 'rel': 'self'}, {'href': 'http://localhost/portgroups/0c51703f-3d80-479f-9c51-e58485b4c3a0', 'rel': 'bookmark'}]}]} -GET: /v1/portgroups?sort_key=foo {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b8fd0531-e37e-43ab-8227-99872caeee58 +Openstack-Request-Id: req-32d037be-ec26-469b-a48e-8ea5a7524937 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} -GET: /v1/portgroups?sort_key=extra {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fdc7d7db-7a2a-4acb-bb04-114185bb692f +Openstack-Request-Id: req-32d037be-ec26-469b-a48e-8ea5a7524937 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_154_nodes_ports_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_154_nodes_ports_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_against_single +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_against_single ... ok +ironic.tests.unit.common.test_cinder.TestCinderSession.test__get_cinder_session +ironic.tests.unit.common.test_cinder.TestCinderSession.test__get_cinder_session ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_145_ports_port_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_145_ports_port_id_get_admin ... ok +ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task +ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_by_node_name_ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_by_node_name_ok ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_invalid_api_version ... ok +ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task_default_is_flat +ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task_default_is_flat ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_155_nodes_ports_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_155_nodes_ports_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_146_ports_port_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_146_ports_port_id_get_member ... ok +ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task_unknown_network_interface +ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task_unknown_network_interface ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_query +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_query ... ok +ironic.tests.unit.common.test_fsm.FSMTest.test__validate_target_state +ironic.tests.unit.common.test_fsm.FSMTest.test__validate_target_state ... ok +ironic.tests.unit.common.test_fsm.FSMTest.test_initialize +ironic.tests.unit.common.test_fsm.FSMTest.test_initialize ... ok +ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable +ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_query_false +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_query_false ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_147_ports_port_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_147_ports_port_id_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_156_nodes_ports_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_156_nodes_ports_get_observer ... ok +ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable_invalid_state +ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable_invalid_state ... ok +ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable_not +ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable_not ... ok +ironic.tests.unit.common.test_fsm.FSMTest.test_process_event +ironic.tests.unit.common.test_fsm.FSMTest.test_process_event ... ok +ironic.tests.unit.common.test_fsm.FSMTest.test_target_state_stable +ironic.tests.unit.common.test_fsm.FSMTest.test_target_state_stable ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_148_ports_port_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_148_ports_port_id_patch_admin ... ok +GOT:{'portgroups': [{'uuid': '00bb8d20-606c-4f85-826e-edd060924fc4', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/portgroups/00bb8d20-606c-4f85-826e-edd060924fc4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/00bb8d20-606c-4f85-826e-edd060924fc4', 'rel': 'bookmark'}]}, {'uuid': '73e4e8ec-6cdc-43be-b08c-52664b638ab3', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/portgroups/73e4e8ec-6cdc-43be-b08c-52664b638ab3', 'rel': 'self'}, {'href': 'http://localhost/portgroups/73e4e8ec-6cdc-43be-b08c-52664b638ab3', 'rel': 'bookmark'}]}, {'uuid': '6aa91327-edf3-464f-b748-db14404246cb', 'address': '52:54:00:cf:2d:32', 'links': [{'href': 'http://localhost/v1/portgroups/6aa91327-edf3-464f-b748-db14404246cb', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6aa91327-edf3-464f-b748-db14404246cb', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=address,uuid&limit=3&marker=6aa91327-edf3-464f-b748-db14404246cb'} +GET: /v1/portgroups {} +GOT:{'portgroups': [{'uuid': '1dff7910-ff36-49d1-8235-c1d016042882', 'address': '52:54:00:cf:2d:30', 'name': 'portgroup0', 'links': [{'href': 'http://localhost/v1/portgroups/1dff7910-ff36-49d1-8235-c1d016042882', 'rel': 'self'}, {'href': 'http://localhost/portgroups/1dff7910-ff36-49d1-8235-c1d016042882', 'rel': 'bookmark'}]}, {'uuid': 'ccefeb1c-59f1-4983-a8d1-86c12eb9a5f4', 'address': '52:54:00:cf:2d:31', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/ccefeb1c-59f1-4983-a8d1-86c12eb9a5f4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/ccefeb1c-59f1-4983-a8d1-86c12eb9a5f4', 'rel': 'bookmark'}]}, {'uuid': 'f1223d35-2689-4e44-8d7b-a0f4cad2f753', 'address': '52:54:00:cf:2d:32', 'name': 'portgroup2', 'links': [{'href': 'http://localhost/v1/portgroups/f1223d35-2689-4e44-8d7b-a0f4cad2f753', 'rel': 'self'}, {'href': 'http://localhost/portgroups/f1223d35-2689-4e44-8d7b-a0f4cad2f753', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=uuid,address,name&limit=3&marker=f1223d35-2689-4e44-8d7b-a0f4cad2f753'} +GET: /v1/portgroups/detail {} +GOT:{'portgroups': [{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:41.918992+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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/detail {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-58c10588-3f9d-46f3-a10e-b4d06a83b374 +Openstack-Request-Id: req-4304c3e0-855c-409b-a61c-0d73cc944f06 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +GET: /v1/portgroups/detail?node=test-node {} +GOT:{'portgroups': [{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:42.202698+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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/detail {} +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/portgroups?detail=True {} +GOT:{'portgroups': [{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:42.446846+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {} +GOT:{'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 {} +GOT:{'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?sort_key=mode {} +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_sort_key_allowed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_sort_key_allowed ... ok +ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__config_auth +ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__config_auth ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_157_nodes_ports_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_157_nodes_ports_detail_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_sort_key_not_allowed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_sort_key_not_allowed ... ok +ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__no_auth +ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__no_auth ... ok +ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__token_auth +ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__token_auth ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_149_ports_port_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_149_ports_port_id_patch_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_and_fields +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_and_fields ... ok +ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service_client_already_set +ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service_client_already_set ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_158_nodes_ports_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_158_nodes_ports_detail_get_member ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_forbidden_converts_to_imagenotauthed +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_forbidden_converts_to_imagenotauthed ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_false_and_fields +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_false_and_fields ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_httpforbidden_converts_to_imagenotauthed +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_httpforbidden_converts_to_imagenotauthed ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_httpnotfound_converts_to_imagenotfound +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_httpnotfound_converts_to_imagenotfound ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_150_ports_port_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_150_ports_port_id_patch_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_old_version +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_old_version ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_notfound_converts_to_imagenotfound +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_notfound_converts_to_imagenotfound ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_file_url +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_file_url ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_empty +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_empty ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_no_data +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_no_data ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-03fc08fd-f6b9-4e37-882f-07e17e32f346 +Openstack-Request-Id: req-a5e4ac6f-b234-4114-bd52-f06602a0ab0f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value properties is an invalid field for sorting\", \"debuginfo\": null}"} -GET: /v1/portgroups?sort_key=mode {} -GOT:Response: 406 Not Acceptable +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0e3ffda7-2a87-4900-90d1-7a0c998bf397 +Openstack-Request-Id: req-a5e4ac6f-b234-4114-bd52-f06602a0ab0f X-Openstack-Ironic-Api-Maximum-Version: 1.80 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/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_status': 'invalid_state', 'agent_status_message': 'woof', 'agent_verify_ca': 'abcdef1'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-60211cd1-5eea-48c4-9374-0329e9f6434f +Openstack-Request-Id: req-2e4ceb61-7954-46f7-bf68-8a11f082b000 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Agent status is invalid. Valid states are start,end,error.\", \"debuginfo\": null}"} -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url2'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ebc20c4d-ebcf-4201-ba34-7c4e5ecb51a0 +Openstack-Request-Id: req-2e4ceb61-7954-46f7-bf68-8a11f082b000 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Detected change in ramdisk provided \\\"callback_url\\\"\", \"debuginfo\": null}"} -POST: /v1/heartbeat/6e7490e1-e5f9-47c8-aa61-1517cd81c427 {'callback_url': 'url'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-aadf3177-6f3a-4d44-a30e-1b8965ab550d +Openstack-Request-Id: req-672b6b70-7c2d-414e-8b1f-3d1920894e9a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 6e7490e1-e5f9-47c8-aa61-1517cd81c427 could not be found.\", \"debuginfo\": null}"} -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'x'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-880ff708-564c-44b3-9d1a-06f1732fa4c9 +{"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"}]}]} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-672b6b70-7c2d-414e-8b1f-3d1920894e9a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_status': 'start', 'agent_status_message': 'woof', 'agent_verify_ca': 'abcdef1'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-dff2ee76-3770-4256-a381-e5bacf22a34c +{"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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-349715ca-2180-4ced-a208-66ced48ae4c1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'abcdef1'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-43f1e0c3-8416-4cc6-b106-eb1122dc6d3a +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:42.801100+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-349715ca-2180-4ced-a208-66ced48ae4c1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_verify_ca': 'abcdef1'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-6f2a9689-aba7-4a6a-adb5-ea1eff97475c +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:42.801100+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-8693418f-d35c-49af-8c2f-b271245472d2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_version': '1.4.1', 'agent_token': 'meow'} -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_version -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_version ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_by_name -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_by_name ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_manage_of_failed_adoption -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_manage_of_failed_adoption ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_098_nodes_traits_trait_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_098_nodes_traits_trait_delete_reader ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_with_json -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_with_json ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_095_nodes_traits_trait_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_095_nodes_traits_trait_delete_member ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_API_agent_verify_ca_error -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_API_agent_verify_ca_error ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_invalid_agent_token -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_invalid_agent_token ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_API_agent_version_error -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_API_agent_version_error ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_096_nodes_traits_trait_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_096_nodes_traits_trait_delete_observer ... ok -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-70b54f32-f2f9-4d3c-b7ba-3f547568af1a +Openstack-Request-Id: req-8693418f-d35c-49af-8c2f-b271245472d2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-74bc06c0-611f-4aae-9529-d0e1ab6124f0 +Openstack-Request-Id: req-5d34d114-5a9e-4eb1-9cac-80baa920d07a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:43.339574+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_151_ports_port_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_151_ports_port_id_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_159_nodes_ports_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_159_nodes_ports_detail_get_observer ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_with_retries +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_with_retries ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_by_node_name_ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_by_node_name_ok ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_passes_through_to_client +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_passes_through_to_client ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_raises_when_image_not_active +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_raises_when_image_not_active ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_by_node_uuid_ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_by_node_uuid_ok ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_160_portgroups_ports_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_160_portgroups_ports_get_admin ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_raises_when_no_authtoken_in_the_context +ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_raises_when_no_authtoken_in_the_context ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_152_ports_port_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_152_ports_port_id_delete_member ... ok +ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_is_glance_image +ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_is_glance_image ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_ports_by_portgroup_uuid +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_ports_by_portgroup_uuid ... ok +ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_fail +ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_fail ... ok +ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_glance +ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_glance ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_161_portgroups_ports_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_161_portgroups_ports_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_153_ports_port_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_153_ports_port_id_delete_observer ... ok +ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_glance_fail +ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_glance_fail ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_custom_fields +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_custom_fields ... ok +ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_uuid +ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_pagination_no_uuid +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_pagination_no_uuid ... ok +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_154_nodes_ports_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_154_nodes_ports_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_162_portgroups_ports_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_162_portgroups_ports_get_observer ... ok +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy_fail +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy_fail ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_properties_field_lower_api_version +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_properties_field_lower_api_version ... ok +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy_segmented +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy_segmented ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_155_nodes_ports_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_155_nodes_ports_get_member ... ok +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_hard_link +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_hard_link ... ok +GOT:{'portgroups': [{'uuid': '2d697e59-fa19-4fed-999e-e85f794b29b7', 'created_at': '2024-01-06T14:11:42.735288+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'mode_1', 'name': 'portgroup1', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/2d697e59-fa19-4fed-999e-e85f794b29b7', 'rel': 'self'}, {'href': 'http://localhost/portgroups/2d697e59-fa19-4fed-999e-e85f794b29b7', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/2d697e59-fa19-4fed-999e-e85f794b29b7/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/2d697e59-fa19-4fed-999e-e85f794b29b7/ports', 'rel': 'bookmark'}]}, {'uuid': 'ebff3ade-031e-4969-b198-fd686ba3c0ef', 'created_at': '2024-01-06T14:11:42.731601+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:32', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'mode_2', 'name': 'portgroup2', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/ebff3ade-031e-4969-b198-fd686ba3c0ef', 'rel': 'self'}, {'href': 'http://localhost/portgroups/ebff3ade-031e-4969-b198-fd686ba3c0ef', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/ebff3ade-031e-4969-b198-fd686ba3c0ef/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/ebff3ade-031e-4969-b198-fd686ba3c0ef/ports', 'rel': 'bookmark'}]}, {'uuid': '95d10a06-419e-4007-9b46-56d1abc3db6f', 'created_at': '2024-01-06T14:11:42.727614+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:33', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'mode_3', 'name': 'portgroup3', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/95d10a06-419e-4007-9b46-56d1abc3db6f', 'rel': 'self'}, {'href': 'http://localhost/portgroups/95d10a06-419e-4007-9b46-56d1abc3db6f', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/95d10a06-419e-4007-9b46-56d1abc3db6f/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/95d10a06-419e-4007-9b46-56d1abc3db6f/ports', 'rel': 'bookmark'}]}]} +GET: /v1/portgroups/detail?sort_key=mode {} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-74bc06c0-611f-4aae-9529-d0e1ab6124f0 +Openstack-Request-Id: req-12ba3450-f9fb-49b1-931e-24b2c91bd3e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None -GOT:Response: 503 Service Unavailable +X-Openstack-Ironic-Api-Version: 1.25 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +GET: /v1/portgroups?detail=True&fields=name {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-4d34610a-cb37-4fae-9fff-694026305d45 +Openstack-Request-Id: req-70ae4951-ac01-42b4-b0d5-ad02b12629dc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} +GET: /v1/portgroups?detail=False&fields=internal_info {} +GOT:{'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'}]}]} +GET: /v1/portgroups?detail=True {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-4d34610a-cb37-4fae-9fff-694026305d45 +Openstack-Request-Id: req-34ef4664-083c-413c-8cff-6393f54f6752 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None -GOT:Response: 503 Service Unavailable +X-Openstack-Ironic-Api-Version: 1.42 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid query parameter ?detail=True received.\", \"debuginfo\": null}"} +GET: /v1/portgroups {} +GOT:{'portgroups': []} +GET: /v1/portgroups?node=test-node {} +GOT:{'portgroups': [{'uuid': 'b042b004-1f6e-4f6f-8d8f-18f138f02729', 'address': '52:54:00:cf:2d:30', 'name': 'portgroup0', 'links': [{'href': 'http://localhost/v1/portgroups/b042b004-1f6e-4f6f-8d8f-18f138f02729', 'rel': 'self'}, {'href': 'http://localhost/portgroups/b042b004-1f6e-4f6f-8d8f-18f138f02729', 'rel': 'bookmark'}]}, {'uuid': '74b2415d-9532-4740-9f1e-d1899cbba105', 'address': '52:54:00:cf:2d:31', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/74b2415d-9532-4740-9f1e-d1899cbba105', 'rel': 'self'}, {'href': 'http://localhost/portgroups/74b2415d-9532-4740-9f1e-d1899cbba105', 'rel': 'bookmark'}]}, {'uuid': '3293bb53-fbac-4895-858b-bffa3fda8eb7', 'address': '52:54:00:cf:2d:32', 'name': 'portgroup2', 'links': [{'href': 'http://localhost/v1/portgroups/3293bb53-fbac-4895-858b-bffa3fda8eb7', 'rel': 'self'}, {'href': 'http://localhost/portgroups/3293bb53-fbac-4895-858b-bffa3fda8eb7', 'rel': 'bookmark'}]}]} +GET: /v1/portgroups/detail?node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:{'portgroups': [{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:43.773129+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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/ports {} +GOT:{'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/portgroups?fields=uuid,extra {} +GOT:{'portgroups': [{'uuid': 'c42cd220-a745-448c-9a86-94b85f75bc26', 'extra': {}, 'links': [{'href': 'http://localhost/v1/portgroups/c42cd220-a745-448c-9a86-94b85f75bc26', 'rel': 'self'}, {'href': 'http://localhost/portgroups/c42cd220-a745-448c-9a86-94b85f75bc26', 'rel': 'bookmark'}]}, {'uuid': '7c9383e9-4b3e-46c3-b4dc-f6c69cd725ff', 'extra': {}, 'links': [{'href': 'http://localhost/v1/portgroups/7c9383e9-4b3e-46c3-b4dc-f6c69cd725ff', 'rel': 'self'}, {'href': 'http://localhost/portgroups/7c9383e9-4b3e-46c3-b4dc-f6c69cd725ff', 'rel': 'bookmark'}]}, {'uuid': '4f71e552-0298-4471-b2d2-62f1cdc102bb', 'extra': {}, 'links': [{'href': 'http://localhost/v1/portgroups/4f71e552-0298-4471-b2d2-62f1cdc102bb', 'rel': 'self'}, {'href': 'http://localhost/portgroups/4f71e552-0298-4471-b2d2-62f1cdc102bb', 'rel': 'bookmark'}]}]} +GET: /v1/portgroups?fields=address&limit=2 {} +GOT:{'portgroups': [{'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/portgroups/22a26938-00a0-43a2-96eb-302dccb71684', 'rel': 'self'}, {'href': 'http://localhost/portgroups/22a26938-00a0-43a2-96eb-302dccb71684', 'rel': 'bookmark'}]}, {'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/portgroups/0942d626-dd70-4444-a0e6-cd78a3df0cbb', 'rel': 'self'}, {'href': 'http://localhost/portgroups/0942d626-dd70-4444-a0e6-cd78a3df0cbb', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=address&limit=2&marker=0942d626-dd70-4444-a0e6-cd78a3df0cbb'} +GET: /v1/portgroups/?fields=address,properties {} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-2055cf72-bc27-483d-926a-537e5b41a485 +Openstack-Request-Id: req-26c78616-c825-42d5-9f60-9cc8b5557f9c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +X-Openstack-Ironic-Api-Version: 1.25 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_custom_fields_invalid_fields +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_custom_fields_invalid_fields ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_163_portgroups_ports_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_163_portgroups_ports_detail_get_admin ... ok +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_hard_link_fail +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_hard_link_fail ... ok +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_show +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_show ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_custom_fields +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_custom_fields ... ok +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href ... ok +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href_path_not_found_or_not_file +ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href_path_not_found_or_not_file ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_invalid_api_version ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2055cf72-bc27-483d-926a-537e5b41a485 +Openstack-Request-Id: req-1f300e1c-722e-4288-bb84-13e596e82137 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/detail +GET: /v1/ports/detail {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b1df057e-ba9e-4d42-a56e-959d74de79c5 +Openstack-Request-Id: req-53146372-7d60-4618-a249-0e5459df4144 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/detail +GET: /v1/ports/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b1df057e-ba9e-4d42-a56e-959d74de79c5 +Openstack-Request-Id: req-0ccd350a-87ce-4fc5-810b-ec911086391a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/detail +GET: /v1/ports/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7f5750dd-bff0-4497-975e-926b302bfe3a +Openstack-Request-Id: req-2cf78d09-1656-455b-82d4-2b3c65e7d541 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7f5750dd-bff0-4497-975e-926b302bfe3a +Openstack-Request-Id: req-dda42068-1ac9-4d6d-8daf-042ba3cf0b6d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d3c1f479-72f4-449d-b3f0-ccc2ff6d54ca +Openstack-Request-Id: req-2e914dac-d079-4799-bc64-cf7f2ca5efd4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d3c1f479-72f4-449d-b3f0-ccc2ff6d54ca +Openstack-Request-Id: req-a3be69e3-3d71-4bee-85e4-9d866aeab6d3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ec798a25-6a0b-4b60-9a4b-e2c499066655 +Openstack-Request-Id: req-6173e781-67ad-4797-b6cd-10603a30d836 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ec798a25-6a0b-4b60-9a4b-e2c499066655 +Openstack-Request-Id: req-411427b3-4801-4707-a62b-b5078f4210ab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-eb714a62-ebb3-497c-8130-485f27d1c5f1 +Openstack-Request-Id: req-fe446652-f97e-4aff-ab83-956aa4d21050 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_099_nodes_vifs_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_099_nodes_vifs_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_api_agent_status_error -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_api_agent_status_error ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_100_nodes_vifs_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_100_nodes_vifs_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_097_nodes_vifs_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_097_nodes_vifs_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_api_version -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_api_version ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_invalid_agent_token_older_version -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_invalid_agent_token_older_version ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_fast_deploy_lookup -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_fast_deploy_lookup ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_101_nodes_vifs_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_101_nodes_vifs_get_reader ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_addresses -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_addresses ... ok -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cba5dd00-000f-4412-b07e-a52b059e271a +Openstack-Request-Id: req-04e25584-ae6f-4f0a-955f-1e356bc7d972 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-de4c0a53-9acf-4b1f-a1d9-a952282efd83 +Openstack-Request-Id: req-3b7da116-ce12-41c6-9d55-59604eea4c1c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1ebc238a-244d-43c8-830c-d4982c5ecb65 +Openstack-Request-Id: req-b636134f-c6ec-4bbc-a3a0-264cda869f2f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3fc53fb2-de36-415d-8539-cd3b9fc2723b +Openstack-Request-Id: req-a8303c85-7c15-4d8c-8b2a-04d59fd59729 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-097a6871-a08b-4426-a721-6551a444bd0e +Openstack-Request-Id: req-512c6655-833a-40f7-aba0-7557bd21adb7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 404 Not Found +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_156_nodes_ports_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_156_nodes_ports_get_observer ... ok +ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_adapter_from_config +ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_adapter_from_config ... ok +ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_auth +ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_auth ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_mode_field_lower_api_version +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_mode_field_lower_api_version ... ok +ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_auth_fail +ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_auth_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_157_nodes_ports_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_157_nodes_ports_detail_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json ... ok +ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_service_auth +ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_service_auth ... ok +ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_session +ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_session ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json_in_name +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json_in_name ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_164_portgroups_ports_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_164_portgroups_ports_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_158_nodes_ports_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_158_nodes_ports_detail_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_suffix +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_suffix ... ok +ironic.tests.unit.common.test_kickstart_utils.KSUtilsTestCase.test_prepare_config_drive +ironic.tests.unit.common.test_kickstart_utils.KSUtilsTestCase.test_prepare_config_drive ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_159_nodes_ports_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_159_nodes_ports_detail_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_links +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_links ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_165_portgroups_ports_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_165_portgroups_ports_detail_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_160_portgroups_ports_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_160_portgroups_ports_get_admin ... ok +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4?fields=uuid,spongebob {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c02a03d4-a76f-49a7-8f60-30b76de870e7 +Openstack-Request-Id: req-fcd34fb2-b668-4b10-88c5-50981e693f26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:44.615490+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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?fields=address,extra {} +GOT:{'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'}]} +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-2c46d226-e4ed-4785-b43b-31f1b7d8b20a +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4?fields=address,mode {} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-8ae1bff9-9f9d-4ea0-abce-847336d59f2e +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4.json {} +GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:45.178202+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {} +GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:45.316798+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'pg.json', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {} +GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:45.457530+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'pg.1', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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/6c68c044-8d6b-43a3-b642-fac1d2d8db42 {} +GOT:{'uuid': '6c68c044-8d6b-43a3-b642-fac1d2d8db42', 'created_at': '2024-01-06T14:11:45.595635+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42/ports', 'rel': 'bookmark'}]} +GET: /v1/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42 {} +GOT:{'uuid': '6c68c044-8d6b-43a3-b642-fac1d2d8db42', 'created_at': '2024-01-06T14:11:45.595635+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42/ports', 'rel': 'bookmark'}]} +GET: /portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42 {} +GOT:{'uuid': '6c68c044-8d6b-43a3-b642-fac1d2d8db42', 'created_at': '2024-01-06T14:11:45.595635+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {'bar': 'buzz'}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6c68c044-8d6b-43a3-b642-fac1d2d8db42/ports', 'rel': 'bookmark'}]} +GET: /v1/portgroups {} +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_many +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_many ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_166_volume_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_166_volume_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_one +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_one ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_161_portgroups_ports_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_161_portgroups_ports_get_member ... ok +ironic.tests.unit.common.test_kickstart_utils.KSUtilsTestCase.test_prepare_config_drive_in_swift +ironic.tests.unit.common.test_kickstart_utils.KSUtilsTestCase.test_prepare_config_drive_in_swift ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_167_volume_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_167_volume_get_member ... ok +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_cleaning +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_cleaning ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address_invalid_address_format +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address_invalid_address_format ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_162_portgroups_ports_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_162_portgroups_ports_get_observer ... ok +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_provisioning +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_provisioning ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address_non_existent_address +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address_non_existent_address ... ok +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_rescuing +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_rescuing ... ok +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-5d34d114-5a9e-4eb1-9cac-80baa920d07a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None -GOT:Response: 404 Not Found +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:43.339574+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6d7a4193-e9be-4234-8499-6b6456f17577 +Openstack-Request-Id: req-c8693493-7e6a-4eec-9303-902ef52cc53f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None -GOT:Response: 404 Not Found +{"ports": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-77bde2d5-f1dd-4755-9ae9-c0911acb1f45 +Openstack-Request-Id: req-c8693493-7e6a-4eec-9303-902ef52cc53f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None +{"ports": []} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cfc7b579-c3c3-41c5-a767-090807a0817c +Openstack-Request-Id: req-02bcf9fd-5332-41d7-aadd-628f125c4386 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-43e63ab0-0d6e-4d82-8e2d-2c3f924be405 +Openstack-Request-Id: req-02bcf9fd-5332-41d7-aadd-628f125c4386 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ad77d326-b576-434f-9282-0cf8c668a3ed +Openstack-Request-Id: req-686d300b-c6de-48da-9b71-60810c45ea5e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 404 Not Found +{"ports": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c8d840cd-c690-431e-aef1-c5ced60c63c9 +Openstack-Request-Id: req-686d300b-c6de-48da-9b71-60810c45ea5e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -GOT:Response: 404 Not Found +{"ports": []} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1cfdad21-0626-492c-8f83-cac5a663ed0f +Openstack-Request-Id: req-96d2aefc-68e1-4b4d-ae90-61a9c92d1f45 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_098_nodes_vifs_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_098_nodes_vifs_get_member ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_invalid_newer_version -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_invalid_newer_version ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_only_uuid -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_only_uuid ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_102_nodes_vifs_post_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_102_nodes_vifs_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_099_nodes_vifs_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_099_nodes_vifs_get_observer ... ok -GOT:Response: 202 Accepted -Openstack-Request-Id: req-b51ab4a5-71f5-437c-a438-2db2fac2b4df +{"ports": []} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-96d2aefc-68e1-4b4d-ae90-61a9c92d1f45 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/test.1 {'callback_url': 'url', 'agent_token': 'token'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-ac003083-4775-4857-8de7-3b9e5870b599 +{"ports": []} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-722542d7-2eff-4e98-a6b1-d8f1cd453dc5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123.json {'callback_url': 'url', 'agent_token': 'maybe some magic'} -GOT:Response: 202 Accepted -Openstack-Request-Id: req-83d97f55-3e4c-4aa0-b623-45d9adc8118c +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-722542d7-2eff-4e98-a6b1-d8f1cd453dc5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_verify_ca': 'abcd'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6b8e4da2-fd03-4018-b356-9886959ab37e +Openstack-Request-Id: req-e06724eb-47b0-4204-bce5-015bd727ab75 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_version': '1.4.1'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"ports": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-dfcb0efc-9ece-4579-a2d9-c6a8e6042937 +Openstack-Request-Id: req-e06724eb-47b0-4204-bce5-015bd727ab75 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {'callback_url': 'url', 'agent_token': 'meow', 'agent_verify_ca': 'abcd', 'agent_status': 'wow', 'agent_status_message': 'much status'} -GOT:Response: 400 Bad Request +X-Openstack-Ironic-Api-Version: 1.80 +{"ports": []} +API ACL Testing Path get /v1/volume +GET: /v1/volume {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2e9c19b9-b96c-4eca-90b2-ec4db19798b0 +Openstack-Request-Id: req-f7045740-832a-4e35-9d06-979eb6a833e7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/heartbeat/20010f47-3bca-444a-a75a-174db67f1a6c {'callback_url': 'url'} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-adc21bd6-df07-4cd9-8b74-1e49ac6c6c6d +Openstack-Request-Id: req-f7045740-832a-4e35-9d06-979eb6a833e7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=01f43399-f19c-461b-8711-c00dd0c8454f {} -GOT:{'node': {'uuid': '01f43399-f19c-461b-8711-c00dd0c8454f', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/01f43399-f19c-461b-8711-c00dd0c8454f', 'rel': 'self'}, {'href': 'http://localhost/nodes/01f43399-f19c-461b-8711-c00dd0c8454f', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'abcxyz', 'agent_token_required': True}} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=01f43399-f19c-461b-8711-c00dd0c8454f {} -GOT:{'node': {'uuid': '01f43399-f19c-461b-8711-c00dd0c8454f', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/01f43399-f19c-461b-8711-c00dd0c8454f', 'rel': 'self'}, {'href': 'http://localhost/nodes/01f43399-f19c-461b-8711-c00dd0c8454f', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': '******', 'agent_token_required': True}} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=01f43399-f19c-461b-8711-c00dd0c8454f {} -GOT:{'node': {'uuid': '01f43399-f19c-461b-8711-c00dd0c8454f', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/01f43399-f19c-461b-8711-c00dd0c8454f', 'rel': 'self'}, {'href': 'http://localhost/nodes/01f43399-f19c-461b-8711-c00dd0c8454f', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': '******', 'agent_token_required': True}} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 {} -GOT:{'node': {'uuid': '3025f03c-d283-4c1e-9073-27c31e6ede27', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/3025f03c-d283-4c1e-9073-27c31e6ede27', 'rel': 'self'}, {'href': 'http://localhost/nodes/3025f03c-d283-4c1e-9073-27c31e6ede27', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'some-value', 'agent_token_required': True}} -GET: /v1/lookup?node_uuid=74496f3e-fac7-4f71-9968-96e6eafa8063 {} -GOT:{'node': {'uuid': '74496f3e-fac7-4f71-9968-96e6eafa8063', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/74496f3e-fac7-4f71-9968-96e6eafa8063', 'rel': 'self'}, {'href': 'http://localhost/nodes/74496f3e-fac7-4f71-9968-96e6eafa8063', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'xyzabc', 'agent_token_required': True}} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=cc1b7664-e5bc-4421-8aeb-b6ee9a03c8ff {} -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_uuid -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_uuid ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_tls_required -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_tls_required ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_ignore_malformed_address -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_ignore_malformed_address ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_100_nodes_vifs_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_100_nodes_vifs_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_103_nodes_vifs_post_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_103_nodes_vifs_post_member ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_no_restrict_lookup -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_no_restrict_lookup ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_agent_token -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_agent_token ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_not_found -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_not_found ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_104_nodes_vifs_post_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_104_nodes_vifs_post_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_101_nodes_vifs_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_101_nodes_vifs_post_member ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_nothing_provided -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_nothing_provided ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_old_api_version -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_old_api_version ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_agent_verify_ca -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_agent_verify_ca ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_102_nodes_vifs_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_102_nodes_vifs_post_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_105_nodes_vifs_node_vif_ident_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_105_nodes_vifs_node_vif_ident_delete_admin ... ok -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_restrict_lookup -ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_restrict_lookup ... ok -ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_invalid_major_version -ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_invalid_major_version ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_agent_version -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_agent_version ... ok -ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_ok -ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_103_nodes_vifs_node_vif_ident_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_103_nodes_vifs_node_vif_ident_delete_admin ... ok -ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_too_high -ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_too_high ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_106_nodes_vifs_node_vif_ident_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_106_nodes_vifs_node_vif_ident_delete_member ... ok -ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_too_low -ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_too_low ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_no_required_agent_token -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_no_required_agent_token ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_104_nodes_vifs_node_vif_ident_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_104_nodes_vifs_node_vif_ident_delete_member ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_no_add_root_attr -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_no_add_root_attr ... ok -ACL Test GOT Response: 503 Service Unavailable +X-Openstack-Ironic-Api-Version: 1.80 +{"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"}]} +API ACL Testing Path get /v1/volume +GET: /v1/volume {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-eb714a62-ebb3-497c-8130-485f27d1c5f1 +Openstack-Request-Id: req-79ed29e0-9a7d-4ca4-b56f-32f31e203257 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-191e406b-0fd7-4404-ad4b-1b73a264e142 +Openstack-Request-Id: req-79ed29e0-9a7d-4ca4-b56f-32f31e203257 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume +GET: /v1/volume {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_168_volume_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_168_volume_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_get_all_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_get_all_invalid_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_163_portgroups_ports_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_163_portgroups_ports_detail_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_169_volume_connectors_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_169_volume_connectors_get_admin ... ok +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_no_ports_no_portgroups +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_no_ports_no_portgroups ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_164_portgroups_ports_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_164_portgroups_ports_detail_get_member ... ok +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_one_port_int_info +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_one_port_int_info ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_170_volume_connectors_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_170_volume_connectors_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_no_portgroups_allowed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_no_portgroups_allowed ... ok +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_one_portgroup_int_info +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_one_portgroup_int_info ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_165_portgroups_ports_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_165_portgroups_ports_detail_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_not_allowed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_not_allowed ... ok +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_two_portgroups_int_info +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_two_portgroups_int_info ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_171_volume_connectors_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_171_volume_connectors_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_166_volume_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_166_volume_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_portgroup_not_found +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_portgroup_not_found ... ok +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_two_ports_int_info +ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_two_ports_int_info ... ok +GOT:{'portgroups': [{'uuid': 'afc4ee3e-7e53-4989-94fa-71bd5a2b0633', 'address': '52:54:00:cf:2d:30', 'name': 'portgroup0', 'links': [{'href': 'http://localhost/v1/portgroups/afc4ee3e-7e53-4989-94fa-71bd5a2b0633', 'rel': 'self'}, {'href': 'http://localhost/portgroups/afc4ee3e-7e53-4989-94fa-71bd5a2b0633', 'rel': 'bookmark'}]}, {'uuid': '347d02fc-c627-4842-a876-cb9cecd902b9', 'address': '52:54:00:cf:2d:31', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/347d02fc-c627-4842-a876-cb9cecd902b9', 'rel': 'self'}, {'href': 'http://localhost/portgroups/347d02fc-c627-4842-a876-cb9cecd902b9', 'rel': 'bookmark'}]}, {'uuid': '97b51893-6485-4b5b-adcd-4b087747e714', 'address': '52:54:00:cf:2d:32', 'name': 'portgroup2', 'links': [{'href': 'http://localhost/v1/portgroups/97b51893-6485-4b5b-adcd-4b087747e714', 'rel': 'self'}, {'href': 'http://localhost/portgroups/97b51893-6485-4b5b-adcd-4b087747e714', 'rel': 'bookmark'}]}, {'uuid': 'e025cbca-76e1-4cbd-96f1-50f007b8143b', 'address': '52:54:00:cf:2d:33', 'name': 'portgroup3', 'links': [{'href': 'http://localhost/v1/portgroups/e025cbca-76e1-4cbd-96f1-50f007b8143b', 'rel': 'self'}, {'href': 'http://localhost/portgroups/e025cbca-76e1-4cbd-96f1-50f007b8143b', 'rel': 'bookmark'}]}, {'uuid': 'b107eebd-bb74-4a04-81a5-3fca33cd3502', 'address': '52:54:00:cf:2d:34', 'name': 'portgroup4', 'links': [{'href': 'http://localhost/v1/portgroups/b107eebd-bb74-4a04-81a5-3fca33cd3502', 'rel': 'self'}, {'href': 'http://localhost/portgroups/b107eebd-bb74-4a04-81a5-3fca33cd3502', 'rel': 'bookmark'}]}]} +GET: /v1/portgroups {} +GOT:{'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?address=aa:bb:cc:dd:ee:f1 {} +GOT:{'portgroups': [{'uuid': 'b9cf8af2-dc22-44c2-87ed-7cd99166fd5c', 'address': 'aa:bb:cc:dd:ee:f1', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/b9cf8af2-dc22-44c2-87ed-7cd99166fd5c', 'rel': 'self'}, {'href': 'http://localhost/portgroups/b9cf8af2-dc22-44c2-87ed-7cd99166fd5c', 'rel': 'bookmark'}]}]} +GET: /v1/portgroups?address=invalid-mac-format {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-191e406b-0fd7-4404-ad4b-1b73a264e142 +Openstack-Request-Id: req-7254d4e1-2481-4bd7-8d92-5f1caa143ded X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-mac-format\", \"debuginfo\": null}"} +GET: /v1/portgroups?address=aa:bb:cc:dd:ee:ff {} +GOT:{'portgroups': []} +GET: /v1/portgroups {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-fe504abe-3fe2-428d-8e12-5e3e8ba704b1 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +GET: /v1/portgroups/0550d1bf-f49d-4bcc-8d6d-b53b98782b7d/ports {} +GOT:{'ports': [{'uuid': '0aeb2b5c-d083-4b40-bdd1-86c5c3b34c06', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/0aeb2b5c-d083-4b40-bdd1-86c5c3b34c06', 'rel': 'self'}, {'href': 'http://localhost/ports/0aeb2b5c-d083-4b40-bdd1-86c5c3b34c06', 'rel': 'bookmark'}]}, {'uuid': '5c80838b-498b-424b-afe7-c877fc3f6f6f', 'address': '52:54:00:cf:2d:31', 'links': [{'href': 'http://localhost/v1/ports/5c80838b-498b-424b-afe7-c877fc3f6f6f', 'rel': 'self'}, {'href': 'http://localhost/ports/5c80838b-498b-424b-afe7-c877fc3f6f6f', 'rel': 'bookmark'}]}]} +GET: /v1/portgroups/0550d1bf-f49d-4bcc-8d6d-b53b98782b7d/ports/detail {} +GOT:{'ports': [{'uuid': '0aeb2b5c-d083-4b40-bdd1-86c5c3b34c06', 'created_at': '2024-01-06T14:11:46.761415+00:00', 'updated_at': None, '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': None, 'pxe_enabled': True, 'links': [{'href': 'http://localhost/v1/ports/0aeb2b5c-d083-4b40-bdd1-86c5c3b34c06', 'rel': 'self'}, {'href': 'http://localhost/ports/0aeb2b5c-d083-4b40-bdd1-86c5c3b34c06', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '0550d1bf-f49d-4bcc-8d6d-b53b98782b7d'}, {'uuid': '5c80838b-498b-424b-afe7-c877fc3f6f6f', 'created_at': '2024-01-06T14:11:46.768449+00:00', 'updated_at': None, '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': None, 'pxe_enabled': True, 'links': [{'href': 'http://localhost/v1/ports/5c80838b-498b-424b-afe7-c877fc3f6f6f', 'rel': 'self'}, {'href': 'http://localhost/ports/5c80838b-498b-424b-afe7-c877fc3f6f6f', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'portgroup_uuid': '0550d1bf-f49d-4bcc-8d6d-b53b98782b7d'}]} +GET: /v1/portgroups/0550d1bf-f49d-4bcc-8d6d-b53b98782b7d/ports?limit=1 {} +GOT:{'ports': [{'uuid': '0aeb2b5c-d083-4b40-bdd1-86c5c3b34c06', 'address': '52:54:00:cf:2d:30', 'links': [{'href': 'http://localhost/v1/ports/0aeb2b5c-d083-4b40-bdd1-86c5c3b34c06', 'rel': 'self'}, {'href': 'http://localhost/ports/0aeb2b5c-d083-4b40-bdd1-86c5c3b34c06', 'rel': 'bookmark'}]}], 'next': 'http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=1&marker=0aeb2b5c-d083-4b40-bdd1-86c5c3b34c06'} +GET: /v1/portgroups/0550d1bf-f49d-4bcc-8d6d-b53b98782b7d/ports/cae5d2d4-1286-4718-8ba0-4dab2ec14fc9 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5df2be1f-32b4-4cd1-b3af-035a54da5463 +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/portgroups/0550d1bf-f49d-4bcc-8d6d-b53b98782b7d/ports/2c6b4582-f151-4d38-9ec7-a0d2f34a8485 {} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-b62ca77b-c0f0-40b7-aea5-0a5333dc8ec9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} +GET: /v1/portgroups/d6b48969-0ea8-4b9e-b438-88a55c74658c/ports {} +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/portgroups/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/ports {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5df2be1f-32b4-4cd1-b3af-035a54da5463 +Openstack-Request-Id: req-f34117a9-0bbe-4407-96f3-6d27fd3f7b67 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup eeeeeeee-cccc-aaaa-bbbb-cccccccccccc could not be found.\", \"debuginfo\": null}"} +GET: /v1/portgroups?sort_key=uuid {} +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key ... ok +ironic.tests.unit.common.test_network.TestNetwork.test_remove_vifs_from_node +ironic.tests.unit.common.test_network.TestNetwork.test_remove_vifs_from_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_167_volume_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_167_volume_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_172_volume_connectors_post_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_172_volume_connectors_post_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_allowed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_allowed ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_168_volume_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_168_volume_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_invalid +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_invalid ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_173_volume_connectors_post_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_173_volume_connectors_post_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_not_allowed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_not_allowed ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_169_volume_connectors_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_169_volume_connectors_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_multi +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_multi ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_170_volume_connectors_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_170_volume_connectors_get_member ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f6fd81ef-6672-41c5-87d4-2fad6ab68cb0 +Openstack-Request-Id: req-24c38f67-9106-47d9-a348-7ae3360b53e8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f6fd81ef-6672-41c5-87d4-2fad6ab68cb0 +Openstack-Request-Id: req-24c38f67-9106-47d9-a348-7ae3360b53e8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 503 Service Unavailable +{"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"}]} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8f39ed29-92eb-4709-a3a9-2577c5a89665 +Openstack-Request-Id: req-9da47735-fb0b-4b00-9911-248f1cf6b825 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8f39ed29-92eb-4709-a3a9-2577c5a89665 +Openstack-Request-Id: req-9da47735-fb0b-4b00-9911-248f1cf6b825 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +{"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"}]} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-98fd57da-0098-41f0-bae4-57a456358f8d +Openstack-Request-Id: req-41708fbe-a66d-4235-bee3-9e48e9ce4a70 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-98fd57da-0098-41f0-bae4-57a456358f8d +Openstack-Request-Id: req-41708fbe-a66d-4235-bee3-9e48e9ce4a70 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3809c08b-2096-4fed-be12-09b979bf4c40 +Openstack-Request-Id: req-1a370af6-a1dd-4a3d-8df2-89772aae496c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3809c08b-2096-4fed-be12-09b979bf4c40 +Openstack-Request-Id: req-1a370af6-a1dd-4a3d-8df2-89772aae496c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -GOT:Response: 503 Service Unavailable +{"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"}]} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-5d100d99-f621-4682-b7aa-e61216cb683e +Location: http://localhost/v1/volume/connectors/97fea05b-433a-4923-97a6-ff7c96e71944 +Openstack-Request-Id: req-0a96d92f-736f-4f0c-8a76-f9cdc6cf8adc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "97fea05b-433a-4923-97a6-ff7c96e71944", "created_at": "2024-01-06T14:11:47.597836+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/97fea05b-433a-4923-97a6-ff7c96e71944", "rel": "self"}, {"href": "http://localhost/volume/connectors/97fea05b-433a-4923-97a6-ff7c96e71944", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +ACL Test GOT Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-5d100d99-f621-4682-b7aa-e61216cb683e +Location: http://localhost/v1/volume/connectors/97fea05b-433a-4923-97a6-ff7c96e71944 +Openstack-Request-Id: req-0a96d92f-736f-4f0c-8a76-f9cdc6cf8adc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +{"uuid": "97fea05b-433a-4923-97a6-ff7c96e71944", "created_at": "2024-01-06T14:11:47.597836+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/97fea05b-433a-4923-97a6-ff7c96e71944", "rel": "self"}, {"href": "http://localhost/volume/connectors/97fea05b-433a-4923-97a6-ff7c96e71944", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'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-ce21dc17-345a-4a93-bd93-c7a4d5a99c30 +Openstack-Request-Id: req-19aa7a8e-1689-4d49-9559-4db09e503622 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_107_nodes_vifs_node_vif_ident_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_107_nodes_vifs_node_vif_ident_delete_reader ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_remove_non_existent -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_remove_non_existent ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_replace_non_existent_list_item -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_replace_non_existent_list_item ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_required_agent_token -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_required_agent_token ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_check_for_invalid_fields -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_check_for_invalid_fields ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_105_nodes_vifs_node_vif_ident_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_105_nodes_vifs_node_vif_ident_delete_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_108_nodes_management_indicators_get_allow -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_108_nodes_management_indicators_get_allow ... skipped 'Not implemented yet' -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_check_for_invalid_fields_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_check_for_invalid_fields_fail ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_multiple_success -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_multiple_success ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_without_agent_version_anaconda -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_without_agent_version_anaconda ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_no_path -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_no_path ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_109_nodes_management_indicators_component_get_allow -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_109_nodes_management_indicators_component_get_allow ... skipped 'Not implemented yet' -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_remove -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_remove ... ok -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_without_version -ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_without_version ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_106_nodes_management_indicators_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_106_nodes_management_indicators_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_success -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_success ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_replace -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_replace ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_110_nodes_management_indicators_component_ind_ident_get_allow -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_110_nodes_management_indicators_component_ind_ident_get_allow ... skipped 'Not implemented yet' -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_similar_subpath -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_similar_subpath ... ok -ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_interface_not_support -ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_interface_not_support ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_subpath_success -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_subpath_success ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_107_nodes_management_indicators_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_107_nodes_management_indicators_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_success -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_success ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_similar_subpath -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_similar_subpath ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_111_nodes_management_indicators_component_ind_ident_put_allow -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_111_nodes_management_indicators_component_ind_ident_put_allow ... skipped 'Not implemented yet' -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_subpath_success -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_subpath_success ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_108_nodes_management_indicators_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_108_nodes_management_indicators_get_observer ... ok -ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_interface_return_failed -ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_interface_return_failed ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_success -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_success ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_112_portgroups_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_112_portgroups_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patch_update_changed_fields -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patch_update_changed_fields ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_109_nodes_management_indicators_component_get_allow -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.' -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patch_validate_allowed_fields -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patch_validate_allowed_fields ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patched_validate_with_schema -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patched_validate_with_schema ... ok -ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_succeeded -ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_succeeded ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_sanitize_dict -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_sanitize_dict ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_113_portgroups_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_113_portgroups_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_validate_limit -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_validate_limit ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_110_nodes_management_indicators_component_ind_ident_get_allow -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.' -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_validate_sort_dir -ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_validate_sort_dir ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_multiple_node_policies_and_retrieve -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_multiple_node_policies_and_retrieve ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_multiple_node_policies_and_retrieve_first_fail -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_multiple_node_policies_and_retrieve_first_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_114_portgroups_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_114_portgroups_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_111_nodes_management_indicators_component_ind_ident_put_allow -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.' -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_node_policy_and_retrieve_no_node -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_node_policy_and_retrieve_no_node ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes -ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_no_port -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_no_port ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_115_portgroups_post_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_115_portgroups_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_112_portgroups_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_112_portgroups_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_no_port_policy_forbidden -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_no_port_policy_forbidden ... ok -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_policy_notfound -ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_policy_notfound ... ok -ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_not_pinned -ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_not_pinned ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_alive -ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_alive ... ok -ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_not_pinned_in_release_mappings -ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_not_pinned_in_release_mappings ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_113_portgroups_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_113_portgroups_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_pinned -ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_pinned ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_116_portgroups_post_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_116_portgroups_post_member ... ok -ironic.tests.unit.api.controllers.v1.test_volume.TestGetVolume.test_get_volume -ironic.tests.unit.api.controllers.v1.test_volume.TestGetVolume.test_get_volume ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_114_portgroups_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_114_portgroups_get_observer ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_cleaning -ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_cleaning ... ok -ironic.tests.unit.api.controllers.v1.test_volume.TestGetVolume.test_get_volume_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume.TestGetVolume.test_get_volume_invalid_api_version ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_117_portgroups_post_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_117_portgroups_post_reader ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_maintenance -ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_maintenance ... ok -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fbffd254-1a11-427e-badf-fa14ea0a6a53 +Openstack-Request-Id: req-19aa7a8e-1689-4d49-9559-4db09e503622 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_174_volume_connectors_post_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_174_volume_connectors_post_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_node_id +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_node_id ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_175_volume_volume_connector_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_175_volume_volume_connector_id_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_node_uuid +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_node_uuid ... ok GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b948d45f-4ff6-49dc-ba01-8f64c2533c11 +Openstack-Request-Id: req-c1ea9ae4-4479-4b1c-813d-a3045d2d0459 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-26dd4e82-38c8-4a3e-8a96-f526de921cb3 +Openstack-Request-Id: req-29f44a66-426e-47ba-a489-872cf721dbd6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-0f510353-ff42-4c8f-94d6-6077bad34206 +Openstack-Request-Id: req-117e74d0-7d92-4476-881a-23f50d17e261 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a68d8d71-0531-43c4-a2d3-9a85945e020e +Openstack-Request-Id: req-308e7545-eeb1-414a-a690-289c92298cb2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-10d7643f-1c7a-4006-babe-36a08874a1b5 +Openstack-Request-Id: req-71f23760-2121-4c99-8ef4-ff6e628a1890 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-feb6eb35-0747-4a73-a31d-a56f182170fa +Openstack-Request-Id: req-985a3568-d8c4-454a-9197-a20c96e79dea X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-68cd0186-baa2-455f-a467-b0e02a4798bd +Openstack-Request-Id: req-c7c901ca-6e40-4515-a094-7b43e6d36fd5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-94ad9335-6de9-47a8-bd0f-0aebac7b03ce +Openstack-Request-Id: req-c4585fa3-1cd0-48c6-904c-85b405381b92 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8a312cc8-56a7-49b1-9c4a-1935c1c718a3 +Openstack-Request-Id: req-d8ea34b6-1125-4b31-966f-665e3d8cb202 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-314aba2e-0ab9-4778-9a35-1a19aff963aa +Openstack-Request-Id: req-28a94388-83e4-4060-ba43-a282abaa4ccd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume +GET: /v1/volume {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-be145547-709d-41b6-9a40-85d824951b98 +Openstack-Request-Id: req-94d4fbad-f443-4230-a8bd-2620b7ee5316 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume +GET: /v1/volume {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-de82fcb3-ea77-4c35-96ad-7e526e081da0 +Openstack-Request-Id: req-116dfb07-99e0-4055-a3b9-15e90d923cee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume +GET: /v1/volume {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a034f218-2103-4a06-861c-22d299cb1035 +Openstack-Request-Id: req-22b92c2b-3552-413a-97c0-0e67dfb351ec X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_115_portgroups_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_115_portgroups_post_admin ... ok -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ce21dc17-345a-4a93-bd93-c7a4d5a99c30 +Openstack-Request-Id: req-b9f21de3-c0eb-47ee-861c-317d1a0e3517 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d2417068-e62e-4552-8618-b1640e0a9983 +Openstack-Request-Id: req-25712008-bc83-47b0-a2cd-576b0932f048 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_171_volume_connectors_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_171_volume_connectors_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_176_volume_volume_connector_id_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_176_volume_volume_connector_id_get_member ... ok +GOT:{'portgroups': [{'uuid': '08a5c080-e320-4bee-9584-b24d6bc0ed8b', 'address': '52:54:00:cf:2d:30', 'name': 'portgroup0', 'links': [{'href': 'http://localhost/v1/portgroups/08a5c080-e320-4bee-9584-b24d6bc0ed8b', 'rel': 'self'}, {'href': 'http://localhost/portgroups/08a5c080-e320-4bee-9584-b24d6bc0ed8b', 'rel': 'bookmark'}]}, {'uuid': '15fd5aed-d311-40c3-8775-8efa8675a3f0', 'address': '52:54:00:cf:2d:32', 'name': 'portgroup2', 'links': [{'href': 'http://localhost/v1/portgroups/15fd5aed-d311-40c3-8775-8efa8675a3f0', 'rel': 'self'}, {'href': 'http://localhost/portgroups/15fd5aed-d311-40c3-8775-8efa8675a3f0', 'rel': 'bookmark'}]}, {'uuid': '5fd31e75-da73-42cf-9e5b-d4f101dff079', 'address': '52:54:00:cf:2d:31', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/5fd31e75-da73-42cf-9e5b-d4f101dff079', 'rel': 'self'}, {'href': 'http://localhost/portgroups/5fd31e75-da73-42cf-9e5b-d4f101dff079', 'rel': 'bookmark'}]}]} +GET: /v1/portgroups?sort_key=mode {} +GOT:{'portgroups': [{'uuid': '9e87c0c3-3197-4f4a-83df-5fda66dc651d', 'address': '52:54:00:cf:2d:31', 'name': 'portgroup1', 'links': [{'href': 'http://localhost/v1/portgroups/9e87c0c3-3197-4f4a-83df-5fda66dc651d', 'rel': 'self'}, {'href': 'http://localhost/portgroups/9e87c0c3-3197-4f4a-83df-5fda66dc651d', 'rel': 'bookmark'}]}, {'uuid': '32f28827-58c3-42a3-b761-627281985bd6', 'address': '52:54:00:cf:2d:32', 'name': 'portgroup2', 'links': [{'href': 'http://localhost/v1/portgroups/32f28827-58c3-42a3-b761-627281985bd6', 'rel': 'self'}, {'href': 'http://localhost/portgroups/32f28827-58c3-42a3-b761-627281985bd6', 'rel': 'bookmark'}]}, {'uuid': '6e6b3487-2068-49d2-bbfc-5bd5c0a4f23a', 'address': '52:54:00:cf:2d:33', 'name': 'portgroup3', 'links': [{'href': 'http://localhost/v1/portgroups/6e6b3487-2068-49d2-bbfc-5bd5c0a4f23a', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6e6b3487-2068-49d2-bbfc-5bd5c0a4f23a', 'rel': 'bookmark'}]}]} +GET: /v1/portgroups?sort_key=foo {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d2417068-e62e-4552-8618-b1640e0a9983 +Openstack-Request-Id: req-6fac6d25-3479-4b75-8426-646d09d60257 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} +GET: /v1/portgroups?sort_key=extra {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-11302193-8cc9-42bd-bdf9-4b3738641658 +Openstack-Request-Id: req-704cf701-2956-4360-ac58-fb70fc94f87a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"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 {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-11302193-8cc9-42bd-bdf9-4b3738641658 +Openstack-Request-Id: req-0e0a2572-9f75-487c-92a2-58febacbda09 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} -GOT:Response: 200 OK +{"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 {} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-20818574-3eab-4216-95cb-cde29012066a +Openstack-Request-Id: req-e4e20a6a-0cb2-45b6-a0de-ec6667260b24 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value properties is an invalid field for sorting\", \"debuginfo\": null}"} +GET: /v1/portgroups?sort_key=mode {} +GOT:Response: 406 Not Acceptable +Content-Type: application/json +Openstack-Request-Id: req-2d863dd4-9e1b-4c24-a00b-070fdb6264a0 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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 [{'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-20818574-3eab-4216-95cb-cde29012066a +Openstack-Request-Id: req-be3eb33b-282e-48d2-adf2-6d36ca76c9ed X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} -GOT:Response: 201 Created +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:48.015685+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/node_id', 'value': '1', 'op': 'add'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Location: http://localhost/v1/portgroups/4312e40e-94dc-487a-99eb-538fce0f5acd -Openstack-Request-Id: req-fe840eeb-66e5-42ce-bbb0-a3699c767200 +Openstack-Request-Id: req-a7cf5035-f517-40ee-ada3-b6839db58f3b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "4312e40e-94dc-487a-99eb-538fce0f5acd", "created_at": "2024-01-06T13:35:10.639954+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/4312e40e-94dc-487a-99eb-538fce0f5acd", "rel": "self"}, {"href": "http://localhost/portgroups/4312e40e-94dc-487a-99eb-538fce0f5acd", "rel": "bookmark"}], "node_uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "ports": [{"href": "http://localhost/v1/portgroups/4312e40e-94dc-487a-99eb-538fce0f5acd/ports", "rel": "self"}, {"href": "http://localhost/portgroups/4312e40e-94dc-487a-99eb-538fce0f5acd/ports", "rel": "bookmark"}]} -ACL Test GOT Response: 201 Created +{"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}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/portgroups/4312e40e-94dc-487a-99eb-538fce0f5acd -Openstack-Request-Id: req-fe840eeb-66e5-42ce-bbb0-a3699c767200 +Openstack-Request-Id: req-affe2a1b-e5c7-4569-a217-35322a80059e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "4312e40e-94dc-487a-99eb-538fce0f5acd", "created_at": "2024-01-06T13:35:10.639954+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/4312e40e-94dc-487a-99eb-538fce0f5acd", "rel": "self"}, {"href": "http://localhost/portgroups/4312e40e-94dc-487a-99eb-538fce0f5acd", "rel": "bookmark"}], "node_uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "ports": [{"href": "http://localhost/v1/portgroups/4312e40e-94dc-487a-99eb-538fce0f5acd/ports", "rel": "self"}, {"href": "http://localhost/portgroups/4312e40e-94dc-487a-99eb-538fce0f5acd/ports", "rel": "bookmark"}]} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:48.442822+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/address', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_root +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_root ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_172_volume_connectors_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_172_volume_connectors_post_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_root_non_existent +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_root_non_existent ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_177_volume_volume_connector_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_177_volume_volume_connector_id_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_address +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_address ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_173_volume_connectors_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_173_volume_connectors_post_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_mode_not_allowed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_mode_not_allowed ... ok +ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_auth_from_config +ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_auth_from_config ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_178_volume_volume_connector_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_178_volume_volume_connector_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_174_volume_connectors_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_174_volume_connectors_post_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_multi +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_multi ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_179_volume_volume_connector_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_179_volume_volume_connector_id_patch_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_node_id +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_node_id ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_175_volume_volume_connector_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_175_volume_volume_connector_id_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_non_existent_property_fail +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_non_existent_property_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_180_volume_volume_connector_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_180_volume_volume_connector_id_patch_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_uuid +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_176_volume_volume_connector_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_176_volume_volume_connector_id_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_address_already_exist +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_address_already_exist ... ok GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-251702c3-622b-4f66-b7e0-ef0827d28888 +Openstack-Request-Id: req-8bdf9781-0a07-4dc4-ad42-7ec737b6752b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-251702c3-622b-4f66-b7e0-ef0827d28888 +Openstack-Request-Id: req-8bdf9781-0a07-4dc4-ad42-7ec737b6752b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-80260c36-2343-4d7d-9db3-913b50845dba +Openstack-Request-Id: req-fbad1c9b-7112-4c74-b3d0-f831f50a83a4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:48.290308+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"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-80260c36-2343-4d7d-9db3-913b50845dba +Openstack-Request-Id: req-fbad1c9b-7112-4c74-b3d0-f831f50a83a4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_118_portgroups_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_118_portgroups_detail_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_116_portgroups_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_116_portgroups_post_member ... ok -GOT:{'node': {'uuid': 'cc1b7664-e5bc-4421-8aeb-b6ee9a03c8ff', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/cc1b7664-e5bc-4421-8aeb-b6ee9a03c8ff', 'rel': 'self'}, {'href': 'http://localhost/nodes/cc1b7664-e5bc-4421-8aeb-b6ee9a03c8ff', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': 'this_thing_on?', 'agent_token_required': True}} -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 {} -GOT:{'node': {'uuid': '102c9466-4de1-4fc7-baf8-6fe46edbb44a', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/102c9466-4de1-4fc7-baf8-6fe46edbb44a', 'rel': 'self'}, {'href': 'http://localhost/nodes/102c9466-4de1-4fc7-baf8-6fe46edbb44a', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': '123456', 'agent_token_required': True}} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=5ba4a998-2be1-4a15-9705-8137024afaba {} -GOT:{'node': {'uuid': '5ba4a998-2be1-4a15-9705-8137024afaba', 'properties': {'cpu_arch': 'x86_64', 'cpus': '8', '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/5ba4a998-2be1-4a15-9705-8137024afaba', 'rel': 'self'}, {'href': 'http://localhost/nodes/5ba4a998-2be1-4a15-9705-8137024afaba', 'rel': 'bookmark'}]}, 'config': {'metrics': {'backend': 'statsd', 'prepend_host': False, 'prepend_uuid': False, 'prepend_host_reverse': True, 'global_prefix': None}, 'metrics_statsd': {'statsd_host': 'localhost', 'statsd_port': 8125}, 'heartbeat_timeout': 300, 'agent_token': '234567890', 'agent_token_required': True}} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 {} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:48.290308+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"} +API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e5a80bda-1ff1-4b15-ac6b-b9243eba9580 +Openstack-Request-Id: req-c5c62e1e-f49f-4745-8809-6008770acd93 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -GET: /v1/lookup {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ac44c93b-9b84-4fbc-8e5d-dc6ec35f8cba +Openstack-Request-Id: req-c5c62e1e-f49f-4745-8809-6008770acd93 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"At least one of 'addresses' and 'node_uuid' parameters is required\", \"debuginfo\": null}"} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6b8e1de5-1d90-416c-9402-356d312867b2 +Openstack-Request-Id: req-5a06b40f-1b29-4d2b-859a-6b08ed6be26a X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -GET: /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=8d08c23f-8ec5-4dc7-b255-7f91b85e781b {} -GOT:Response: 404 Not Found +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:48.879094+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"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-be8957df-4dc9-49a4-8f3f-f3111204b769 +Openstack-Request-Id: req-5a06b40f-1b29-4d2b-859a-6b08ed6be26a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -GET: /v1/volume/ {} -GOT:{'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/ {} -GOT:{'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/ {} -GOT:{'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 {} -GOT:{'connectors': []} -GET: /volume/connectors {} -GOT:{'connectors': []} -GET: /v1/volume/targets {} -GOT:{'targets': []} -GET: /volume/targets {} -GOT:{'targets': []} -GET: /v1/volume/ {} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:48.879094+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"} +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-eef3b4e7-229e-458e-8d0b-3b57ef856266 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-eef3b4e7-229e-458e-8d0b-3b57ef856266 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-228f1304-0a30-422d-aa19-878b1b9e7200 +Openstack-Request-Id: req-1d0f47d9-8bc1-4e23-8f59-f1aa8d8303f4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -POST: /v1/volume/connectors {'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 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-8b5f0b24-705c-4122-a9f2-75a1ca51ba71 +Openstack-Request-Id: req-1d0f47d9-8bc1-4e23-8f59-f1aa8d8303f4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, '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'} -POST: /v1/volume/connectors {'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'} -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_doesnt_contain_id -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_doesnt_contain_id ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_error -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_error ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_119_portgroups_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_119_portgroups_detail_get_member ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_release_exceptions_skipping -ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_release_exceptions_skipping ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_117_portgroups_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_117_portgroups_post_observer ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_generate_uuid -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_generate_uuid ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_120_portgroups_detail_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_120_portgroups_detail_get_reader ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_invalid_api_version ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_release_node_not_locked -ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_release_node_not_locked ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_invalid_node_uuid_format -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_invalid_node_uuid_format ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_118_portgroups_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_118_portgroups_detail_get_admin ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_correct_power_state_on_upgrade_lock -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_correct_power_state_on_upgrade_lock ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_connector_id -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_connector_id ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -API ACL Testing Path get /v1/portgroups/detail -GET: /v1/portgroups/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3837c7f2-cfd2-488f-9a0d-c1accf24f0f3 +Openstack-Request-Id: req-f508268c-d0bf-4708-a922-80821bbc0233 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:12.516822+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3837c7f2-cfd2-488f-9a0d-c1accf24f0f3 +Openstack-Request-Id: req-f508268c-d0bf-4708-a922-80821bbc0233 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:12.516822+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -API ACL Testing Path get /v1/portgroups/detail -GET: /v1/portgroups/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_181_volume_volume_connector_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_181_volume_volume_connector_id_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_182_volume_volume_connector_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_182_volume_volume_connector_id_delete_member ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-51cd1f3d-55e1-47bd-9eff-acf03d88227b +Openstack-Request-Id: req-0451083d-8870-4c8c-b69d-d2b0395f21f9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:13.161256+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -ACL Test GOT Response: 200 OK +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:48.616965+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-51cd1f3d-55e1-47bd-9eff-acf03d88227b +Openstack-Request-Id: req-46c2baca-f664-46c2-8134-893731355c17 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:13.161256+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -API ACL Testing Path get /v1/portgroups/detail -GET: /v1/portgroups/detail {} +{"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}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/address', 'op': 'remove'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8e31dede-b191-49e5-aa48-bc861d71c829 +Openstack-Request-Id: req-0dfeb691-160a-4afa-830a-a784a17b044d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:13.860737+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -ACL Test GOT Response: 200 OK +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:48.995636+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/mode', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-8e31dede-b191-49e5-aa48-bc861d71c829 +Openstack-Request-Id: req-74537dca-1f48-41f1-9f23-a35eb21a5c35 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:13.860737+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"'mode' is a mandatory attribute and can not be removed\", \"debuginfo\": null}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/extra/foo1', 'op': 'remove'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-482c1df0-c876-469d-8173-877d1333684b +Openstack-Request-Id: req-77c6d1c9-97c1-4d1c-8eaa-55c8fe94eb49 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:14.518853+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_121_portgroups_portgroup_ident_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_121_portgroups_portgroup_ident_get_admin ... ok -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_get_power_state_error -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_get_power_state_error ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_node_uuid -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_node_uuid ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_get_power_state_fail -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_get_power_state_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_119_portgroups_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_119_portgroups_detail_get_member ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_type -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_type ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_122_portgroups_portgroup_ident_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_122_portgroups_portgroup_ident_get_member ... ok -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_maintenance_on_upgrade_lock -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_maintenance_on_upgrade_lock ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_node_uuid_not_found -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_node_uuid_not_found ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_120_portgroups_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_120_portgroups_detail_get_observer ... ok -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_123_portgroups_portgroup_ident_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_123_portgroups_portgroup_ident_get_reader ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded2 -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded2 ... ok -GOT:Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-664c1628-6785-4042-8989-d3c33ae18109 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:12.876086+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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:35:12.876086+00:00', 'updated_at': None, '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'} -POST: /v1/volume/connectors {'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 +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:49.318152+00:00", "updated_at": "2024-01-06T14:11:49.329795+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/extra', 'op': 'remove'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-09bcc430-9779-4668-b42e-0c7a632ab62c +Openstack-Request-Id: req-803a2963-78fc-4dc0-a63c-7e3c7251f846 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} -POST: /v1/volume/connectors {'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -GOT:Response: 201 Created +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:49.318152+00:00", "updated_at": "2024-01-06T14:11:49.329795+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/node_id', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Location: http://localhost/v1/volume/connectors/a00a1f1f-1cfd-450f-8692-a2fd096f5346 -Openstack-Request-Id: req-4b9197be-cfeb-4177-a68a-3d6a128d6150 +Openstack-Request-Id: req-5e738e48-256c-4fdf-b83e-42e725d587a3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "a00a1f1f-1cfd-450f-8692-a2fd096f5346", "created_at": "2024-01-06T13:35:13.835197+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/a00a1f1f-1cfd-450f-8692-a2fd096f5346", "rel": "self"}, {"href": "http://localhost/volume/connectors/a00a1f1f-1cfd-450f-8692-a2fd096f5346", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -GET: /v1/volume/connectors/a00a1f1f-1cfd-450f-8692-a2fd096f5346 {} -GOT:{'uuid': 'a00a1f1f-1cfd-450f-8692-a2fd096f5346', 'created_at': '2024-01-06T13:35:13.835197+00:00', 'updated_at': None, 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'type': 'iqn', 'links': [{'href': 'http://localhost/v1/volume/connectors/a00a1f1f-1cfd-450f-8692-a2fd096f5346', 'rel': 'self'}, {'href': 'http://localhost/volume/connectors/a00a1f1f-1cfd-450f-8692-a2fd096f5346', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -POST: /v1/volume/connectors {'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\": \"\"}"} -POST: /v1/volume/connectors {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': 123} +{"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}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/extra/non-existent', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-96c2eb22-3fb8-464d-bcb3-039959983c23 +Openstack-Request-Id: req-fc459185-5789-422e-91e6-320e7ee8a65d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for connector: 123 is not of type 'string'\", \"debuginfo\": null}"} -POST: /v1/volume/connectors {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove a non-existent object 'non-existent'\", \"debuginfo\": null}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/uuid', 'op': 'remove'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-a62f40b3-09ba-48c9-9a9a-aec20e3f7830 +Openstack-Request-Id: req-73a2801f-a855-4cce-8f8b-3669e3f1c176 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for connector: 'connector_id' is a required property\", \"debuginfo\": null}"} -POST: /v1/volume/connectors {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}} -GOT:Response: 400 Bad Request +{"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}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/address', 'value': 'aa:aa:aa:aa:aa:aa', 'op': 'replace'}] +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-554205c4-0894-4aa6-8dbc-f3ffb3eab054 +Openstack-Request-Id: req-bdf94feb-1587-4f28-8121-fd97838a808c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for connector: 'node_uuid' is a required property\", \"debuginfo\": null}"} -POST: /v1/volume/connectors {'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 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A port with MAC address aa:aa:aa:aa:aa:aa already exists.\", \"debuginfo\": null}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/extra/foo1', 'value': 'bar1x', 'op': 'replace'}, {'path': '/extra/foo2', 'value': 'bar2x', 'op': 'replace'}, {'path': '/extra/foo3', 'value': 'bar3x', 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_multi +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_multi ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_node_id +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_node_id ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_177_volume_volume_connector_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_177_volume_volume_connector_id_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_183_volume_volume_connector_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_183_volume_volume_connector_id_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_178_volume_volume_connector_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_178_volume_volume_connector_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_184_volume_targets_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_184_volume_targets_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_node_uuid +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_node_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_179_volume_volume_connector_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_179_volume_volume_connector_id_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_185_volume_targets_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_185_volume_targets_get_member ... ok +ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_noauth +ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_noauth ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_non_existent_node_uuid +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_non_existent_node_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_180_volume_volume_connector_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_180_volume_volume_connector_id_patch_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_186_volume_targets_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_186_volume_targets_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_singular +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_singular ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_address_invalid_format +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_address_invalid_format ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byaddress_not_allowed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byaddress_not_allowed ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_181_volume_volume_connector_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_181_volume_volume_connector_id_delete_admin ... ok +API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e73a86fc-5c6a-4c89-9be8-366b5e6266b8 +Openstack-Request-Id: req-3688c60e-68e5-4328-b60b-eb9a333e57b7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for connector: 'type' is a required property\", \"debuginfo\": null}"} -POST: /v1/volume/connectors {'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 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6ff8e3d3-27cf-4cc1-aacb-d1b87fdaa84d +Openstack-Request-Id: req-3688c60e-68e5-4328-b60b-eb9a333e57b7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid input for field/attribute node_uuid. Value: '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'. \", \"debuginfo\": null}"} -POST: /v1/volume/connectors {'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 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-4bfd6ca2-16d5-40e2-9f20-beeaae3c5854 +Openstack-Request-Id: req-3b6af572-8a11-486d-bb3e-5bb4ed2027b9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:16.186719+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 {'uuid': '9e822f94-43db-43d9-b182-34193eededc8', 'type': 'iqn', 'connector_id': 'test-connector-id-456', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_type_value_already_exist -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_type_value_already_exist ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_121_portgroups_portgroup_ident_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_121_portgroups_portgroup_ident_get_admin ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_valid_extra -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_valid_extra ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_124_portgroups_portgroup_ident_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_124_portgroups_portgroup_ident_patch_admin ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded_notify -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded_notify ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_122_portgroups_portgroup_ident_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_122_portgroups_portgroup_ident_get_member ... ok -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_node_uuid_to_node_id_mapping -ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_node_uuid_to_node_id_mapping ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_no_power_sync_support -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_no_power_sync_support ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_byid -ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_byid ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_125_portgroups_portgroup_ident_patch_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_125_portgroups_portgroup_ident_patch_member ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_123_portgroups_portgroup_ident_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_123_portgroups_portgroup_ident_get_observer ... ok -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_power_state_sync_max_retries_gps_exception -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_power_state_sync_max_retries_gps_exception ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_byid_invalid_api_version -ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_byid_invalid_api_version ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_retry_then_success -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_retry_then_success ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_invalid_power_state -ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_invalid_power_state ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_124_portgroups_portgroup_ident_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_124_portgroups_portgroup_ident_patch_admin ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_no_sync -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_no_sync ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-482c1df0-c876-469d-8173-877d1333684b +Openstack-Request-Id: req-3b6af572-8a11-486d-bb3e-5bb4ed2027b9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:14.518853+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f5ab1524-d8ad-4437-9424-5fa6ba900337 +Openstack-Request-Id: req-0b4f20cb-7ff0-49ad-8c2d-1cc9f70114ae X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:15.327788+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f5ab1524-d8ad-4437-9424-5fa6ba900337 +Openstack-Request-Id: req-0b4f20cb-7ff0-49ad-8c2d-1cc9f70114ae X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:15.327788+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets +GET: /v1/volume/targets {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-53d6051f-fcfe-4df9-9ba8-665206f004a9 +Openstack-Request-Id: req-9a5738ae-0541-467f-938d-c25a3c7bcf6e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:15.962268+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} +{"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"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-53d6051f-fcfe-4df9-9ba8-665206f004a9 +Openstack-Request-Id: req-9a5738ae-0541-467f-938d-c25a3c7bcf6e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:15.962268+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +{"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"}]} +API ACL Testing Path get /v1/volume/targets +GET: /v1/volume/targets {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-474a80e3-7f93-4078-a62c-9552e88abdeb +Openstack-Request-Id: req-f5b3825a-cdfc-4e6d-b8fb-a5f98d6401a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-474a80e3-7f93-4078-a62c-9552e88abdeb +Openstack-Request-Id: req-f5b3825a-cdfc-4e6d-b8fb-a5f98d6401a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets +GET: /v1/volume/targets {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6c64bcd9-471b-43a4-8f30-c9c69b8e1f69 +Openstack-Request-Id: req-373ada98-1da3-43cb-bc31-9896ce6c669e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6c64bcd9-471b-43a4-8f30-c9c69b8e1f69 +Openstack-Request-Id: req-373ada98-1da3-43cb-bc31-9896ce6c669e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden +{"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"}]} +API ACL Testing Path post /v1/volume/targets +POST: /v1/volume/targets {'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 -Openstack-Request-Id: req-825b1def-08fe-4e08-8fdc-73a6fa3c0c14 +Location: http://localhost/v1/volume/targets/94e406fc-87ce-4f3c-a15c-4ff7c7450230 +Openstack-Request-Id: req-4dbb4468-a9e8-4d22-b1b5-6459084209a2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_126_portgroups_portgroup_ident_patch_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_126_portgroups_portgroup_ident_patch_reader ... ok -ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_node_locked -ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_node_locked ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_125_portgroups_portgroup_ident_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_125_portgroups_portgroup_ident_patch_member ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_127_portgroups_portgroup_ident_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_127_portgroups_portgroup_ident_delete_admin ... ok -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_no_sync_notify -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_no_sync_notify ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_1_values -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_1_values ... skipped 'For value storage' -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_sync -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_sync ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_128_portgroups_portgroup_ident_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_128_portgroups_portgroup_ident_delete_member ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_126_portgroups_portgroup_ident_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_126_portgroups_portgroup_ident_patch_observer ... ok -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_sync_failed -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_sync_failed ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_2_unauthenticated_user_cannot_get_node -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_2_unauthenticated_user_cannot_get_node ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_129_portgroups_portgroup_ident_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_129_portgroups_portgroup_ident_delete_reader ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_not_set -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_not_set ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_unchanged -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_unchanged ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_127_portgroups_portgroup_ident_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_127_portgroups_portgroup_ident_delete_admin ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -GOT:Response: 409 Conflict +{"uuid": "94e406fc-87ce-4f3c-a15c-4ff7c7450230", "created_at": "2024-01-06T14:11:51.437921+00:00", "updated_at": null, "boot_index": 4, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/94e406fc-87ce-4f3c-a15c-4ff7c7450230", "rel": "self"}, {"href": "http://localhost/volume/targets/94e406fc-87ce-4f3c-a15c-4ff7c7450230", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_187_volume_targets_post_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_187_volume_targets_post_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byid +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byid ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_188_volume_targets_post_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_188_volume_targets_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_182_volume_volume_connector_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_182_volume_volume_connector_id_delete_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byid_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byid_invalid_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_189_volume_targets_post_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_189_volume_targets_post_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byname +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byname ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_183_volume_volume_connector_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_183_volume_volume_connector_id_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_190_volume_volume_target_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_190_volume_volume_target_id_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_184_volume_targets_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_184_volume_targets_get_admin ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-56821736-36f4-41d3-b844-0a82fa3ee797 +Openstack-Request-Id: req-ef30df11-f37b-4d36-a323-2248ecf8f7d4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A volume connector with type iqn and connector ID test-connector-id-456 already exists.\", \"debuginfo\": null}"} -POST: /v1/volume/connectors {'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 +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:50.087089+00:00", "updated_at": "2024-01-06T14:11:50.101847+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/node_id', 'value': '1', 'op': 'replace'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-97413848-e2cd-4e16-a064-f452b7ca5010 +Openstack-Request-Id: req-220e75ba-f9d7-4bbb-b36e-80f452d66aaf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:16.749034+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 {} -GOT:{'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'created_at': '2024-01-06T13:35:16.749034+00:00', 'updated_at': None, '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'}}, '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 {'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 +{"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}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -Openstack-Request-Id: req-1ae44d69-283d-4d8c-b777-a8cac3741f96 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:17.145548+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"} -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 204 No Content -Openstack-Request-Id: req-e0bb805d-050a-445e-9e00-55e26beaf093 +Openstack-Request-Id: req-e87413bf-391c-4d86-abd1-914b8a497588 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -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\": \"\"}"} -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:50.402606+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/node_uuid', 'value': '12506333-a81c-4d59-9987-889ed5f8687b', 'op': 'replace'}] GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-2e3c8e3d-a5a5-416a-8893-01e42c73b57c +Openstack-Request-Id: req-f6207cce-0573-4970-9c56-f412b6dae600 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 409 Conflict +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 12506333-a81c-4d59-9987-889ed5f8687b could not be found.\", \"debuginfo\": null}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/address', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-dc16f263-17b5-4bd7-a49f-87fa020c7f88 +Openstack-Request-Id: req-9f4fdb43-5fc3-48ca-914b-9a35e86e2e1b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 404 Not Found +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:51.168970+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/address', 'value': 'invalid-format', 'op': 'replace'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c56363b3-bc7f-4fcb-8c9b-5fab033979d5 +Openstack-Request-Id: req-5a43ff39-8d13-4c09-ab21-fe0817fa470c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-format\", \"debuginfo\": null}"} +PATCH: /v1/portgroups/52:54:00:cf:2d:31 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c56363b3-bc7f-4fcb-8c9b-5fab033979d5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_3_project_admin_can_get_node -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_3_project_admin_can_get_node ... ok -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_unchanged_for_fake_node -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_unchanged_for_fake_node ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_130_nodes_portgroups_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_130_nodes_portgroups_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_128_portgroups_portgroup_ident_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_128_portgroups_portgroup_ident_delete_member ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_validate_fail -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_validate_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_4_project_member_cannot_get_node -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_4_project_member_cannot_get_node ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_vendor_detection -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_vendor_detection ... ok -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details - warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_5_public_api -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_5_public_api ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_129_portgroups_portgroup_ident_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_129_portgroups_portgroup_ident_delete_observer ... ok -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_wrong_provision_state_on_upgrade_lock -ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_wrong_provision_state_on_upgrade_lock ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_131_nodes_portgroups_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_131_nodes_portgroups_get_member ... ok -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_disappears_on_acquire -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_disappears_on_acquire ... ok +{"error_message": "{\"code\": 400, \"title\": \"Bad Request\", \"description\": \"Expected UUID or name for portgroup: 52:54:00:cf:2d:31\"}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5e8ed86c-dd96-4364-8790-0811cead9700 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:19.950172+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", "cpus": "8", "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": 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 -{node_uuid} -driver -fake-hardware -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-5e8ed86c-dd96-4364-8790-0811cead9700 +Openstack-Request-Id: req-ae904bf2-f61a-4962-b0e9-330651cf1116 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:19.950172+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", "cpus": "8", "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": 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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:51.622552+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-698b693f-3357-4121-b579-3946866f406f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-698b693f-3357-4121-b579-3946866f406f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get / -GET: / {} +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +PATCH: /v1/portgroups/pg.1 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f0b51fb2-f982-4fa2-9990-6cd97409c8e9 -{"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.80"}, "versions": [{"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.80"}]} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-f0b51fb2-f982-4fa2-9990-6cd97409c8e9 -{"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.80"}, "versions": [{"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.80"}]} -API ACL Testing Path get /v1 -GET: /v1 {} -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_6_public_api_v1 -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_6_public_api_v1 ... ok -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_in_enroll_on_acquire -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_in_enroll_on_acquire ... ok -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-4a57e9e9-5c15-4adc-aa1e-563e4fcc3803 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-ea6ffe36-79ac-4547-906c-ef7ddb9dcfb5 +Openstack-Request-Id: req-7d9ea631-8b22-4d5b-8ada-410a42928109 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:51.898713+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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/pg.1.json [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byname_with_json +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byname_with_json ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_in_inspecting_allowed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_in_inspecting_allowed ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_191_volume_volume_target_id_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_191_volume_volume_target_id_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_in_inspecting_not_allowed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_in_inspecting_not_allowed ... ok GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-12b698a1-f257-4ca3-9564-3c6c873e3dc1 +Openstack-Request-Id: req-cd9faf8f-e71d-42b0-9dd3-8e88c0b56e85 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/detail -GET: /v1/portgroups/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'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-8fec24e7-767c-442d-ad2e-89bec6dddd3e +Openstack-Request-Id: req-8169f899-6589-417c-8cea-67699119cabb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/detail -GET: /v1/portgroups/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'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-f6eff271-c27c-4561-829d-e27d5270e64f +Openstack-Request-Id: req-88bc8e1b-ab40-4674-99c4-fe6b7641951b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/detail -GET: /v1/portgroups/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'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-ed6e7cfc-602d-4810-b66d-b17215d20f02 +Openstack-Request-Id: req-cb5427e9-9301-49ac-9c2b-88040f7a6710 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d308e6f5-5824-435d-b84b-ce0caecacefa +Openstack-Request-Id: req-a3f430a9-0485-4761-b520-97fd04604c97 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-4ac01548-ef3c-42c4-a7f6-2e9d3e4fa612 +Openstack-Request-Id: req-bdd676bd-9bb7-4809-bd6e-a88db2e51a6d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-dd2a8da3-a3ee-4fcb-b33d-5a3566dc7737 +Openstack-Request-Id: req-9ac97d0c-7ce0-474b-829b-1ba1f51e9fc3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-74cd9b12-075a-4446-95da-8e1ee69248af +Openstack-Request-Id: req-157cdaed-3493-44b1-8dc8-913b9eadd876 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-79504e20-d840-4aa3-bed1-a49d151effb0 +Openstack-Request-Id: req-38945493-4a53-43c5-b50e-ae1b9fd5eb0b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-07e729ba-03be-4b1a-9818-a0b9e670bc23 +Openstack-Request-Id: req-f6502176-8ca7-4d1a-b547-c601e848e8e3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-2c298cbf-a6ed-43f6-ac7e-a4faf2373e10 +Openstack-Request-Id: req-4c4ae6df-5ce4-46b8-9072-4268af26352b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-06b1f75b-2d9a-4ed5-8887-c1644810cef7 +Openstack-Request-Id: req-2d698e2b-f3c8-43d1-807c-3faa8b6d4530 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6a45b1d7-bd06-4f23-a9b3-25bc069a0a08 +Openstack-Request-Id: req-2024ae81-825e-4d04-becd-1aae0d203fad X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_130_nodes_portgroups_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_130_nodes_portgroups_get_admin ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets +GET: /v1/volume/targets {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1d370d62-1ee3-4dd3-be07-78bb0f71f5f2 +Openstack-Request-Id: req-334a142c-01dc-41fb-aad1-15506b832b7e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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.80"}, "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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets +GET: /v1/volume/targets {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_185_volume_targets_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_185_volume_targets_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_invalid_name +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_invalid_name ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_192_volume_volume_target_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_192_volume_volume_target_id_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_186_volume_targets_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_186_volume_targets_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_not_found +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_not_found ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_address_normalized +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_address_normalized ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_187_volume_targets_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_187_volume_targets_post_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_internal_info_not_allowed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_internal_info_not_allowed ... ok +ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_context +ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_context ... ok +ACL Test GOT Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-1d370d62-1ee3-4dd3-be07-78bb0f71f5f2 +Location: http://localhost/v1/volume/targets/94e406fc-87ce-4f3c-a15c-4ff7c7450230 +Openstack-Request-Id: req-4dbb4468-a9e8-4d22-b1b5-6459084209a2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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.80"}, "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"}]} -API ACL Testing Path get /v1/ -GET: /v1/ {} -GOT:Response: 200 OK +{"uuid": "94e406fc-87ce-4f3c-a15c-4ff7c7450230", "created_at": "2024-01-06T14:11:51.437921+00:00", "updated_at": null, "boot_index": 4, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/94e406fc-87ce-4f3c-a15c-4ff7c7450230", "rel": "self"}, {"href": "http://localhost/volume/targets/94e406fc-87ce-4f3c-a15c-4ff7c7450230", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +API ACL Testing Path post /v1/volume/targets +POST: /v1/volume/targets {'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-a820169d-400b-4c65-97e6-c23bff0b97b9 +Openstack-Request-Id: req-e33e6aca-e1af-4922-97a6-e991c896d490 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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.80"}, "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"}]} -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_7_public_api_v1_slash -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_7_public_api_v1_slash ... ok -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_in_power_transition_on_acquire -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_in_power_transition_on_acquire ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_132_nodes_portgroups_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_132_nodes_portgroups_get_reader ... ok -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_locked_on_acquire -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_locked_on_acquire ... ok -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_8_public_api_v1_json -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_8_public_api_v1_json ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_131_nodes_portgroups_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_131_nodes_portgroups_get_member ... ok -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_not_in_maintenance_on_acquire -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_not_in_maintenance_on_acquire ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-825b1def-08fe-4e08-8fdc-73a6fa3c0c14 +Openstack-Request-Id: req-e33e6aca-e1af-4922-97a6-e991c896d490 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/targets +POST: /v1/volume/targets {'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-0ec2ef9e-583a-4385-8719-a2af8f04153e +Openstack-Request-Id: req-fd8711ea-504e-4a7e-a97d-afaf12bbdbe3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0ec2ef9e-583a-4385-8719-a2af8f04153e +Openstack-Request-Id: req-fd8711ea-504e-4a7e-a97d-afaf12bbdbe3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9c1b16da-03ae-4fac-9383-7fde78f7045f +Openstack-Request-Id: req-d5a44cc0-e7b5-4785-8543-fd2bb981aeea X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:52.099277+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"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9c1b16da-03ae-4fac-9383-7fde78f7045f +Openstack-Request-Id: req-d5a44cc0-e7b5-4785-8543-fd2bb981aeea X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:52.099277+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"} +API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-56b1aed7-cb0a-4bd9-ac6b-12a1ea66bf14 +Openstack-Request-Id: req-43dfbe61-c38c-46fd-bf6c-82508afe27b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-56b1aed7-cb0a-4bd9-ac6b-12a1ea66bf14 +Openstack-Request-Id: req-43dfbe61-c38c-46fd-bf6c-82508afe27b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a94ad36e-46ef-44ec-8f03-1629b4590996 +Openstack-Request-Id: req-b31c4de8-9bea-4a93-a0d8-0466b79ebc83 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:52.725493+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/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"} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a94ad36e-46ef-44ec-8f03-1629b4590996 +Openstack-Request-Id: req-b31c4de8-9bea-4a93-a0d8-0466b79ebc83 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} -GOT:Response: 200 OK +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:11:52.725493+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/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"} +API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-074a8f3a-4d64-451c-90fe-ac811c996fc7 +Openstack-Request-Id: req-bf3ed665-a77e-4166-afef-1062b58978d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_193_volume_volume_target_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_193_volume_volume_target_id_patch_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_mode_properties +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_mode_properties ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_188_volume_targets_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_188_volume_targets_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_194_volume_volume_target_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_194_volume_volume_target_id_patch_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_mode_properties_bad_api_version +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_mode_properties_bad_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_189_volume_targets_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_189_volume_targets_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_195_volume_volume_target_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_195_volume_volume_target_id_patch_observer ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-074a8f3a-4d64-451c-90fe-ac811c996fc7 +Openstack-Request-Id: req-20cc31ad-ae84-4e2a-bf55-8c1fd90da9c8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:52.065689+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/address', 'value': 'AA:BB:CC:DD:EE:FF', 'op': 'replace'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-09d3b05b-1ca2-48df-a35c-4b96f2ce9538 +Openstack-Request-Id: req-15e7b301-0299-456d-9caf-b2ca79b5b3fe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.38 +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:52.323385+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/address', 'value': 'AA:BB:CC:DD:EE:FF', 'op': 'replace'}] +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-09d3b05b-1ca2-48df-a35c-4b96f2ce9538 +Openstack-Request-Id: req-452108f0-8de2-4939-9e9a-f3abca2acc87 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_133_nodes_portgroups_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_133_nodes_portgroups_detail_get_admin ... ok -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_not_mapped -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_not_mapped ... ok -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_9_public_api_v1_xml -ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_9_public_api_v1_xml ... ok -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_recovery_failed -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_recovery_failed ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_132_nodes_portgroups_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_132_nodes_portgroups_get_observer ... ok -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_recovery_success -ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_recovery_success ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_001_values -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_001_values ... skipped 'These are fake reference values for YAML templating' -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_134_nodes_portgroups_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_134_nodes_portgroups_detail_get_member ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_already_mapped -ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_already_mapped ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_133_nodes_portgroups_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_133_nodes_portgroups_detail_get_admin ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_good -ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_good ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_135_nodes_portgroups_detail_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_135_nodes_portgroups_detail_get_reader ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_no_free_worker -ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_no_free_worker ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_node_locked -ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_node_locked ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_002_nodes_post_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_002_nodes_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_134_nodes_portgroups_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_134_nodes_portgroups_detail_get_member ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_not_mapped -ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_not_mapped ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_136_ports_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_136_ports_get_admin ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_worker_limit -ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_worker_limit ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_135_nodes_portgroups_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_135_nodes_portgroups_detail_get_observer ... ok -GOT:Response: 200 OK +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}"} +PATCH: /v1/portgroups/pg.1 [{'path': '/name', 'value': 'aa:bb_cc', 'op': 'replace'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-fe04d809-8f67-4a35-80d7-0bd3fe560607 +Openstack-Request-Id: req-8504f1b2-fa4d-403d-94e0-7b67abd1a382 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:22.792614+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup pg.1: Cannot change name to invalid name 'aa:bb_cc'\", \"debuginfo\": null}"} +PATCH: /v1/portgroups/b9236aea-7012-4d7c-8423-f5525baac636 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-fe04d809-8f67-4a35-80d7-0bd3fe560607 +Openstack-Request-Id: req-ed49c345-6dca-4695-92cf-395593a36a77 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:22.792614+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup b9236aea-7012-4d7c-8423-f5525baac636 could not be found.\", \"debuginfo\": null}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'path': '/address', 'value': 'AA:BB:CC:DD:EE:FF', 'op': 'replace'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-7c3c8526-424b-49b2-a109-4a1d4740034a +Openstack-Request-Id: req-722a89b3-899a-43b6-9a58-ffc9f31c4c20 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:23.560571+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -ACL Test GOT Response: 200 OK +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:52.978411+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/internal_info', 'value': False, 'op': 'replace'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-7c3c8526-424b-49b2-a109-4a1d4740034a +Openstack-Request-Id: req-700b3e30-325a-4cc0-976b-714ff2ecc862 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:23.560571+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +{"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}"} +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'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-1afa1a1a-76a7-40db-8ec5-0773bf304eda +Openstack-Request-Id: req-67f7af26-a3d1-48b0-9f1a-21cdf4e07830 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:24.416667+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -ACL Test GOT Response: 200 OK +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:53.310287+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'path': '/mode', 'op': 'add', 'value': '802.3ad'}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-1afa1a1a-76a7-40db-8ec5-0773bf304eda +Openstack-Request-Id: req-bd812219-e138-4730-84ab-49d33bb255b9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:35:24.416667+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} -GOT:Response: 200 OK +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 [{'path': '/properties/abc', 'op': 'add', 'value': 123}] +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-67420397-7495-4b59-b3a1-a3c3cec0d144 +Openstack-Request-Id: req-c8227366-df55-45b4-b81e-c47f4bd55b2a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +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 [{'path': '/standalone_ports_supported', 'value': False, 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_standalone_ports_supported +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_standalone_ports_supported ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_standalone_ports_supported_bad_api_version +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_standalone_ports_supported_bad_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_190_volume_volume_target_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_190_volume_volume_target_id_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_196_volume_volume_target_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_196_volume_volume_target_id_delete_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_191_volume_volume_target_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_191_volume_volume_target_id_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_address_already_exist +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_address_already_exist ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_197_volume_volume_target_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_197_volume_volume_target_id_delete_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_address_normalized +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_address_normalized ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_198_volume_volume_target_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_198_volume_volume_target_id_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_192_volume_volume_target_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_192_volume_volume_target_id_get_observer ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-67420397-7495-4b59-b3a1-a3c3cec0d144 +Openstack-Request-Id: req-b8e9255a-49de-445d-a16d-40fa69abd83c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_137_ports_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_137_ports_get_member ... ok -ACL Test GOT Response: 200 OK +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:53.712660+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 [{'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\": \"\"}"} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-a820169d-400b-4c65-97e6-c23bff0b97b9 +Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +Openstack-Request-Id: req-2148b277-34a3-4de7-9e1c-ebb4f7e9ee53 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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.80"}, "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"}]} -API ACL Testing Path get /v1.json -GET: /v1.json {} -GOT:Response: 200 OK +{"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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} +GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-eabace68-1e5d-48cd-825d-de2f0fa87921 +Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +Openstack-Request-Id: req-73fb4462-b5a0-4d23-910e-52383372ec07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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.80"}, "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"}]} -ACL Test GOT Response: 200 OK +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:54.236519+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {'uuid': 'e898363d-3582-4cb8-b4e5-e0b5c095e6c9', 'name': '2256303c-3312-4a29-8363-cffd30f75ec2', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-eabace68-1e5d-48cd-825d-de2f0fa87921 +Openstack-Request-Id: req-0a3c3fd6-029a-4776-83d6-25c14737c17b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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.80"}, "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"}]} -API ACL Testing Path get /v1.xml -GET: /v1.xml {} -GOT:Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A portgroup with MAC address aa:aa:aa:11:22:33 already exists.\", \"debuginfo\": null}"} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': 'AA:BB:CC:DD:EE:FF', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-da047451-21a7-4bbf-916d-d7bf619f6fc1 +Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +Openstack-Request-Id: req-656266fd-a3b9-4019-997b-c2c539b00ae6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:54.426472+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} +GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:54.426472+00:00', 'updated_at': None, 'address': 'aa:bb:cc:dd:ee:ff', 'extra': {}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_default_mode +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_default_mode ... ok +ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_token +ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_token ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_199_nodes_volume_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_199_nodes_volume_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_doesnt_contain_id +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_doesnt_contain_id ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_193_volume_volume_target_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_193_volume_volume_target_id_patch_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_error +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_error ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_194_volume_volume_target_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_194_volume_volume_target_id_patch_member ... ok ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-da047451-21a7-4bbf-916d-d7bf619f6fc1 +Openstack-Request-Id: req-bf3ed665-a77e-4166-afef-1062b58978d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_003_nodes_post_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_003_nodes_post_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_136_ports_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_136_ports_get_admin ... ok -ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_from_all_nodes_one_pass -ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_from_all_nodes_one_pass ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_138_ports_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_138_ports_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_004_nodes_post_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_004_nodes_post_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_137_ports_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_137_ports_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_139_ports_post_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_139_ports_post_admin ... ok -ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config -ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_138_ports_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_138_ports_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_005_nodes_get_node_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_005_nodes_get_node_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_140_ports_post_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_140_ports_post_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_139_ports_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_139_ports_post_admin ... ok -ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config_two_pass -ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config_two_pass ... ok -GOT:Response: 403 Forbidden +API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-45a538d1-fe0b-4de3-a08d-ea037bb53330 +Openstack-Request-Id: req-e8d51628-154b-42a2-8be7-e5c267c5e227 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-45a538d1-fe0b-4de3-a08d-ea037bb53330 +Openstack-Request-Id: req-e8d51628-154b-42a2-8be7-e5c267c5e227 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-31e89579-7e3f-4f47-be83-10e20b5affc5 +Openstack-Request-Id: req-7ef206d1-96df-40fb-bdd6-3d47e596c680 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-31e89579-7e3f-4f47-be83-10e20b5affc5 +Openstack-Request-Id: req-7ef206d1-96df-40fb-bdd6-3d47e596c680 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1b0495ed-212a-4b4c-9cbf-d32158c7aca0 +Openstack-Request-Id: req-bf12d056-677c-43f7-8ae1-d218794aaddd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:27.383979+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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 -{node_ident} -driver -fake-driverz -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1b0495ed-212a-4b4c-9cbf-d32158c7aca0 +Openstack-Request-Id: req-bf12d056-677c-43f7-8ae1-d218794aaddd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:27.383979+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f03051ed-21f7-42f8-ab8e-4393e6e84aed +Openstack-Request-Id: req-d9d71542-b055-4a27-a6c7-cdb15584917d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_006_nodes_get_node_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_006_nodes_get_node_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_140_ports_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_140_ports_post_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_141_ports_post_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_141_ports_post_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_007_nodes_get_node_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_007_nodes_get_node_observer ... ok -ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config_with_days -ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config_with_days ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_142_ports_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_142_ports_detail_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_141_ports_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_141_ports_post_observer ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f03051ed-21f7-42f8-ab8e-4393e6e84aed -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-95207f58-4502-4aee-817d-5248f087961d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:28.811257+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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 -{node_ident} -driver -fake-driverz -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-95207f58-4502-4aee-817d-5248f087961d +Openstack-Request-Id: req-d9d71542-b055-4a27-a6c7-cdb15584917d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:28.811257+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_008_nodes_get_node_other_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_008_nodes_get_node_other_admin ... ok -ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_pruning_no_work -ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_pruning_no_work ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_142_ports_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_142_ports_detail_get_admin ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-73a25ce9-afad-4161-a528-616a66a7a8a2 +Openstack-Request-Id: req-36aa4a55-5b14-4bce-9b98-59d8882f3283 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-73a25ce9-afad-4161-a528-616a66a7a8a2 +Openstack-Request-Id: req-36aa4a55-5b14-4bce-9b98-59d8882f3283 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d068da27-254c-424a-a222-a8a1f784a5a2 +Openstack-Request-Id: req-004d4b3e-0bec-4b72-9ced-0f4a3e8242d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} +{"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"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d068da27-254c-424a-a222-a8a1f784a5a2 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'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-47b21804-04d9-4100-9a60-477b403d52e9 +Openstack-Request-Id: req-004d4b3e-0bec-4b72-9ced-0f4a3e8242d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 68a552fb-dcd2-43bf-9302-e4c93287be16 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 400 Bad Request +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-47b21804-04d9-4100-9a60-477b403d52e9 +Openstack-Request-Id: req-d38dc6be-2820-4c65-9553-17546d0e270d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 68a552fb-dcd2-43bf-9302-e4c93287be16 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'node_uuid': '22e26c0b-03f2-4d2e-ae87-c02d7f33c000', 'address': '03:04:05:06:07:08'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_200_nodes_volume_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_200_nodes_volume_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_generate_uuid +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_generate_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_201_nodes_volume_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_201_nodes_volume_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_internal_info_not_allowed +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_internal_info_not_allowed ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_195_volume_volume_target_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_195_volume_volume_target_id_patch_observer ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_addr_format +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_addr_format ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_202_nodes_volume_connectors_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_202_nodes_volume_connectors_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_196_volume_volume_target_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_196_volume_volume_target_id_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_203_nodes_volume_connectors_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_203_nodes_volume_connectors_get_member ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-3473a7c8-10f4-4bb5-9fcb-97af3f25485a +Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +Openstack-Request-Id: req-26bf035c-cf58-4616-9424-cc49d7281a6f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +X-Openstack-Ironic-Api-Version: 1.26 +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:54.605656+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {'foo': 123}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-3473a7c8-10f4-4bb5-9fcb-97af3f25485a +Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +Openstack-Request-Id: req-e35f76ec-95b2-4a6b-a9f9-f7da1638067a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} -GOT:Response: 403 Forbidden +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:54.790985+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} +GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:54.790985+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {'foo': 123}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-ac7ff138-b4f7-41a7-9c3e-58f8bea9e51f +Openstack-Request-Id: req-673e9a78-deb1-423d-b1f1-7d00a7143c95 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} +POST: /v1/portgroups {'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-ac7ff138-b4f7-41a7-9c3e-58f8bea9e51f +Location: http://localhost/v1/portgroups/34da5442-6709-458a-9868-e21882f934b3 +Openstack-Request-Id: req-622f339d-9e40-4922-8d06-f167f1109df2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/detail -GET: /v1/ports/detail {} -GOT:Response: 200 OK +{"uuid": "34da5442-6709-458a-9868-e21882f934b3", "created_at": "2024-01-06T14:11:55.263884+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, "links": [{"href": "http://localhost/v1/portgroups/34da5442-6709-458a-9868-e21882f934b3", "rel": "self"}, {"href": "http://localhost/portgroups/34da5442-6709-458a-9868-e21882f934b3", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "ports": [{"href": "http://localhost/v1/portgroups/34da5442-6709-458a-9868-e21882f934b3/ports", "rel": "self"}, {"href": "http://localhost/portgroups/34da5442-6709-458a-9868-e21882f934b3/ports", "rel": "bookmark"}]} +GET: /v1/portgroups/34da5442-6709-458a-9868-e21882f934b3 {} +GOT:{'uuid': '34da5442-6709-458a-9868-e21882f934b3', 'created_at': '2024-01-06T14:11:55.263884+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/34da5442-6709-458a-9868-e21882f934b3', 'rel': 'self'}, {'href': 'http://localhost/portgroups/34da5442-6709-458a-9868-e21882f934b3', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'ports': [{'href': 'http://localhost/v1/portgroups/34da5442-6709-458a-9868-e21882f934b3/ports', 'rel': 'self'}, {'href': 'http://localhost/portgroups/34da5442-6709-458a-9868-e21882f934b3/ports', 'rel': 'bookmark'}]} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'internal_info': 'info'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-3b1412fb-bf11-420d-a050-794698fe3dad +Openstack-Request-Id: req-89ace2bf-60fa-4b44-87de-c5ce76d5df46 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:29.248350+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for portgroup: Additional properties are not allowed ('internal_info' was unexpected)\", \"debuginfo\": null}"} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': 'invalid-format', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-3b1412fb-bf11-420d-a050-794698fe3dad +Openstack-Request-Id: req-c93a2ee0-d092-404d-8bd0-18ccb765119b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:29.248350+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -API ACL Testing Path get /v1/ports/detail -GET: /v1/ports/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-format\", \"debuginfo\": null}"} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ab7afa9f-9672-4747-b2b0-03f02e7bd305 +Openstack-Request-Id: req-1eacd317-1baa-4667-8f02-9e8db6a9cada X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:29.952042+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_143_ports_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_143_ports_detail_get_member ... ok -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.14 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': 'invalid-format'} +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_node_uuid_format +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_node_uuid_format ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_mode_old_api_version +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_mode_old_api_version ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_197_volume_volume_target_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_197_volume_volume_target_id_delete_member ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_mode_properties +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_mode_properties ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_204_nodes_volume_connectors_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_204_nodes_volume_connectors_get_observer ... ok +ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_without_token +ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_without_token ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_name_invalid +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_name_invalid ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_01 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_01 ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_198_volume_volume_target_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_198_volume_volume_target_id_delete_observer ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_02 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_02 ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_name_ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_name_ok ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_03 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_03 ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_205_nodes_volume_targets_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_205_nodes_volume_targets_get_admin ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_04 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_04 ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_05 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_05 ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_no_address +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_no_address ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d36b751a-cf61-42c5-998a-46ffef9edf06 +Openstack-Request-Id: req-86183541-f68e-4a68-9a5e-5047ade3514d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:29.378723+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets +GET: /v1/volume/targets {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d36b751a-cf61-42c5-998a-46ffef9edf06 +Openstack-Request-Id: req-08909c5d-293e-470f-b41b-3b9b2b99d469 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:29.378723+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/targets +POST: /v1/volume/targets {'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-2fa53d45-a98a-43f3-a236-b746709fe0bc +Openstack-Request-Id: req-e0046f3c-4103-4201-81e8-5bb3618b3c59 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "dadc21cf-6559-44c7-a07d-2e6c542db462", "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"}]}]} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_009_nodes_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_009_nodes_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_143_ports_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_143_ports_detail_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_010_nodes_get_other_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_010_nodes_get_other_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_144_ports_detail_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_144_ports_detail_get_reader ... ok -ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_pruning_not_other_conductor -ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_pruning_not_other_conductor ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_144_ports_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_144_ports_detail_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_145_ports_port_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_145_ports_port_id_get_admin ... ok -ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_get_raid_logical_disk_properties -ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_get_raid_logical_disk_properties ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_145_ports_port_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_145_ports_port_id_get_admin ... ok -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/targets +POST: /v1/volume/targets {'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-2fa53d45-a98a-43f3-a236-b746709fe0bc +Openstack-Request-Id: req-29ebcf26-19c6-4e01-a92b-0816c473ec06 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "dadc21cf-6559-44c7-a07d-2e6c542db462", "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"}]}]} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/targets +POST: /v1/volume/targets {'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-e3dc275f-877c-47ed-9693-6342458192bf +Openstack-Request-Id: req-2ffa1279-fbd6-4134-970a-3268309e5b5e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "750464fa-225e-4c5d-b0d7-d9d5de47808f", "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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e3dc275f-877c-47ed-9693-6342458192bf +Openstack-Request-Id: req-7fd12d22-4b3a-4c59-8382-7287ea00742e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "750464fa-225e-4c5d-b0d7-d9d5de47808f", "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"}]}]} -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bd981659-e5b6-4a22-839d-90472659e373 +Openstack-Request-Id: req-fa6951b0-9ff6-4d5b-af95-2b2c2e0b1ed4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:31.381443+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T13:35:31.399837+00:00", "updated_at": "2024-01-06T13:35:31.431673+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "968f2004-c2ce-41f5-b78b-71e0dd9ae798", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "968f2004-c2ce-41f5-b78b-71e0dd9ae798", "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": "2024-01-06T13:35:31.547089+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", "cpus": "8", "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/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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bd981659-e5b6-4a22-839d-90472659e373 +Openstack-Request-Id: req-e78e1afe-3b84-46b6-8609-33e7f310f1bf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:31.381443+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T13:35:31.399837+00:00", "updated_at": "2024-01-06T13:35:31.431673+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "968f2004-c2ce-41f5-b78b-71e0dd9ae798", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "968f2004-c2ce-41f5-b78b-71e0dd9ae798", "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": "2024-01-06T13:35:31.547089+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", "cpus": "8", "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/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"}]}]}ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_011_nodes_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_011_nodes_detail_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_146_ports_port_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_146_ports_port_id_get_member ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-112c3ede-6b29-4db8-9bac-60a0254bcb04 +Openstack-Request-Id: req-7b053035-c0aa-4bff-b1ee-e083c7ec5a21 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-726c9085-b1e6-469f-b793-9e32384566ae +Openstack-Request-Id: req-c2871b5c-cc86-46c0-8097-7209beac36b8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-4843292f-f7ea-4fe5-9e03-9bcf9c715fa4 +Openstack-Request-Id: req-4b05542b-eb4b-456f-abfd-d7b6b383ef3e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-432eecc5-d354-4a33-905a-3649455980cd +Openstack-Request-Id: req-f316bde4-5900-4dac-8a4d-c50529924784 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9d0bc5e4-8034-4a9a-ae1b-50b58c4d74c2 +Openstack-Request-Id: req-227a90a9-ca71-4dc2-96a6-22a69b9a63ce X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9af5437e-b3ae-4e90-9b13-0cbdd632f337 +Openstack-Request-Id: req-7b8a8f2c-871c-4c82-986f-4eaa84a981f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_199_nodes_volume_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_199_nodes_volume_get_admin ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_06 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_06 ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_07 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_07 ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_08 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_08 ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_200_nodes_volume_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_200_nodes_volume_get_member ... ok +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b5467ed7-6bd7-430c-b24f-33f6810ed6ae +Openstack-Request-Id: req-d38dc6be-2820-4c65-9553-17546d0e270d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b2b21d93-a871-4ecd-8e92-05f7dda7c78e +Openstack-Request-Id: req-746eb20b-2cf3-42e5-a416-003bbf42395c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} -GOT:Response: 403 Forbidden +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c27c9f7c-9909-440b-b660-3e9e858296a1 +Openstack-Request-Id: req-746eb20b-2cf3-42e5-a416-003bbf42395c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} -GOT:Response: 403 Forbidden +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5d77b7b2-f81f-48d9-8a84-113316b7f10c +Openstack-Request-Id: req-487d405b-83a5-4378-a7eb-5b84e05cb153 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} -GOT:Response: 403 Forbidden +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-08f41ba2-5b31-41c6-8a9c-41be31852ffe +Openstack-Request-Id: req-487d405b-83a5-4378-a7eb-5b84e05cb153 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} -GOT:Response: 403 Forbidden +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-52fed341-4522-4386-91ac-ab1fced4c28d +Openstack-Request-Id: req-0a204e90-a351-4f7f-8f68-383790d1e8c6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/detail -GET: /v1/ports/detail {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a74ae70f-5d88-4c1e-870f-120b510db542 +Openstack-Request-Id: req-0a204e90-a351-4f7f-8f68-383790d1e8c6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/detail -GET: /v1/ports/detail {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b1163ff1-0181-49bb-aee8-aeaf201b1bc0 +Openstack-Request-Id: req-57cffd2e-782c-4f33-80e4-678d1dd5dd13 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/detail -GET: /v1/ports/detail {} -GOT:Response: 403 Forbidden +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6d21d838-e40b-460d-9479-513652868f22 +Openstack-Request-Id: req-57cffd2e-782c-4f33-80e4-678d1dd5dd13 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-cefeb949-97ce-4073-8cc3-3c627f583103 +Openstack-Request-Id: req-4c0e75a1-4c0c-4183-b18c-9506d63ccff9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_146_ports_port_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_146_ports_port_id_get_member ... ok -ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_get_raid_logical_disk_properties_iface_not_supported -ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_get_raid_logical_disk_properties_iface_not_supported ... ok +{"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"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ab7afa9f-9672-4747-b2b0-03f02e7bd305 +Openstack-Request-Id: req-4c0e75a1-4c0c-4183-b18c-9506d63ccff9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:29.952042+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -API ACL Testing Path get /v1/ports/detail -GET: /v1/ports/detail {} -GOT:Response: 200 OK +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_206_nodes_volume_targets_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_206_nodes_volume_targets_get_member ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_09 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_09 ... ok +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-b05aa629-93a7-4563-8c3a-6aba0fa72437 +Openstack-Request-Id: req-98bee239-273f-4741-981b-3a132f01273a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:30.757624+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for node_uuid: invalid-format\", \"debuginfo\": null}"} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'mode': '802.3ad', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-b05aa629-93a7-4563-8c3a-6aba0fa72437 +Openstack-Request-Id: req-8f662f48-c4e2-4e80-a44d-5771210e3b72 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:30.757624+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.25 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'properties': {'bond_prop': 123}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 406 Not Acceptable Content-Type: application/json -Openstack-Request-Id: req-abb77dab-72e0-4161-979c-c016652a9881 +Openstack-Request-Id: req-b02f6d87-3c7d-47f0-bd48-804074f32428 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:31.456600+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -ACL Test GOT Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.25 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'mode': '802.3ad', 'properties': {'bond_prop': 123}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-abb77dab-72e0-4161-979c-c016652a9881 +Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +Openstack-Request-Id: req-3c1cbe39-4b7d-472d-983e-8d6c84b6cffa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:31.456600+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 200 OK +X-Openstack-Ironic-Api-Version: 1.26 +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:56.082131+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'aa:bb_cc', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-a9113323-864a-455c-b523-efa2d0de7cae +Openstack-Request-Id: req-364b1cfa-3882-4bc1-8e1e-95fcea085a5f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:32.008784+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create portgroup with invalid name 'aa:bb_cc'\", \"debuginfo\": null}"} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'foo', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-a9113323-864a-455c-b523-efa2d0de7cae +Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +Openstack-Request-Id: req-df679dc0-5132-4d4d-b2a5-f727a53820ea X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:32.008784+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 200 OK +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:56.351574+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} +GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:56.351574+00:00', 'updated_at': None, 'address': 'aa:aa:aa:11:22:33', 'extra': {}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'foo', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-1e4d895c-aa5d-4d9d-b2d7-7b771370ce2a +Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +Openstack-Request-Id: req-e8030f80-4b90-4f4a-a447-6dd5746e01ce X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:32.665381+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_147_ports_port_id_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_147_ports_port_id_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_147_ports_port_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_147_ports_port_id_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_012_nodes_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_012_nodes_detail_get_member ... ok -ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config -ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_148_ports_port_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_148_ports_port_id_patch_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_148_ports_port_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_148_ports_port_id_patch_admin ... ok -ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_empty -ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_empty ... ok -ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_iface_not_supported -ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_iface_not_supported ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_149_ports_port_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_149_ports_port_id_patch_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_149_ports_port_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_149_ports_port_id_patch_member ... ok - -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} -GOT:Response: 403 Forbidden +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:56.514065+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} +GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:56.514065+00:00', 'updated_at': None, 'address': None, 'extra': {}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_no_mandatory_field_node_uuid +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_no_mandatory_field_node_uuid ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_node_uuid_not_found +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_node_uuid_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_207_nodes_volume_targets_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_207_nodes_volume_targets_get_observer ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_10 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_10 ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_v123 +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_v123 ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_11 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_11 ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_12 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_12 ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_201_nodes_volume_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_201_nodes_volume_get_observer ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_13 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_13 ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_valid_extra +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_valid_extra ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_208_drivers_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_208_drivers_get_admin ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_14 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_14 ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_15 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_15 ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_with_hyphens_delimiter +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_with_hyphens_delimiter ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_202_nodes_volume_connectors_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_202_nodes_volume_connectors_get_admin ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_16 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_16 ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_209_drivers_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_209_drivers_get_member ... ok +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_17 +ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_17 ... ok +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_node_uuid_to_node_id_mapping +ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_node_uuid_to_node_id_mapping ... ok +ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_access_forbidden +ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_access_forbidden ... ok +ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_passes +ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_passes ... ok +ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_policy_not_registered +ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_policy_not_registered ... ok +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c02c9f3d-a5e3-49f7-969a-9d6c094cbf36 +Openstack-Request-Id: req-1e59bab1-08d6-4414-ba5c-58b3c541b6ec X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for portgroup: 'node_uuid' is a required property\", \"debuginfo\": null}"} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c02c9f3d-a5e3-49f7-969a-9d6c094cbf36 +Openstack-Request-Id: req-fe652bf5-d325-4413-92da-b683f7c96b98 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e could not be found.\", \"debuginfo\": null}"} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-e91800d8-f748-4938-be65-853b3dddc83f +Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +Openstack-Request-Id: req-d1d8ce35-648e-4c6b-b020-7a2f69078883 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:33.678035+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T13:35:33.701258+00:00", "updated_at": "2024-01-06T13:35:33.741424+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "a50ad058-780b-4b62-9625-a9b68265e0bf", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "a50ad058-780b-4b62-9625-a9b68265e0bf", "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": "2024-01-06T13:35:33.857990+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", "cpus": "8", "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/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"}]}]} -ACL Test GOT Response: 200 OK +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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} +GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2000-01-01T00:00:00+00:00', 'updated_at': None, 'address': '52:54:00:cf:2d:31', 'extra': {}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', '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, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-e91800d8-f748-4938-be65-853b3dddc83f +Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +Openstack-Request-Id: req-e4c93762-703d-4601-afa4-72b24a292673 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:33.678035+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T13:35:33.701258+00:00", "updated_at": "2024-01-06T13:35:33.741424+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "a50ad058-780b-4b62-9625-a9b68265e0bf", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "a50ad058-780b-4b62-9625-a9b68265e0bf", "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": "2024-01-06T13:35:33.857990+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", "cpus": "8", "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/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"}]}]}ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_013_nodes_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_013_nodes_detail_get_observer ... ok -ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_invalid_parameter_value -ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_invalid_parameter_value ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_014_nodes_node_ident_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_014_nodes_node_ident_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_150_ports_port_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_150_ports_port_id_patch_observer ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_async -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_async ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_150_ports_port_id_patch_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_150_ports_port_id_patch_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_015_nodes_node_ident_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_015_nodes_node_ident_get_member ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_driver_not_found -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_driver_not_found ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_151_ports_port_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_151_ports_port_id_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_151_ports_port_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_151_ports_port_id_delete_admin ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_http_method_not_supported -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_http_method_not_supported ... ok - -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 200 OK +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:57.229602+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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 {} +GOT:{'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'created_at': '2024-01-06T14:11:57.229602+00:00', 'updated_at': None, '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'}}, 'internal_info': {}, 'mode': 'active-backup', 'name': 'fooname', 'properties': {}, 'standalone_ports_supported': True, 'links': [{'href': 'http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'self'}, {'href': 'http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'rel': 'bookmark'}], 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', '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 {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52-54-00-cf-2d-31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-a9b4c76f-6471-4003-898f-918b4a61d003 +Openstack-Request-Id: req-c0c7e4d0-6af5-4a45-b847-75ec6cdf5098 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:34.565407+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: 52-54-00-cf-2d-31\", \"debuginfo\": null}"} +POST: /v1/portgroups {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-a9b4c76f-6471-4003-898f-918b4a61d003 +Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +Openstack-Request-Id: req-1cd5868d-d255-473d-a94a-0fe573875a85 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:34.565407+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:11:57.530417+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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/ {} +ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_max_version +ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_max_version ... ok +ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_min_version +ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_min_version ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_203_nodes_volume_connectors_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_203_nodes_volume_connectors_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_210_drivers_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_210_drivers_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_route_checks_version +ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_route_checks_version ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_no_add_root_attr +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_no_add_root_attr ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_211_drivers_driver_name_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_211_drivers_driver_name_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_remove_non_existent +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_remove_non_existent ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_204_nodes_volume_connectors_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_204_nodes_volume_connectors_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_replace_non_existent_list_item +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_replace_non_existent_list_item ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_check_for_invalid_fields +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_check_for_invalid_fields ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_check_for_invalid_fields_fail +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_check_for_invalid_fields_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_212_drivers_driver_name_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_212_drivers_driver_name_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_multiple_success +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_multiple_success ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_205_nodes_volume_targets_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_205_nodes_volume_targets_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_no_path +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_no_path ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_remove +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_remove ... ok +ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_config_file +ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_config_file ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_success +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_success ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_213_drivers_driver_name_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_213_drivers_driver_name_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_replace +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_replace ... ok +ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_namespace +ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_namespace ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_206_nodes_volume_targets_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_206_nodes_volume_targets_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_similar_subpath +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_similar_subpath ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_subpath_success +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_subpath_success ... ok +ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_no_args +ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_no_args ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_success +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_success ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_214_drivers_properties_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_214_drivers_properties_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_similar_subpath +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_similar_subpath ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_grub_mac_path +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_grub_mac_path ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_207_nodes_volume_targets_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_207_nodes_volume_targets_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_subpath_success +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_subpath_success ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_ip_address_path +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_ip_address_path ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_success +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_success ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_mac_path +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_mac_path ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patch_update_changed_fields +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patch_update_changed_fields ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patch_validate_allowed_fields +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patch_validate_allowed_fields ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_mac_path_ipxe +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_mac_path_ipxe ... ok GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6f86ed72-ee0a-4108-bded-c482082f856a +Openstack-Request-Id: req-2e7cdd37-d32b-45cd-9c42-e37bedca808d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6f86ed72-ee0a-4108-bded-c482082f856a +Openstack-Request-Id: req-2e7cdd37-d32b-45cd-9c42-e37bedca808d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_016_nodes_node_ident_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_016_nodes_node_ident_get_observer ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_method_not_supported -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_method_not_supported ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_152_ports_port_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_152_ports_port_id_delete_member ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_no_default_interface -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_no_default_interface ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_152_ports_port_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_152_ports_port_id_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_153_ports_port_id_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_153_ports_port_id_delete_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_017_nodes_node_ident_patch_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_017_nodes_node_ident_patch_admin ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_sync -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_sync ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_153_ports_port_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_153_ports_port_id_delete_observer ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_validation_failed -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_validation_failed ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_154_nodes_ports_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_154_nodes_ports_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_018_nodes_node_ident_patch_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_018_nodes_node_ident_patch_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_154_nodes_ports_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_154_nodes_ports_get_admin ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_driver_vendor_passthru_methods -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_driver_vendor_passthru_methods ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_driver_vendor_passthru_methods_no_default_interface -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_driver_vendor_passthru_methods_no_default_interface ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_155_nodes_ports_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_155_nodes_ports_get_member ... ok +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-99af06b3-e800-4686-8db8-dbe4bc75094c +Openstack-Request-Id: req-215abe28-af2d-47b1-8877-89db8ab011c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:36.017576+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +{"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"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-99af06b3-e800-4686-8db8-dbe4bc75094c -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T13:35:36.017576+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-5defad51-a3e6-4e77-9302-a122dfa6602a +Openstack-Request-Id: req-215abe28-af2d-47b1-8877-89db8ab011c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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"}]} +API ACL Testing Path get /v1/drivers +GET: /v1/drivers {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5defad51-a3e6-4e77-9302-a122dfa6602a +Openstack-Request-Id: req-713a9d2d-8a19-45dc-8860-71fe533884c4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"drivers": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-73b27027-dbcf-4bae-ad68-bd3c58f0af76 +Openstack-Request-Id: req-713a9d2d-8a19-45dc-8860-71fe533884c4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"drivers": []} +API ACL Testing Path get /v1/drivers +GET: /v1/drivers {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-73b27027-dbcf-4bae-ad68-bd3c58f0af76 +Openstack-Request-Id: req-5ad7c1a7-9e65-4897-bed8-04e07405e07d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_019_nodes_node_ident_patch_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_019_nodes_node_ident_patch_observer ... ok -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1e4d895c-aa5d-4d9d-b2d7-7b771370ce2a +Openstack-Request-Id: req-5ad7c1a7-9e65-4897-bed8-04e07405e07d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:32.665381+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers +GET: /v1/drivers {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d151b46c-6f89-4f12-b1a6-bdda16765479 +Openstack-Request-Id: req-9adf525d-a5f8-40d9-9938-d07f8f46ed09 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"drivers": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d151b46c-6f89-4f12-b1a6-bdda16765479 +Openstack-Request-Id: req-9adf525d-a5f8-40d9-9938-d07f8f46ed09 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +{"drivers": []} +API ACL Testing Path get /v1/drivers/fake-driverz +GET: /v1/drivers/fake-driverz {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-04c0afc1-1870-4574-a402-6e5e8e8dc09c +Openstack-Request-Id: req-97f998ac-fc0a-4289-9c45-b923f4cb4e6a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-04c0afc1-1870-4574-a402-6e5e8e8dc09c +Openstack-Request-Id: req-97f998ac-fc0a-4289-9c45-b923f4cb4e6a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz +GET: /v1/drivers/fake-driverz {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-43007e47-04f0-4440-80c8-39a3199932df +Openstack-Request-Id: req-e590663d-1e37-4c7a-bcd5-b123d6d46191 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-43007e47-04f0-4440-80c8-39a3199932df +Openstack-Request-Id: req-e590663d-1e37-4c7a-bcd5-b123d6d46191 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz +GET: /v1/drivers/fake-driverz {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ab709973-9619-43f4-9de9-672a4cf6c9ac +Openstack-Request-Id: req-f6a41efc-a325-4348-87d9-caa3a74b3c82 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ab709973-9619-43f4-9de9-672a4cf6c9ac +Openstack-Request-Id: req-f6a41efc-a325-4348-87d9-caa3a74b3c82 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/properties +GET: /v1/drivers/fake-driverz/properties {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-40f32e55-9c20-4104-b3d3-c88832e6360b +Openstack-Request-Id: req-c6681d8f-f0d9-4d5b-9e50-08b9fb5b41c2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-40f32e55-9c20-4104-b3d3-c88832e6360b +Openstack-Request-Id: req-c6681d8f-f0d9-4d5b-9e50-08b9fb5b41c2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/properties +GET: /v1/drivers/fake-driverz/properties {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_215_drivers_properties_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_215_drivers_properties_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patched_validate_with_schema +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patched_validate_with_schema ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_208_drivers_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_208_drivers_get_admin ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__link_ip_address_pxe_configs +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__link_ip_address_pxe_configs ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_sanitize_dict +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_sanitize_dict ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_validate_limit +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_validate_limit ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_validate_sort_dir +ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_validate_sort_dir ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_216_drivers_properties_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_216_drivers_properties_get_observer ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_infiniband_mac_pxe_configs +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_infiniband_mac_pxe_configs ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_209_drivers_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_209_drivers_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_no_port +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_no_port ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_mac_ipxe_configs +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_mac_ipxe_configs ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_no_port_policy_forbidden +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_no_port_policy_forbidden ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_policy_notfound +ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_policy_notfound ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_210_drivers_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_210_drivers_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_217_drivers_raid_logical_disk_properties_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_217_drivers_raid_logical_disk_properties_get_admin ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_mac_pxe_configs +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_mac_pxe_configs ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_check_policy +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_check_policy ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_check_policy_forbidden +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_check_policy_forbidden ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_driver_vendor_passthru_async +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_driver_vendor_passthru_async ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_211_drivers_driver_name_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_211_drivers_driver_name_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_218_drivers_raid_logical_disk_properties_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_218_drivers_raid_logical_disk_properties_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_driver_vendor_passthru_sync +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_driver_vendor_passthru_sync ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_get_controller_reserved_names +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_get_controller_reserved_names ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_method_not_specified +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_method_not_specified ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_instance_info +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_instance_info ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_async +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_async ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_212_drivers_driver_name_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_212_drivers_driver_name_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_219_drivers_raid_logical_disk_properties_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_219_drivers_raid_logical_disk_properties_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_mac_address +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_mac_address ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach_byte_to_byte +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach_byte_to_byte ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach_unicode_to_byte +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach_unicode_to_byte ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_no_ipaddress +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_no_ipaddress ... ok +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_sync +ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_sync ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_220_drivers_vendor_passthru_methods_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_220_drivers_vendor_passthru_methods_get_admin ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_already_exists +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_already_exists ... ok GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a31ce362-3080-4181-b742-6673e6ebad9f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-a31ce362-3080-4181-b742-6673e6ebad9f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-350e6c75-a12c-4b8d-95d6-31e0fc39dd92 +Openstack-Request-Id: req-18ceb415-50f1-4a13-a3f5-ea477c021c61 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-350e6c75-a12c-4b8d-95d6-31e0fc39dd92 +Openstack-Request-Id: req-06876040-f2c1-4f0f-9b7a-3743511b4422 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_155_nodes_ports_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_155_nodes_ports_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_156_nodes_ports_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_156_nodes_ports_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_156_nodes_ports_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_156_nodes_ports_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_020_nodes_node_ident_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_020_nodes_node_ident_delete_admin ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_node_vendor_passthru_methods -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_node_vendor_passthru_methods ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_157_nodes_ports_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_157_nodes_ports_detail_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_157_nodes_ports_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_157_nodes_ports_detail_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_021_nodes_node_ident_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_021_nodes_node_ident_delete_member ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_async -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_async ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_158_nodes_ports_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_158_nodes_ports_detail_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_158_nodes_ports_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_158_nodes_ports_detail_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_022_nodes_node_ident_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_022_nodes_node_ident_delete_observer ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_http_method_not_supported -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_http_method_not_supported ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_159_nodes_ports_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_159_nodes_ports_detail_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_023_nodes_validate_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_023_nodes_validate_get_admin ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-29ff990b-33d8-4cca-b781-6ccb9c544a57 +Openstack-Request-Id: req-1f7f187c-e972-4b89-8d0b-fc7da246f89a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-29ff990b-33d8-4cca-b781-6ccb9c544a57 +Openstack-Request-Id: req-809caf00-767c-423e-a8f4-addf9e5c8fda X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8facbfb5-b9bd-43b9-9b4c-da13fd8a410d +Openstack-Request-Id: req-8218c42b-e057-4d1b-b869-44b9733d4fb9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8facbfb5-b9bd-43b9-9b4c-da13fd8a410d +Openstack-Request-Id: req-aea90187-5936-4545-9265-bbe4d23dd15d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9cd0184a-220d-4eac-a21a-d1e2584dcfe2 +Openstack-Request-Id: req-c76677e6-20eb-42e2-b295-0ceec7867a91 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:40.042618+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9cd0184a-220d-4eac-a21a-d1e2584dcfe2 +Openstack-Request-Id: req-a445687b-92d9-4b7f-9a46-0775b5004aa2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:40.042618+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f505f023-289e-4a5e-abfc-89e235b83dcf +Openstack-Request-Id: req-65b84596-d5bd-43c9-834a-852e9fcf27ea X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:40.533036+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers +GET: /v1/drivers {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-f505f023-289e-4a5e-abfc-89e235b83dcf +Openstack-Request-Id: req-8a616d9d-c838-4318-b5ab-fab8a0f281fc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:40.533036+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers +GET: /v1/drivers {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-28ff327b-2111-424a-9a46-dddef25cb6a3 +Openstack-Request-Id: req-88929303-80e4-4db7-b618-b677c946e33b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:41.064676+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_159_nodes_ports_detail_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_159_nodes_ports_detail_get_reader ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_missing_method_parameters -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_missing_method_parameters ... ok -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers +GET: /v1/drivers {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-004a77f5-21d3-46e1-ab36-138e83a7b730 +Openstack-Request-Id: req-2deba21a-865b-406d-9932-77e72adfd9d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz +GET: /v1/drivers/fake-driverz {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-7fc7ae6a-9e91-40d3-b593-7f2612e3a3c6 +Openstack-Request-Id: req-004f960c-68d0-4594-b3d3-c9d0f7ce2390 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz +GET: /v1/drivers/fake-driverz {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-56439735-a229-45ec-9793-0b79e5c4fa80 +Openstack-Request-Id: req-bd51f3d0-09c0-429e-b17b-e3987a898cb6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz +GET: /v1/drivers/fake-driverz {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_213_drivers_driver_name_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_213_drivers_driver_name_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_multi +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_multi ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_copy_file_different +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_copy_file_different ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_221_drivers_vendor_passthru_methods_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_221_drivers_vendor_passthru_methods_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_id +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_id ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_214_drivers_properties_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_214_drivers_properties_get_admin ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_fallback +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_fallback ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_uuid +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_uuid ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_215_drivers_properties_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_215_drivers_properties_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_222_drivers_vendor_passthru_methods_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_222_drivers_vendor_passthru_methods_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_uuid_invalid_type +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_uuid_invalid_type ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_existing_dirs_bios +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_existing_dirs_bios ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_root +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_root ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_223_drivers_vendor_passthru_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_223_drivers_vendor_passthru_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_216_drivers_properties_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_216_drivers_properties_get_observer ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_existing_dirs_uefi +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_existing_dirs_uefi ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_set_dir_permission +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_set_dir_permission ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_217_drivers_raid_logical_disk_properties_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_217_drivers_raid_logical_disk_properties_get_admin ... ok +GOT:{'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.80'}, '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'}]} +GET: /v1/ {} +GOT:{'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.80'}} +GET: /v1/ {} +GOT:{'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.80'}} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'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-888e0481-540a-41e6-8403-0d49c7d8e00d +Openstack-Request-Id: req-3fa2ef60-5ae4-4da1-a92a-b033d334c45c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:12:00.486032+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"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'value': '1', 'op': 'add'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-cfbfe811-fbf7-4af6-9bf6-cadbff2e9a7a +Openstack-Request-Id: req-469b9da2-8cf3-40ed-a409-628545610ec8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-13a81c9c-401d-4196-b6b5-214506e646db +Openstack-Request-Id: req-ac56ef78-0b92-4bf6-8694-6a1792c5db8c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:12:00.769145+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"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': 123, 'op': 'add'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-d2977908-d715-40cf-ac3d-9bb244ea0fc8 +Openstack-Request-Id: req-772b8069-f2dc-4268-8cf9-3650a6a1fefa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a UUID for node_uuid, but received 123.\", \"debuginfo\": null}"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/connector_id', 'value': 'test-connector-id-123', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-dcaef97c-01fc-44ec-bd5b-c25b954a5d36 +Openstack-Request-Id: req-6a3a61f2-baf7-4d34-8068-b96d82aad912 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:12:01.081236+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"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/foo', 'value': 'bar', 'op': 'add'}] +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_root_non_existent +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_root_non_existent ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_mandatory_field +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_mandatory_field ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-42ad7ea7-2298-42e3-a007-197e9d2afb88 +Openstack-Request-Id: req-80296524-122e-4c30-83ab-05ad19ef5ee4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get_properties\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8edbcb4c-1c37-4f63-9327-7235af7106f5 +Openstack-Request-Id: req-80296524-122e-4c30-83ab-05ad19ef5ee4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get_properties\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/properties +GET: /v1/drivers/fake-driverz/properties {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-fc6e6bae-b948-4ec8-95ad-d0b5b37c77be +Openstack-Request-Id: req-984acae8-ff51-4b02-95cf-6c1bf8dde251 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f9b3fba2-cff3-4885-92ee-a5c36a8b7783 +Openstack-Request-Id: req-984acae8-ff51-4b02-95cf-6c1bf8dde251 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties +GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7629258b-192c-4279-952d-2f44e19f55dd +Openstack-Request-Id: req-ef583f17-2578-433c-9d5b-44aa2b319826 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1f11f4c9-d2ca-4e65-bf52-8a8c9f87a4ea +Openstack-Request-Id: req-ef583f17-2578-433c-9d5b-44aa2b319826 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_160_portgroups_ports_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_160_portgroups_ports_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_160_portgroups_ports_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_160_portgroups_ports_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_024_nodes_validate_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_024_nodes_validate_get_member ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_node_already_locked -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_node_already_locked ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_161_portgroups_ports_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_161_portgroups_ports_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_161_portgroups_ports_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_161_portgroups_ports_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_025_nodes_validate_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_025_nodes_validate_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_162_portgroups_ports_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_162_portgroups_ports_get_observer ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_shared_lock -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_shared_lock ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_162_portgroups_ports_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_162_portgroups_ports_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_026_nodes_maintenance_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_026_nodes_maintenance_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_163_portgroups_ports_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_163_portgroups_ports_detail_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_163_portgroups_ports_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_163_portgroups_ports_detail_get_admin ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_sync -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_sync ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_164_portgroups_ports_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_164_portgroups_ports_detail_get_member ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties +GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b752bd74-04ec-48aa-af79-518c76f7ccdb +Openstack-Request-Id: req-bf05c7cd-9c4c-43e7-a0ca-3ac84d5918fa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get_raid_logical_disk_properties\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b752bd74-04ec-48aa-af79-518c76f7ccdb +Openstack-Request-Id: req-bf05c7cd-9c4c-43e7-a0ca-3ac84d5918fa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get_raid_logical_disk_properties\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties +GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-61175f56-8c91-4906-b064-e6b3627056a2 +Openstack-Request-Id: req-a5825ada-3790-4029-9b9e-25bdcbdf517c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-61175f56-8c91-4906-b064-e6b3627056a2 +Openstack-Request-Id: req-a5825ada-3790-4029-9b9e-25bdcbdf517c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods +GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8a8de76e-31c6-42c9-abc2-520712818a46 +Openstack-Request-Id: req-85daf6fd-28d5-46df-a1e9-3406695933c5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8a8de76e-31c6-42c9-abc2-520712818a46 +Openstack-Request-Id: req-85daf6fd-28d5-46df-a1e9-3406695933c5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods +GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fe3ae64a-74e8-461c-a6c4-7dea7cca4d79 +Openstack-Request-Id: req-465139e5-3243-49a6-86cc-67f48822e832 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fe3ae64a-74e8-461c-a6c4-7dea7cca4d79 +Openstack-Request-Id: req-465139e5-3243-49a6-86cc-67f48822e832 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods +GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-12ea2b42-4148-4054-a2b7-275ff92e8c7b +Openstack-Request-Id: req-0606e4e5-9eb3-4a37-8ec7-3237ba6e0750 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-12ea2b42-4148-4054-a2b7-275ff92e8c7b +Openstack-Request-Id: req-0606e4e5-9eb3-4a37-8ec7-3237ba6e0750 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test +GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-584ecb7c-031c-43c1-aca2-5c4f21e2b898 +Openstack-Request-Id: req-b62d2e8d-987e-424c-beaa-48cc50a3962b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-584ecb7c-031c-43c1-aca2-5c4f21e2b898 +Openstack-Request-Id: req-b62d2e8d-987e-424c-beaa-48cc50a3962b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_224_drivers_vendor_passthru_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_224_drivers_vendor_passthru_get_member ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_grub +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_grub ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_225_drivers_vendor_passthru_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_225_drivers_vendor_passthru_get_observer ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_multi +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_multi ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_ipxe +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_ipxe ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_218_drivers_raid_logical_disk_properties_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_218_drivers_raid_logical_disk_properties_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_node_id +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_node_id ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_226_drivers_vendor_passthru_post_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_226_drivers_vendor_passthru_post_admin ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_mac_address +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_mac_address ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_219_drivers_raid_logical_disk_properties_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_219_drivers_raid_logical_disk_properties_get_observer ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_grub_config +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_grub_config ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_non_existent_property_fail +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_non_existent_property_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_227_drivers_vendor_passthru_post_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_227_drivers_vendor_passthru_post_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_uuid +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_uuid ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_anaconda +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_anaconda ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_220_drivers_vendor_passthru_methods_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_220_drivers_vendor_passthru_methods_get_admin ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_connector_id_already_exist +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_connector_id_already_exist ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_iso +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_iso ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_228_drivers_vendor_passthru_post_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_228_drivers_vendor_passthru_post_observer ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_invalid_power_state +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_invalid_power_state ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_ramdisk +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_ramdisk ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_221_drivers_vendor_passthru_methods_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_221_drivers_vendor_passthru_methods_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_229_drivers_vendor_passthru_put_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_229_drivers_vendor_passthru_put_admin ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_multi +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_multi ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_id +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_id ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_222_drivers_vendor_passthru_methods_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_222_drivers_vendor_passthru_methods_get_observer ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config_multipath +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config_multipath ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_230_drivers_vendor_passthru_put_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_230_drivers_vendor_passthru_put_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_uuid +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_uuid ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config_no_extra_volumes +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config_no_extra_volumes ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_223_drivers_vendor_passthru_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_223_drivers_vendor_passthru_get_admin ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_script +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_script ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_231_drivers_vendor_passthru_put_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_231_drivers_vendor_passthru_put_observer ... ok +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-384a3fc4-e7df-42db-b7e6-a94f1d7bb2ff +Openstack-Request-Id: req-754ad225-1089-4d99-af5d-008a749777f4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/value', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-384a3fc4-e7df-42db-b7e6-a94f1d7bb2ff +Openstack-Request-Id: req-641c4dc6-cf03-463f-9dd0-766a7c2bbe99 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /value. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo1', 'op': 'remove'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9e3a1d78-a688-4f41-aeac-e5ff2c4d7336 +Openstack-Request-Id: req-c5226161-f9b4-4464-a5a1-d21ebbf14afe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:12:01.569970+00:00", "updated_at": "2024-01-06T14:12:01.585354+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 [{'path': '/extra', 'op': 'remove'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9e3a1d78-a688-4f41-aeac-e5ff2c4d7336 +Openstack-Request-Id: req-45a1b12c-cc85-454a-a0ab-751ab5c57617 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:12:01.569970+00:00", "updated_at": "2024-01-06T14:12:01.585354+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"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-acf1eb2d-9ed6-47ec-b56f-67905466ab9e +Openstack-Request-Id: req-a7e68d8a-4daf-40a4-afd0-39f8a5771202 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_027_nodes_maintenance_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_027_nodes_maintenance_put_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_164_portgroups_ports_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_164_portgroups_ports_detail_get_member ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_unsupported_method -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_unsupported_method ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_165_portgroups_ports_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_165_portgroups_ports_detail_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_028_nodes_maintenance_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_028_nodes_maintenance_put_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_165_portgroups_ports_detail_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_165_portgroups_ports_detail_get_reader ... ok -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_worker_pool_full -ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_worker_pool_full ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_166_volume_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_166_volume_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_029_nodes_maintenance_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_029_nodes_maintenance_delete_admin ... ok -ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_exclusive -ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_exclusive ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_167_volume_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_167_volume_get_member ... ok -ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_interface_check -ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_interface_check ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_030_nodes_maintenance_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_030_nodes_maintenance_delete_member ... ok -ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_limit -ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_limit ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_168_volume_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_168_volume_get_observer ... ok -ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_never_run -ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_never_run ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_031_nodes_maintenance_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_031_nodes_maintenance_delete_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_166_volume_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_166_volume_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_169_volume_connectors_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_169_volume_connectors_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_032_nodes_management_boot_device_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_032_nodes_management_boot_device_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_170_volume_connectors_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_170_volume_connectors_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_167_volume_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_167_volume_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_033_nodes_management_boot_device_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_033_nodes_management_boot_device_put_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_171_volume_connectors_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_171_volume_connectors_get_observer ... ok -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/non-existent', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-28ff327b-2111-424a-9a46-dddef25cb6a3 +Openstack-Request-Id: req-8f045abf-2257-40d5-b6d2-9b0716c16a42 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:41.064676+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove a non-existent object 'non-existent'\", \"debuginfo\": null}"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/uuid', 'op': 'remove'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-c281ca69-e655-44f6-906a-43e6edc5470c +Openstack-Request-Id: req-15fb84f0-1e97-4d55-8bc5-b76de8139a22 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/connector_id', 'value': 'test-connector-id-123', 'op': 'replace'}] +GOT:Response: 409 Conflict Content-Type: application/json -Openstack-Request-Id: req-c281ca69-e655-44f6-906a-43e6edc5470c +Openstack-Request-Id: req-1c9dccd3-e1da-4f16-9489-ad349f95aa89 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A volume connector with type None and connector ID test-connector-id-123 already exists.\", \"debuginfo\": null}"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/connector_id', 'value': 'test-connector-id-123', 'op': 'replace'}] +GOT:Response: 400 Bad Request +Content-Type: application/json +Openstack-Request-Id: req-716dfcee-43e4-4a36-970b-224d090f692d +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'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-cc5cba23-a03a-4378-87fc-d411181b17a6 +Openstack-Request-Id: req-a0b6846c-e3a8-4e3a-a912-013cfb877e8d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -ACL Test GOT Response: 200 OK +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:12:02.510818+00:00", "updated_at": "2024-01-06T14:12:02.520650+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"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_id', 'value': '1', 'op': 'replace'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-cc5cba23-a03a-4378-87fc-d411181b17a6 +Openstack-Request-Id: req-87f7fe6f-cdf8-489c-a1ce-ceb030e58a2c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'replace'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0514e2bd-391e-4837-82f1-83d4fde50eda +Openstack-Request-Id: req-28f47ba8-7104-4ddf-b299-0bf6569cbc4e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -ACL Test GOT Response: 200 OK +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:12:02.799132+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"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': 123, 'op': 'replace'}] +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_uuid_invalid_type +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_uuid_invalid_type ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_non_existent_node_uuid +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_non_existent_node_uuid ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_config +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_config ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_224_drivers_vendor_passthru_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_224_drivers_vendor_passthru_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_232_drivers_vendor_passthru_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_232_drivers_vendor_passthru_delete_admin ... skipped 'not updated for scope testing' +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_singular +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_singular ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_timeout_config +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_timeout_config ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_byid +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_byid ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_233_drivers_vendor_passthru_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_233_drivers_vendor_passthru_delete_observer ... skipped 'not updated for scope testing' +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_pxe_config +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_pxe_config ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_invalid_api_version +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_invalid_api_version ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_bios +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_bios ... ok +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test +GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0514e2bd-391e-4837-82f1-83d4fde50eda +Openstack-Request-Id: req-e523bf8d-0ee1-404e-bbf6-1da0aed13943 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-db10b0ac-eb74-4ad9-a8c3-0d7fb025326f +Openstack-Request-Id: req-e523bf8d-0ee1-404e-bbf6-1da0aed13943 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test +GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-db10b0ac-eb74-4ad9-a8c3-0d7fb025326f +Openstack-Request-Id: req-66976a81-1a33-4852-b674-2c4501685e5f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e687f12c-4e2b-4e65-a931-d64bea05813e +Openstack-Request-Id: req-66976a81-1a33-4852-b674-2c4501685e5f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test +POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e687f12c-4e2b-4e65-a931-d64bea05813e +Openstack-Request-Id: req-96b570fe-2031-484d-af0a-6d28dafd801c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3a08476c-5573-44a9-99ed-1f93569bd678 +Openstack-Request-Id: req-96b570fe-2031-484d-af0a-6d28dafd801c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test +POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3a08476c-5573-44a9-99ed-1f93569bd678 +Openstack-Request-Id: req-e55d40c7-83f3-4aed-b599-fe14f3b10d7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/volume -GET: /v1/volume {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-54f8706a-f56a-430f-b890-456b39b4089c +Openstack-Request-Id: req-e55d40c7-83f3-4aed-b599-fe14f3b10d7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test +POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-54f8706a-f56a-430f-b890-456b39b4089c +Openstack-Request-Id: req-8359dc94-9f3c-45ab-8eac-2fcc501c75e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/volume -GET: /v1/volume {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0e6c32e0-ddc2-4777-8342-f69c08d03db8 +Openstack-Request-Id: req-8359dc94-9f3c-45ab-8eac-2fcc501c75e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test +PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-0e6c32e0-ddc2-4777-8342-f69c08d03db8 +Openstack-Request-Id: req-dd33e63d-d94a-4972-9a63-6030c7ed8c72 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/volume -GET: /v1/volume {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_168_volume_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_168_volume_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_034_nodes_management_boot_device_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_034_nodes_management_boot_device_put_observer ... ok -ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_simple -ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_simple ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_172_volume_connectors_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_172_volume_connectors_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_169_volume_connectors_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_169_volume_connectors_get_admin ... ok -ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_stop -ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_stop ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_173_volume_connectors_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_173_volume_connectors_post_member ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-acf1eb2d-9ed6-47ec-b56f-67905466ab9e +Openstack-Request-Id: req-dd33e63d-d94a-4972-9a63-6030c7ed8c72 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test +PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a6fd4c0f-5855-40d5-98b1-c42f79a1de39 +Openstack-Request-Id: req-bc88a18a-0637-4aa6-b831-877596714e7c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a6fd4c0f-5855-40d5-98b1-c42f79a1de39 +Openstack-Request-Id: req-bc88a18a-0637-4aa6-b831-877596714e7c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test +PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2b05eca9-4816-47ee-9a7c-10bde29c7e7d +Openstack-Request-Id: req-0d49dd46-05ad-4d9d-9e41-504200347496 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2b05eca9-4816-47ee-9a7c-10bde29c7e7d +Openstack-Request-Id: req-0d49dd46-05ad-4d9d-9e41-504200347496 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_234_nodes_bios_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_234_nodes_bios_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_225_drivers_vendor_passthru_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_225_drivers_vendor_passthru_get_observer ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_ipv6 +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_ipv6 ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_235_nodes_bios_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_235_nodes_bios_get_member ... ok +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_not_found +ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_not_found ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_ipv6_bios +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_ipv6_bios ... ok +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-9ed56fe2-9d0b-491f-b792-fd73dab3a44c +Openstack-Request-Id: req-35a765ce-f78d-4e11-a459-63d725a61469 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/properties +GET: /v1/drivers/fake-driverz/properties {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-9ed56fe2-9d0b-491f-b792-fd73dab3a44c +Openstack-Request-Id: req-0c4d8670-9bf4-4895-a92a-dc93992a4b01 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/properties +GET: /v1/drivers/fake-driverz/properties {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-0949ab17-2cb0-4cf0-90d8-0b944db65bdc +Openstack-Request-Id: req-b417bc9c-fc61-448b-8a55-60605d9bb29a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/properties +GET: /v1/drivers/fake-driverz/properties {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-0949ab17-2cb0-4cf0-90d8-0b944db65bdc +Openstack-Request-Id: req-a14fab4b-4b58-4a61-bea3-b259c975d99e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties +GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-6ac8d750-28b2-4344-aa61-fad03b8d6a88 +Openstack-Request-Id: req-c17c4aa6-dd43-4ac9-a90d-7ff6af02b2af X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties +GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-6ac8d750-28b2-4344-aa61-fad03b8d6a88 +Openstack-Request-Id: req-c7620c9c-bc12-4fd2-91f1-0db4c1a6d49d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties +GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-d222ca80-ec83-457d-a65d-feac78b17d8e +Openstack-Request-Id: req-494dec2a-821e-4bc0-9b92-0ab1f25e2c19 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods +GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-d222ca80-ec83-457d-a65d-feac78b17d8e +Openstack-Request-Id: req-5a978dbc-07fc-4ae1-978f-85f25e5cb6f9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 403 Forbidden +{"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}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods +GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-ad306335-bf4f-4a60-a6e3-ad2d23994ae5 +Openstack-Request-Id: req-a165de39-9dc8-445a-961d-cf0b1d880b44 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"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}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods +GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-ad306335-bf4f-4a60-a6e3-ad2d23994ae5 +Openstack-Request-Id: req-4bbde192-44e8-46a9-9223-a81e793b74cc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} -GOT:Response: 503 Service Unavailable +{"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}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test +GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-8c8c0604-cae8-42d5-8b8c-db57c564793c +Openstack-Request-Id: req-4abffc66-d196-4667-8ad3-79fb9d53747d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_035_nodes_management_boot_device_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_035_nodes_management_boot_device_get_admin ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_all_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_all_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_170_volume_connectors_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_170_volume_connectors_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_174_volume_connectors_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_174_volume_connectors_post_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_disable_core_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_disable_core_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_036_nodes_management_boot_device_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_036_nodes_management_boot_device_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_171_volume_connectors_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_171_volume_connectors_get_reader ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_duplicate_template_and_user_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_duplicate_template_and_user_steps ... ok -GOT:Response: 404 Not Found +{"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}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test +GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-e3af481e-9eaa-426d-a237-3432db5e4168 +Openstack-Request-Id: req-078c27b1-248d-4937-95fd-ab6710ac9a93 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} -GOT:Response: 404 Not Found +{"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}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test +GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-5236b531-e6e7-444c-9c89-7fc516d01710 +Openstack-Request-Id: req-2e0f4320-c345-4030-abb0-962f6cc6e615 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} -GOT:Response: 404 Not Found +{"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}"} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_226_drivers_vendor_passthru_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_226_drivers_vendor_passthru_post_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_1_values +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_1_values ... skipped 'For value storage' +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_236_nodes_bios_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_236_nodes_bios_get_observer ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_fallback_ipxe_boot_script +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_fallback_ipxe_boot_script ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_227_drivers_vendor_passthru_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_227_drivers_vendor_passthru_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_2_unauthenticated_user_cannot_get_node +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_2_unauthenticated_user_cannot_get_node ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info_bad_driver_info +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info_bad_driver_info ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_237_nodes_bios_bios_setting_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_237_nodes_bios_bios_setting_get_admin ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info_ipxe +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info_ipxe ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_pxe_config_file_path +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_pxe_config_file_path ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_228_drivers_vendor_passthru_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_228_drivers_vendor_passthru_post_observer ... ok +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-3c75ceba-ad64-4608-8e92-f7b795a9d061 +Openstack-Request-Id: req-e08ba352-c812-4784-9154-227d055d870b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a UUID for node_uuid, but received 123.\", \"debuginfo\": null}"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/node_uuid', 'value': '12506333-a81c-4d59-9987-889ed5f8687b', 'op': 'replace'}] +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-1d77c4d5-7e9e-4403-9064-891cc2cc5a7d +Openstack-Request-Id: req-f891d6df-18bd-412a-8767-93d2f2d9d175 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 12506333-a81c-4d59-9987-889ed5f8687b could not be found.\", \"debuginfo\": null}"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/connector_id', 'value': 'test-connector-id-999', 'op': 'replace'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-da474489-7d74-4683-a390-bf1a7f4352a0 +Openstack-Request-Id: req-44c553ff-7abb-4880-a551-93f8df90aa14 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:12:03.219166+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"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2d46caf3-8573-495f-8bb1-01da326223e8 +Openstack-Request-Id: req-80c156c8-56c2-4e7f-b3b5-6cbac32e1778 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume -GET: /v1/volume {} -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:12:03.380242+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"} +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bc6d4bd5-e835-43fa-9013-6dba38f12f5f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume -GET: /v1/volume {} -GOT:Response: 403 Forbidden +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +PATCH: /v1/volume/connectors/53412939-1b74-4680-b6ee-f878dd6bb378 [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9a113b88-ea69-4076-8707-788cddbc942b +Openstack-Request-Id: req-989e2f2d-8a40-488a-9a53-40f54a6b3f8c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume -GET: /v1/volume {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 53412939-1b74-4680-b6ee-f878dd6bb378 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-346511ea-1482-4cde-a3c6-5f7a20efa2f2 +Openstack-Request-Id: req-26da903a-7161-47e9-8e7c-3788b2397bb0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-42b1282b-312b-4729-ba96-d58857ab91e5 +Openstack-Request-Id: req-26da903a-7161-47e9-8e7c-3788b2397bb0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-613a1ed3-5117-4f68-9cd3-5da0279bd06c +Openstack-Request-Id: req-8469295b-0346-4de5-8a12-a884faafc045 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:04.564643+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", "cpus": "8", "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": 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 +{node_uuid} +driver +fake-hardware +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_3_project_admin_can_get_node +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_3_project_admin_can_get_node ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_rescue_kr_info +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_rescue_kr_info ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_238_nodes_bios_bios_setting_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_238_nodes_bios_bios_setting_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_4_project_member_cannot_get_node +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_4_project_member_cannot_get_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_229_drivers_vendor_passthru_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_229_drivers_vendor_passthru_put_admin ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_rescue_kr_info_ipxe +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_rescue_kr_info_ipxe ... ok +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_5_public_api +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_5_public_api ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_place_common_config +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_place_common_config ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_239_nodes_bios_bios_setting_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_239_nodes_bios_bios_setting_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_230_drivers_vendor_passthru_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_230_drivers_vendor_passthru_put_member ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_place_common_config_existing_dirs +ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_place_common_config_existing_dirs ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-7e119d8e-53f9-4d60-a9e0-1d9131bf1fd2 +Openstack-Request-Id: req-8469295b-0346-4de5-8a12-a884faafc045 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:04.564643+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", "cpus": "8", "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": 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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5e1c12af-6575-40b6-bf55-acd6eddce96a +Openstack-Request-Id: req-1fcbaca7-3cfd-4929-803d-ea53ed30d047 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d3e03073-aaae-4816-abad-8cbb5c176d09 +Openstack-Request-Id: req-1fcbaca7-3cfd-4929-803d-ea53ed30d047 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get / +GET: / {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-242ed692-9102-40fd-a50e-7059360553a6 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_175_volume_volume_connector_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_175_volume_volume_connector_id_get_admin ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_duplicate_template_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_duplicate_template_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_172_volume_connectors_post_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_172_volume_connectors_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_037_nodes_management_boot_device_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_037_nodes_management_boot_device_get_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_error -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_error ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_176_volume_volume_connector_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_176_volume_volume_connector_id_get_member ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_steps ... ok +Openstack-Request-Id: req-2145a288-7b6f-469c-af80-01bed09b37b4 +{"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.80"}, "versions": [{"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.80"}]} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-2145a288-7b6f-469c-af80-01bed09b37b4 +{"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.80"}, "versions": [{"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.80"}]} +API ACL Testing Path get /v1 +GET: /v1 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-fe28b82c-b870-4aca-a491-a6c70195ab34 +Openstack-Request-Id: req-35f07ee7-59f3-45c5-be9e-174f66956aa2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"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.80"}, "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"}]} +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_6_public_api_v1 +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_6_public_api_v1 ... ok +ironic.tests.unit.common.test_rpc_service.TestRPCService.test_start +ironic.tests.unit.common.test_rpc_service.TestRPCService.test_start ... ok +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_7_public_api_v1_slash +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_7_public_api_v1_slash ... ok +ironic.tests.unit.common.test_rpc_service.TestRPCService.test_start_failure +ironic.tests.unit.common.test_rpc_service.TestRPCService.test_start_failure ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_231_drivers_vendor_passthru_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_231_drivers_vendor_passthru_put_observer ... ok +ironic.tests.unit.common.test_rpc_service.TestRPCService.test_start_no_rpc +ironic.tests.unit.common.test_rpc_service.TestRPCService.test_start_no_rpc ... ok ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-fe28b82c-b870-4aca-a491-a6c70195ab34 +Openstack-Request-Id: req-35f07ee7-59f3-45c5-be9e-174f66956aa2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} +{"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.80"}, "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"}]} +API ACL Testing Path get /v1/ +GET: /v1/ {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d59cdc80-d7c7-44e8-833e-552dfdd5cfd6 +Openstack-Request-Id: req-12a53db4-8427-4a9a-a4b1-e93143b7fa73 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"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.80"}, "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"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d59cdc80-d7c7-44e8-833e-552dfdd5cfd6 +Openstack-Request-Id: req-12a53db4-8427-4a9a-a4b1-e93143b7fa73 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} +{"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.80"}, "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"}]} +API ACL Testing Path get /v1.json +GET: /v1.json {} +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_8_public_api_v1_json +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_8_public_api_v1_json ... ok +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_9_public_api_v1_xml +ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_9_public_api_v1_xml ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_232_drivers_vendor_passthru_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_232_drivers_vendor_passthru_delete_admin ... skipped 'not updated for scope testing' +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_001_values +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_001_values ... skipped 'These are fake reference values for YAML templating' +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_check_orphaned_allocations +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_check_orphaned_allocations ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_233_drivers_vendor_passthru_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_233_drivers_vendor_passthru_delete_observer ... skipped 'not updated for scope testing' GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b9c3dac0-6f36-4827-9fbf-a2e5489e7286 +Openstack-Request-Id: req-1b4efb54-d561-48e2-83dc-f9be0c04be27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"bios": [{"created_at": "2024-01-06T14:12:03.645391+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"}]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b9c3dac0-6f36-4827-9fbf-a2e5489e7286 +Openstack-Request-Id: req-1b4efb54-d561-48e2-83dc-f9be0c04be27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} -GOT:Response: 200 OK +{"bios": [{"created_at": "2024-01-06T14:12:03.645391+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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8f2c58d6-8ce2-4e45-8467-4456d93cee76 +Openstack-Request-Id: req-2f75e5d0-8c50-4c0e-9d00-3cddbf80e6d6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8f2c58d6-8ce2-4e45-8467-4456d93cee76 +Openstack-Request-Id: req-2f75e5d0-8c50-4c0e-9d00-3cddbf80e6d6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/volume/connectors/d54a1ed1-9c9e-4dff-8aca-68b31439f74a -Openstack-Request-Id: req-f180a880-96bb-4b7a-8b7d-c34b8dbe65ac +Openstack-Request-Id: req-6836b01c-0caf-4b3d-9dbb-a091e1e54b44 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "d54a1ed1-9c9e-4dff-8aca-68b31439f74a", "created_at": "2024-01-06T13:35:51.108965+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/d54a1ed1-9c9e-4dff-8aca-68b31439f74a", "rel": "self"}, {"href": "http://localhost/volume/connectors/d54a1ed1-9c9e-4dff-8aca-68b31439f74a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -ACL Test GOT Response: 201 Created +{"bios": [{"created_at": "2024-01-06T14:12:04.209628+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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/volume/connectors/d54a1ed1-9c9e-4dff-8aca-68b31439f74a -Openstack-Request-Id: req-f180a880-96bb-4b7a-8b7d-c34b8dbe65ac +Openstack-Request-Id: req-6836b01c-0caf-4b3d-9dbb-a091e1e54b44 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "d54a1ed1-9c9e-4dff-8aca-68b31439f74a", "created_at": "2024-01-06T13:35:51.108965+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/d54a1ed1-9c9e-4dff-8aca-68b31439f74a", "rel": "self"}, {"href": "http://localhost/volume/connectors/d54a1ed1-9c9e-4dff-8aca-68b31439f74a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} -GOT:Response: 201 Created +{"bios": [{"created_at": "2024-01-06T14:12:04.209628+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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +GOT:Response: 200 OK Content-Type: application/json -Location: http://localhost/v1/volume/connectors/15be09c0-9fdd-4fb3-90e1-f43f07de7823 -Openstack-Request-Id: req-55db6a3e-bcd3-4cb4-b8b4-fcd9a1ef8005 +Openstack-Request-Id: req-1d60ca6b-5c25-4e0e-af40-50ea656d43f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "15be09c0-9fdd-4fb3-90e1-f43f07de7823", "created_at": "2024-01-06T13:35:52.204216+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/15be09c0-9fdd-4fb3-90e1-f43f07de7823", "rel": "self"}, {"href": "http://localhost/volume/connectors/15be09c0-9fdd-4fb3-90e1-f43f07de7823", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_173_volume_connectors_post_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_173_volume_connectors_post_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_038_nodes_management_boot_device_supported_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_038_nodes_management_boot_device_supported_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_177_volume_volume_connector_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_177_volume_volume_connector_id_get_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_template_and_driver_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_template_and_driver_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_174_volume_connectors_post_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_174_volume_connectors_post_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_178_volume_volume_connector_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_178_volume_volume_connector_id_patch_admin ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_template_and_user_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_template_and_user_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_039_nodes_management_boot_device_supported_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_039_nodes_management_boot_device_supported_get_member ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_user_and_driver_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_user_and_driver_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_175_volume_volume_connector_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_175_volume_volume_connector_id_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_179_volume_volume_connector_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_179_volume_volume_connector_id_patch_member ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_override_driver_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_override_driver_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_040_nodes_management_boot_device_supported_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_040_nodes_management_boot_device_supported_get_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_override_template_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_override_template_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_180_volume_volume_connector_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_180_volume_volume_connector_id_patch_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_176_volume_volume_connector_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_176_volume_volume_connector_id_get_member ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_skip_missing -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_skip_missing ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_041_nodes_management_inject_nmi_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_041_nodes_management_inject_nmi_put_admin ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_template_and_driver_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_template_and_driver_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_181_volume_volume_connector_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_181_volume_volume_connector_id_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_177_volume_volume_connector_id_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_177_volume_volume_connector_id_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_042_nodes_management_inject_nmi_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_042_nodes_management_inject_nmi_put_member ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_user_and_driver_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_user_and_driver_steps ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_user_and_template_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_user_and_template_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_182_volume_volume_connector_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_182_volume_volume_connector_id_delete_member ... ok -ACL Test GOT Response: 503 Service Unavailable +{"FAKE_SETTING": {"created_at": "2024-01-06T14:12:04.456316+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"}]}} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8c8c0604-cae8-42d5-8b8c-db57c564793c +Openstack-Request-Id: req-1d60ca6b-5c25-4e0e-af40-50ea656d43f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +{"FAKE_SETTING": {"created_at": "2024-01-06T14:12:04.456316+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"}]}} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8c5f5ed0-1ae4-4abf-8126-ea207ee529b2 +Openstack-Request-Id: req-e62be35b-a6aa-4dee-a99b-c6fd36b64e65 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8c5f5ed0-1ae4-4abf-8126-ea207ee529b2 +Openstack-Request-Id: req-e62be35b-a6aa-4dee-a99b-c6fd36b64e65 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} -GOT:Response: 503 Service Unavailable +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e864d21c-7ccc-48c5-9f8e-bba8e07521fb +Openstack-Request-Id: req-cc728b28-f2f2-4723-a82f-4a08cc0f446c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"FAKE_SETTING": {"created_at": "2024-01-06T14:12:04.998974+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"}]}} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e864d21c-7ccc-48c5-9f8e-bba8e07521fb +Openstack-Request-Id: req-cc728b28-f2f2-4723-a82f-4a08cc0f446c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} -GOT:Response: 503 Service Unavailable +{"FAKE_SETTING": {"created_at": "2024-01-06T14:12:04.998974+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"}]}} +API ACL Testing Path get /v1/conductors +GET: /v1/conductors {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_240_conductors_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_240_conductors_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_241_conductors_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_241_conductors_get_member ... ok +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_create_allocation +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_create_allocation ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_002_owner_admin_cannot_post_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_002_owner_admin_cannot_post_nodes ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_234_nodes_bios_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_234_nodes_bios_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_242_conductors_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_242_conductors_get_observer ... ok +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_create_allocation_with_node_id +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_create_allocation_with_node_id ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_235_nodes_bios_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_235_nodes_bios_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_243_conductors_hostname_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_243_conductors_hostname_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_003_owner_admin_can_post_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_003_owner_admin_can_post_nodes ... ok +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_active_node +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_active_node ... ok +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_node +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_236_nodes_bios_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_236_nodes_bios_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_244_conductors_hostname_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_244_conductors_hostname_get_member ... ok +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_node_in_maintenance +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_node_in_maintenance ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_004_owner_manager_cannot_post_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_004_owner_manager_cannot_post_nodes ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_237_nodes_bios_bios_setting_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_237_nodes_bios_bios_setting_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_245_conductors_hostname_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_245_conductors_hostname_get_observer ... ok +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_transient_node +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_transient_node ... ok +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_without_node +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_without_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_238_nodes_bios_bios_setting_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_238_nodes_bios_bios_setting_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_246_allocations_post_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_246_allocations_post_admin ... ok +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_resume_allocations +ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_resume_allocations ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0d3f19ca-c3df-47c9-b2e9-f9a6d5c65bf5 +Openstack-Request-Id: req-4aed329f-2066-4d8b-9343-7cd5bd22bf44 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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.80"}, "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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0d3f19ca-c3df-47c9-b2e9-f9a6d5c65bf5 +Openstack-Request-Id: req-4aed329f-2066-4d8b-9343-7cd5bd22bf44 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +{"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.80"}, "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"}]} +API ACL Testing Path get /v1.xml +GET: /v1.xml {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8bb48e9d-ff3e-4c9c-941f-07a40b75b008 +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-ead77c6c-c896-467f-b4c2-fee18e595f02 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8bb48e9d-ff3e-4c9c-941f-07a40b75b008 +Openstack-Request-Id: req-ead77c6c-c896-467f-b4c2-fee18e595f02 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-bf9fa4b9-c6e6-4c97-aab2-ac6a4b18281d +Openstack-Request-Id: req-d402d2a5-5272-412c-bd18-1a4b288b13c6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-bf9fa4b9-c6e6-4c97-aab2-ac6a4b18281d +Openstack-Request-Id: req-d402d2a5-5272-412c-bd18-1a4b288b13c6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} -GOT:Response: 503 Service Unavailable +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-96dca871-b883-4e65-8792-9d08eaa44d2d +Openstack-Request-Id: req-c6cba409-c136-495a-951f-6d0f332c62e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-96dca871-b883-4e65-8792-9d08eaa44d2d +Openstack-Request-Id: req-c6cba409-c136-495a-951f-6d0f332c62e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-01dc04e3-7ffd-4135-a45a-53c90df5a880 +Openstack-Request-Id: req-62a2ef7f-818c-4681-8646-7a26fcb32fff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_005_lessee_admin_cannot_post_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_005_lessee_admin_cannot_post_nodes ... ok +ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker +ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_247_allocations_post_member +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." +ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker_none_free +ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker_none_free ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_239_nodes_bios_bios_setting_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_239_nodes_bios_bios_setting_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_006_lessee_admin_can_post_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_006_lessee_admin_can_post_nodes ... ok +ironic.tests.unit.conductor.test_base_manager.RegisterInterfacesTestCase.test__register_and_validate_hardware_interfaces +ironic.tests.unit.conductor.test_base_manager.RegisterInterfacesTestCase.test__register_and_validate_hardware_interfaces ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-01dc04e3-7ffd-4135-a45a-53c90df5a880 +Openstack-Request-Id: req-f4b4b2e2-5bd0-4810-bcfb-bb5734657c81 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +{"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}]} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-f4b4b2e2-5bd0-4810-bcfb-bb5734657c81 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}]} +API ACL Testing Path get /v1/conductors +GET: /v1/conductors {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5b71a8ca-b048-4c30-b171-08bb28617f6b +Openstack-Request-Id: req-4fe05ecd-01c5-4fd1-b62f-4b3bb7b41a5e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_043_nodes_management_inject_nmi_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_043_nodes_management_inject_nmi_put_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deploy_steps_unsorted -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deploy_steps_unsorted ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_178_volume_volume_connector_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_178_volume_volume_connector_id_patch_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_183_volume_volume_connector_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_183_volume_volume_connector_id_delete_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_044_nodes_states_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_044_nodes_states_get_admin ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_steps_only_enabled -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_steps_only_enabled ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_184_volume_targets_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_184_volume_targets_get_admin ... ok -ACL Test GOT Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Location: http://localhost/v1/volume/connectors/15be09c0-9fdd-4fb3-90e1-f43f07de7823 -Openstack-Request-Id: req-55db6a3e-bcd3-4cb4-b8b4-fcd9a1ef8005 +Openstack-Request-Id: req-4fe05ecd-01c5-4fd1-b62f-4b3bb7b41a5e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "15be09c0-9fdd-4fb3-90e1-f43f07de7823", "created_at": "2024-01-06T13:35:52.204216+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/15be09c0-9fdd-4fb3-90e1-f43f07de7823", "rel": "self"}, {"href": "http://localhost/volume/connectors/15be09c0-9fdd-4fb3-90e1-f43f07de7823", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors +GET: /v1/conductors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b33a46a5-001d-48c2-804b-dc52be290024 +Openstack-Request-Id: req-d3ffa208-ba42-4160-82e3-d69a9f908a4b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"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}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b33a46a5-001d-48c2-804b-dc52be290024 +Openstack-Request-Id: req-d3ffa208-ba42-4160-82e3-d69a9f908a4b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +{"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}]} +API ACL Testing Path get /v1/conductors/test-conductor-node +GET: /v1/conductors/test-conductor-node {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f709eb9c-b5ae-4666-89f4-e67a440bdf74 +Openstack-Request-Id: req-39c0b590-d903-4bb7-9246-86de26d83ee2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:53.203701+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"} +{"created_at": "2024-01-06T14:12:06.497296+00:00", "updated_at": "2024-01-06T14:12:06.500245+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} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f709eb9c-b5ae-4666-89f4-e67a440bdf74 +Openstack-Request-Id: req-39c0b590-d903-4bb7-9246-86de26d83ee2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:53.203701+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"} -API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 200 OK +{"created_at": "2024-01-06T14:12:06.497296+00:00", "updated_at": "2024-01-06T14:12:06.500245+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} +API ACL Testing Path get /v1/conductors/test-conductor-node +GET: /v1/conductors/test-conductor-node {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f1ac8a5b-ca65-45de-8173-d0128d686401 +Openstack-Request-Id: req-ff19278a-d113-433d-9c57-659f2ff709fb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:54.010012+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"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f1ac8a5b-ca65-45de-8173-d0128d686401 +Openstack-Request-Id: req-ff19278a-d113-433d-9c57-659f2ff709fb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:54.010012+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"} -API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors/test-conductor-node +GET: /v1/conductors/test-conductor-node {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3da36502-70ee-40ac-89d2-335e68d33c96 +Openstack-Request-Id: req-a7e4b0ef-03e4-4678-8ec0-4c1fad953ed1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:55.037032+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"} +{"created_at": "2024-01-06T14:12:07.001086+00:00", "updated_at": "2024-01-06T14:12:07.004112+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} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3da36502-70ee-40ac-89d2-335e68d33c96 +Openstack-Request-Id: req-a7e4b0ef-03e4-4678-8ec0-4c1fad953ed1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:35:55.037032+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"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"created_at": "2024-01-06T14:12:07.001086+00:00", "updated_at": "2024-01-06T14:12:07.004112+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} +API ACL Testing Path post /v1/allocations +POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6c1e6a40-88a9-4487-8af5-aba2563d8c42 +Openstack-Request-Id: req-fd821e51-09a6-493d-ad03-0a1cb8463596 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6c1e6a40-88a9-4487-8af5-aba2563d8c42 +Openstack-Request-Id: req-fd821e51-09a6-493d-ad03-0a1cb8463596 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +API ACL Testing Path post /v1/allocations +POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a27c5b21-b24b-4856-a114-415a7c3ba609 +Openstack-Request-Id: req-5c46e352-0d19-435f-b64a-552c0a072c86 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_179_volume_volume_connector_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_179_volume_volume_connector_id_patch_member ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_templates -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_templates ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_045_nodes_states_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_045_nodes_states_get_member ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_templates_no_traits -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_templates_no_traits ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_180_volume_volume_connector_id_patch_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_180_volume_volume_connector_id_patch_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_185_volume_targets_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_185_volume_targets_get_member ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_steps_from_deployment_templates -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_steps_from_deployment_templates ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_046_nodes_states_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_046_nodes_states_get_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_181_volume_volume_connector_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_181_volume_volume_connector_id_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_186_volume_targets_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_186_volume_targets_get_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_disable_core -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_disable_core ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_047_nodes_states_power_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_047_nodes_states_power_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_182_volume_volume_connector_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_182_volume_volume_connector_id_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_187_volume_targets_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_187_volume_targets_post_admin ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_disable_non_core -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_disable_non_core ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_048_nodes_states_power_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_048_nodes_states_power_put_member ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_duplicates -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_duplicates ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_183_volume_volume_connector_id_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_183_volume_volume_connector_id_delete_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_188_volume_targets_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_188_volume_targets_post_member ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_get_steps_exception -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_get_steps_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_049_nodes_states_power_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_049_nodes_states_power_put_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_invalid_arg -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_invalid_arg ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_184_volume_targets_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_184_volume_targets_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_050_nodes_states_boot_mode_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_050_nodes_states_boot_mode_put_admin ... ok -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_248_allocations_post_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_248_allocations_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_240_conductors_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_240_conductors_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_249_allocations_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_249_allocations_get_admin ... ok +ironic.tests.unit.conductor.test_base_manager.RegisterInterfacesTestCase.test__register_and_validate_no_valid_default +ironic.tests.unit.conductor.test_base_manager.RegisterInterfacesTestCase.test__register_and_validate_no_valid_default ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_007_lessee_manager_cannot_post_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_007_lessee_manager_cannot_post_nodes ... ok +API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test +POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-28bef670-35a1-4cf9-a65c-2d1e84758af1 +Openstack-Request-Id: req-fff9f521-5cf3-4bc3-960e-9e7c8bce2e44 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"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}"} +API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test +POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-463ac7cc-73fa-4c7d-9d63-a62435e1e4e4 +Openstack-Request-Id: req-fb790c26-6fb9-45f4-aebc-1e42e6be9436 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"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}"} +API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test +POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-70cf5b4c-a47c-48c7-8e10-99440e2a9353 +Openstack-Request-Id: req-3472fe00-b518-4e52-8d10-2131ec10e46f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"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}"} +API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test +PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-451d225c-f0fb-4ffd-8fbe-624d71c6398c +Openstack-Request-Id: req-c31cdaf0-5ad3-4f5b-ad6f-00279b2ef301 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"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}"} +API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test +PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-8cb67601-dec1-4ec6-a1f8-2a31fca43692 +Openstack-Request-Id: req-08183fb4-511d-45a6-9865-d57888220b54 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"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}"} +API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test +PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-7bff5da0-837b-43de-a2f7-70d7b85c9157 +Openstack-Request-Id: req-d5dc9e80-d3e8-4328-91ce-a19a8b43ff12 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +{"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}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c863270c-87fb-4532-b416-e02ae06ac736 +Openstack-Request-Id: req-16f9e584-f790-41af-aafb-dd61d6e78430 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-05603415-4784-4d53-8694-eb203142add3 +Openstack-Request-Id: req-176f2cde-47f1-46da-925d-65eab981dd24 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8cc4c748-3484-4dd9-aa10-4215d4460e6d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets -GET: /v1/volume/targets {} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-f9cad59d-d19f-445a-88c0-098a7b943f31 +Openstack-Request-Id: req-20bda24a-fbce-4ea5-aae0-ba410c84c1bc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets -GET: /v1/volume/targets {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-dca3d405-741b-4fa1-b65a-f1d83c0898d6 +Openstack-Request-Id: req-8d9a6723-683c-48ea-b94f-8d0f67401518 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets -GET: /v1/volume/targets {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-64f08800-f657-4d28-b078-bd22abdabb47 +Openstack-Request-Id: req-9b86fd8e-70cb-455e-a71b-011ecec4b601 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/targets -POST: /v1/volume/targets {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-90299f7c-36b5-49ec-b38a-55a23c9c9895 +Openstack-Request-Id: req-3e243fb6-71b0-4667-b419-2eed2bb08b79 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/targets -POST: /v1/volume/targets {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors +GET: /v1/conductors {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-df0ae331-8398-455c-8b31-785aa10d5d9a +Openstack-Request-Id: req-9f14f78d-f8ac-4701-ba84-1c1fb2083c4e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/targets -POST: /v1/volume/targets {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_189_volume_targets_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_189_volume_targets_post_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_missing_required_arg -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_missing_required_arg ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_no_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_no_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_185_volume_targets_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_185_volume_targets_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_190_volume_volume_target_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_190_volume_volume_target_id_get_admin ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_not_supported -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_not_supported ... ok +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors +GET: /v1/conductors {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_241_conductors_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_241_conductors_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_250_allocations_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_250_allocations_get_member ... ok +ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles +ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_242_conductors_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_242_conductors_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_008_lessee_manager_can_post_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_008_lessee_manager_can_post_nodes ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_251_allocations_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_251_allocations_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_243_conductors_hostname_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_243_conductors_hostname_get_admin ... ok +ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_failed +ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_failed ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_252_allocations_allocation_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_252_allocations_allocation_id_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_009_third_party_admin_cannot_post_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_009_third_party_admin_cannot_post_nodes ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_244_conductors_hostname_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_244_conductors_hostname_get_member ... ok +ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_no_console_enabled +ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_no_console_enabled ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_253_allocations_allocation_id_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_253_allocations_allocation_id_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_245_conductors_hostname_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_245_conductors_hostname_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_010_third_party_admin_can_post_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_010_third_party_admin_can_post_nodes ... ok +ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_node_locked +ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_node_locked ... ok ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5b71a8ca-b048-4c30-b171-08bb28617f6b +Openstack-Request-Id: req-5c46e352-0d19-435f-b64a-552c0a072c86 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations +GET: /v1/allocations {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ec0574d3-a2bf-4e8e-99a5-d85eedac8ead +Openstack-Request-Id: req-db8d3c02-46f2-4154-85b2-519c4142ac2e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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} +{"allocations": [{"uuid": "3e44a0da-21ba-4feb-bc06-69611257c991", "created_at": "2024-01-06T14:12:07.931708+00:00", "updated_at": "2024-01-06T14:12:07.960296+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/3e44a0da-21ba-4feb-bc06-69611257c991", "rel": "self"}, {"href": "http://localhost/allocations/3e44a0da-21ba-4feb-bc06-69611257c991", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ec0574d3-a2bf-4e8e-99a5-d85eedac8ead +Openstack-Request-Id: req-db8d3c02-46f2-4154-85b2-519c4142ac2e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} -GOT:Response: 404 Not Found +{"allocations": [{"uuid": "3e44a0da-21ba-4feb-bc06-69611257c991", "created_at": "2024-01-06T14:12:07.931708+00:00", "updated_at": "2024-01-06T14:12:07.960296+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/3e44a0da-21ba-4feb-bc06-69611257c991", "rel": "self"}, {"href": "http://localhost/allocations/3e44a0da-21ba-4feb-bc06-69611257c991", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} +API ACL Testing Path get /v1/allocations +GET: /v1/allocations {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1539eb77-e7c8-4d3f-a5b7-a25adb4ec508 +Openstack-Request-Id: req-d2b08de7-b4f6-4e58-a9ef-4b7f6aee2337 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1539eb77-e7c8-4d3f-a5b7-a25adb4ec508 +Openstack-Request-Id: req-d2b08de7-b4f6-4e58-a9ef-4b7f6aee2337 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations +GET: /v1/allocations {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ce2155fd-a34b-47ec-928f-bf857bb1192f +Openstack-Request-Id: req-ee16e395-2082-48ad-be57-2a59006ff1ea X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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} +{"allocations": [{"uuid": "2406607e-e54b-4faf-9cde-8d2e8837893b", "created_at": "2024-01-06T14:12:08.475132+00:00", "updated_at": "2024-01-06T14:12:08.500471+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/2406607e-e54b-4faf-9cde-8d2e8837893b", "rel": "self"}, {"href": "http://localhost/allocations/2406607e-e54b-4faf-9cde-8d2e8837893b", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ce2155fd-a34b-47ec-928f-bf857bb1192f +Openstack-Request-Id: req-ee16e395-2082-48ad-be57-2a59006ff1ea X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} -GOT:Response: 503 Service Unavailable +{"allocations": [{"uuid": "2406607e-e54b-4faf-9cde-8d2e8837893b", "created_at": "2024-01-06T14:12:08.475132+00:00", "updated_at": "2024-01-06T14:12:08.500471+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/2406607e-e54b-4faf-9cde-8d2e8837893b", "rel": "self"}, {"href": "http://localhost/allocations/2406607e-e54b-4faf-9cde-8d2e8837893b", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} +API ACL Testing Path get /v1/allocations/f974dcf1-83e8-4bee-9234-5c81775bffe0 +GET: /v1/allocations/f974dcf1-83e8-4bee-9234-5c81775bffe0 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2d38a691-bfdc-4f3d-acea-c39e26dc746f +Openstack-Request-Id: req-25a07830-a7b7-4907-a235-49800ff64f80 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "f974dcf1-83e8-4bee-9234-5c81775bffe0", "created_at": "2024-01-06T14:12:08.752445+00:00", "updated_at": "2024-01-06T14:12:08.778823+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/f974dcf1-83e8-4bee-9234-5c81775bffe0", "rel": "self"}, {"href": "http://localhost/allocations/f974dcf1-83e8-4bee-9234-5c81775bffe0", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2d38a691-bfdc-4f3d-acea-c39e26dc746f +Openstack-Request-Id: req-25a07830-a7b7-4907-a235-49800ff64f80 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +{"uuid": "f974dcf1-83e8-4bee-9234-5c81775bffe0", "created_at": "2024-01-06T14:12:08.752445+00:00", "updated_at": "2024-01-06T14:12:08.778823+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/f974dcf1-83e8-4bee-9234-5c81775bffe0", "rel": "self"}, {"href": "http://localhost/allocations/f974dcf1-83e8-4bee-9234-5c81775bffe0", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +API ACL Testing Path get /v1/allocations/c27a31f0-3866-4794-a261-38fe15773602 +GET: /v1/allocations/c27a31f0-3866-4794-a261-38fe15773602 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8b3d1f54-8a2b-4364-9b2c-2a1dc2fa75f6 +Openstack-Request-Id: req-5c96d40a-c175-4094-b789-a16f02437ef8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation c27a31f0-3866-4794-a261-38fe15773602 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8b3d1f54-8a2b-4364-9b2c-2a1dc2fa75f6 +Openstack-Request-Id: req-5c96d40a-c175-4094-b789-a16f02437ef8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation c27a31f0-3866-4794-a261-38fe15773602 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations/7b27e7bf-f270-4b38-8a43-13ea627015a1 +GET: /v1/allocations/7b27e7bf-f270-4b38-8a43-13ea627015a1 {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_254_allocations_allocation_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_254_allocations_allocation_id_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_246_allocations_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_246_allocations_post_admin ... ok +ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_node_not_found +ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_node_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_011_owner_member_cannot_post_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_011_owner_member_cannot_post_nodes ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_255_allocations_allocation_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_255_allocations_allocation_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_247_allocations_post_member +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." +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_248_allocations_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_248_allocations_post_observer ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_conductor_shutdown_flag +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_conductor_shutdown_flag ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_256_allocations_allocation_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_256_allocations_allocation_id_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_012_owner_reader_cannot_post_reader +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_012_owner_reader_cannot_post_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_249_allocations_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_249_allocations_get_admin ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_del_host_waits_on_workerpool +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_del_host_waits_on_workerpool ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_257_allocations_allocation_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_257_allocations_allocation_id_patch_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_250_allocations_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_250_allocations_get_member ... ok +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-62a2ef7f-818c-4681-8646-7a26fcb32fff +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-80c95a97-8ee6-4aa0-bbcd-65bb3ad9d015 +Openstack-Request-Id: req-8d8f0fb2-6a7c-485d-88c5-4a2fc0f5d6ca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-80c95a97-8ee6-4aa0-bbcd-65bb3ad9d015 +Openstack-Request-Id: req-8d8f0fb2-6a7c-485d-88c5-4a2fc0f5d6ca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-86d669bc-174d-4a4f-9d18-eb89ab903516 +Openstack-Request-Id: req-3d7c345e-83bf-45c6-87b7-114e2a292a0e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-86d669bc-174d-4a4f-9d18-eb89ab903516 +Openstack-Request-Id: req-3d7c345e-83bf-45c6-87b7-114e2a292a0e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_051_nodes_states_boot_mode_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_051_nodes_states_boot_mode_put_member ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_override_core -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_override_core ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_191_volume_volume_target_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_191_volume_volume_target_id_get_member ... ok -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a27c5b21-b24b-4856-a114-415a7c3ba609 +Openstack-Request-Id: req-d3831108-672b-4fd7-a3e9-aee2a0903591 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-d3831108-672b-4fd7-a3e9-aee2a0903591 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6698ef0b-4702-44ac-917f-c4bca21f418f +Openstack-Request-Id: req-9cd614ff-f464-49eb-8799-bef711406319 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6698ef0b-4702-44ac-917f-c4bca21f418f +Openstack-Request-Id: req-9cd614ff-f464-49eb-8799-bef711406319 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ee937fbf-e009-40c7-bf08-5ec1c3dc078a +Openstack-Request-Id: req-10aa2145-e9cc-44fd-a42c-a732946a2b0b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ee937fbf-e009-40c7-bf08-5ec1c3dc078a +Openstack-Request-Id: req-10aa2145-e9cc-44fd-a42c-a732946a2b0b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 503 Service Unavailable +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-72fe4419-674a-428c-9f76-eb7201739c82 +Openstack-Request-Id: req-8abc7bb8-a574-40d7-a6b6-0d7208721ccb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-72fe4419-674a-428c-9f76-eb7201739c82 +Openstack-Request-Id: req-8abc7bb8-a574-40d7-a6b6-0d7208721ccb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-55dae12f-3ab1-498b-aeda-19e627680949 +Openstack-Request-Id: req-db4bcb27-3b35-4901-a52e-c4f72ba87288 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-55dae12f-3ab1-498b-aeda-19e627680949 +Openstack-Request-Id: req-db4bcb27-3b35-4901-a52e-c4f72ba87288 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets -GET: /v1/volume/targets {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b325838f-5523-470d-84ee-4d2c11e7d161 +Openstack-Request-Id: req-83cb061f-f81e-4c74-8976-de5649bcc3b2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"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": "b91dcb71-f045-4e23-ba77-a3eeb04f4d2a", "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"}]}]} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_013_owner_admin_can_get_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_013_owner_admin_can_get_node ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_del_host_with_mdns +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_del_host_with_mdns ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_258_allocations_allocation_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_258_allocations_allocation_id_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_014_owner_manager_can_get_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_014_owner_manager_can_get_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_251_allocations_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_251_allocations_get_observer ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_prevent_double_start +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_prevent_double_start ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_259_allocations_allocation_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_259_allocations_allocation_id_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_015_owner_member_can_get_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_015_owner_member_can_get_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_252_allocations_allocation_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_252_allocations_allocation_id_get_admin ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_clears_conductor_locks +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_clears_conductor_locks ... ok +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-acfc70f0-5dc1-49a9-b854-08c13e73b85c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "7b27e7bf-f270-4b38-8a43-13ea627015a1", "created_at": "2024-01-06T14:12:09.266069+00:00", "updated_at": "2024-01-06T14:12:09.290142+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/7b27e7bf-f270-4b38-8a43-13ea627015a1", "rel": "self"}, {"href": "http://localhost/allocations/7b27e7bf-f270-4b38-8a43-13ea627015a1", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b325838f-5523-470d-84ee-4d2c11e7d161 +Openstack-Request-Id: req-acfc70f0-5dc1-49a9-b854-08c13e73b85c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/volume/targets -GET: /v1/volume/targets {} +{"uuid": "7b27e7bf-f270-4b38-8a43-13ea627015a1", "created_at": "2024-01-06T14:12:09.266069+00:00", "updated_at": "2024-01-06T14:12:09.290142+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/7b27e7bf-f270-4b38-8a43-13ea627015a1", "rel": "self"}, {"href": "http://localhost/allocations/7b27e7bf-f270-4b38-8a43-13ea627015a1", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +API ACL Testing Path patch /v1/allocations/ac535b90-7ff0-482b-9b1d-32a9afc63cd2 +PATCH: /v1/allocations/ac535b90-7ff0-482b-9b1d-32a9afc63cd2 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d821d529-cced-40d1-a687-b171224bd591 +Openstack-Request-Id: req-d82eeba9-9df3-4af4-8499-ff941c5eb59c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"uuid": "ac535b90-7ff0-482b-9b1d-32a9afc63cd2", "created_at": "2024-01-06T14:12:09.583269+00:00", "updated_at": "2024-01-06T14:12:09.744273+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/ac535b90-7ff0-482b-9b1d-32a9afc63cd2", "rel": "self"}, {"href": "http://localhost/allocations/ac535b90-7ff0-482b-9b1d-32a9afc63cd2", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d821d529-cced-40d1-a687-b171224bd591 +Openstack-Request-Id: req-d82eeba9-9df3-4af4-8499-ff941c5eb59c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/volume/targets -GET: /v1/volume/targets {} -GOT:Response: 200 OK +{"uuid": "ac535b90-7ff0-482b-9b1d-32a9afc63cd2", "created_at": "2024-01-06T14:12:09.583269+00:00", "updated_at": "2024-01-06T14:12:09.744273+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/ac535b90-7ff0-482b-9b1d-32a9afc63cd2", "rel": "self"}, {"href": "http://localhost/allocations/ac535b90-7ff0-482b-9b1d-32a9afc63cd2", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +API ACL Testing Path patch /v1/allocations/7cfc7546-253d-4ea6-a6e2-0a9214da7a83 +PATCH: /v1/allocations/7cfc7546-253d-4ea6-a6e2-0a9214da7a83 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7bfad594-8a76-4c7d-b59b-e8ad900577ba +Openstack-Request-Id: req-affd34d9-f9a1-4f45-a058-fb3ce61cc4b2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_186_volume_targets_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_186_volume_targets_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_052_nodes_states_boot_mode_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_052_nodes_states_boot_mode_put_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_skip_missing -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_skip_missing ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_192_volume_volume_target_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_192_volume_volume_target_id_get_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test_set_node_deployment_steps -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test_set_node_deployment_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_187_volume_targets_post_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_187_volume_targets_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_053_nodes_states_secure_boot_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_053_nodes_states_secure_boot_put_admin ... ok -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test_set_node_deployment_steps_skip_missing -ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test_set_node_deployment_steps_skip_missing ... ok -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_error_on_template -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_error_on_template ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_193_volume_volume_target_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_193_volume_volume_target_id_patch_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_188_volume_targets_post_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_188_volume_targets_post_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_054_nodes_states_secure_boot_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_054_nodes_states_secure_boot_put_member ... ok -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_error_on_usersteps -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_error_on_usersteps ... ok -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_ok -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_194_volume_volume_target_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_194_volume_volume_target_id_patch_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_189_volume_targets_post_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_189_volume_targets_post_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_055_nodes_states_secure_boot_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_055_nodes_states_secure_boot_put_observer ... ok -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_skip_missing -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_skip_missing ... ok -ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_already_present -ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_already_present ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_195_volume_volume_target_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_195_volume_volume_target_id_patch_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_190_volume_volume_target_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_190_volume_volume_target_id_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_056_nodes_states_provision_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_056_nodes_states_provision_put_admin ... ok -ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_empty -ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_empty ... ok -ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_failed -ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_failed ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_196_volume_volume_target_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_196_volume_volume_target_id_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_057_nodes_states_provision_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_057_nodes_states_provision_put_member ... ok -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 7cfc7546-253d-4ea6-a6e2-0a9214da7a83 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7bfad594-8a76-4c7d-b59b-e8ad900577ba +Openstack-Request-Id: req-affd34d9-f9a1-4f45-a058-fb3ce61cc4b2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path post /v1/volume/targets -POST: /v1/volume/targets {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 1, 'volume_id': 'test-id'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 7cfc7546-253d-4ea6-a6e2-0a9214da7a83 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/allocations/6850562b-efc8-4686-9500-0815e2aee565 +PATCH: /v1/allocations/6850562b-efc8-4686-9500-0815e2aee565 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Location: http://localhost/v1/volume/targets/307a9cbc-62db-4d07-8f01-57fd1c4d3392 -Openstack-Request-Id: req-020e6ae5-3334-44a7-bf1d-fa41a7f20c2a +Openstack-Request-Id: req-f66cfb64-4031-491c-9384-0c9ac2f63544 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "307a9cbc-62db-4d07-8f01-57fd1c4d3392", "created_at": "2024-01-06T13:36:03.009671+00:00", "updated_at": null, "boot_index": 1, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/307a9cbc-62db-4d07-8f01-57fd1c4d3392", "rel": "self"}, {"href": "http://localhost/volume/targets/307a9cbc-62db-4d07-8f01-57fd1c4d3392", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -ACL Test GOT Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:update\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Location: http://localhost/v1/volume/targets/307a9cbc-62db-4d07-8f01-57fd1c4d3392 -Openstack-Request-Id: req-020e6ae5-3334-44a7-bf1d-fa41a7f20c2a +Openstack-Request-Id: req-f66cfb64-4031-491c-9384-0c9ac2f63544 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "307a9cbc-62db-4d07-8f01-57fd1c4d3392", "created_at": "2024-01-06T13:36:03.009671+00:00", "updated_at": null, "boot_index": 1, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/307a9cbc-62db-4d07-8f01-57fd1c4d3392", "rel": "self"}, {"href": "http://localhost/volume/targets/307a9cbc-62db-4d07-8f01-57fd1c4d3392", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -API ACL Testing Path post /v1/volume/targets -POST: /v1/volume/targets {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 2, 'volume_id': 'test-id2'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:update\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/allocations/27329063-ff82-4225-be68-fe0a6f0716fe +DELETE: /v1/allocations/27329063-ff82-4225-be68-fe0a6f0716fe +GOT:Response: 503 Service Unavailable Content-Type: application/json -Location: http://localhost/v1/volume/targets/8c145ecb-fce2-4023-b6b5-c4a3fdd8c1c8 -Openstack-Request-Id: req-b3fe8a89-9dca-4248-b337-929e7b3bdd0e +Openstack-Request-Id: req-cbafd4b9-9b5c-4cce-8bfd-7c616cbe9bf4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "8c145ecb-fce2-4023-b6b5-c4a3fdd8c1c8", "created_at": "2024-01-06T13:36:03.831434+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/8c145ecb-fce2-4023-b6b5-c4a3fdd8c1c8", "rel": "self"}, {"href": "http://localhost/volume/targets/8c145ecb-fce2-4023-b6b5-c4a3fdd8c1c8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -ACL Test GOT Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Location: http://localhost/v1/volume/targets/8c145ecb-fce2-4023-b6b5-c4a3fdd8c1c8 -Openstack-Request-Id: req-b3fe8a89-9dca-4248-b337-929e7b3bdd0e +Openstack-Request-Id: req-cbafd4b9-9b5c-4cce-8bfd-7c616cbe9bf4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "8c145ecb-fce2-4023-b6b5-c4a3fdd8c1c8", "created_at": "2024-01-06T13:36:03.831434+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/8c145ecb-fce2-4023-b6b5-c4a3fdd8c1c8", "rel": "self"}, {"href": "http://localhost/volume/targets/8c145ecb-fce2-4023-b6b5-c4a3fdd8c1c8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -API ACL Testing Path post /v1/volume/targets -POST: /v1/volume/targets {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 1, 'volume_id': 'test-id'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/allocations/f09a1e2f-094c-4d8f-8a83-5618953bfecf +DELETE: /v1/allocations/f09a1e2f-094c-4d8f-8a83-5618953bfecf +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-55155a80-dbb2-4dad-b487-770d6778593a +Openstack-Request-Id: req-bfc789c9-5c10-4ec6-95c8-54a8043edd47 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation f09a1e2f-094c-4d8f-8a83-5618953bfecf could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-55155a80-dbb2-4dad-b487-770d6778593a +Openstack-Request-Id: req-bfc789c9-5c10-4ec6-95c8-54a8043edd47 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation f09a1e2f-094c-4d8f-8a83-5618953bfecf could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/allocations/4856a9ba-d129-4f31-8989-0d83272baae3 +DELETE: /v1/allocations/4856a9ba-d129-4f31-8989-0d83272baae3 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-24f714f8-ea40-48e1-83ff-b9fc95f798c8 +Openstack-Request-Id: req-4ef9dc83-0e49-4d73-87d0-ac6403474a5e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:36:05.049080+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"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_260_allocations_allocation_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_260_allocations_allocation_id_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_016_owner_reader_can_get_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_016_owner_reader_can_get_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_253_allocations_allocation_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_253_allocations_allocation_id_get_member ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_dbapi_single_call +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_dbapi_single_call ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_261_nodes_allocation_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_261_nodes_allocation_get_admin ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_hw_type_register +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_hw_type_register ... ok ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-24f714f8-ea40-48e1-83ff-b9fc95f798c8 +Openstack-Request-Id: req-83cb061f-f81e-4c74-8976-de5649bcc3b2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:36:05.049080+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"} -API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +{"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": "b91dcb71-f045-4e23-ba77-a3eeb04f4d2a", "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"}]}]} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f25aa5b0-c346-44f3-ae7c-99f1af258fdb +Openstack-Request-Id: req-a732df24-696b-4db9-afbb-e0947ef2b6e3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:36:05.900668+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"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_191_volume_volume_target_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_191_volume_volume_target_id_get_member ... ok -ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_ok -ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_197_volume_volume_target_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_197_volume_volume_target_id_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_058_nodes_states_provision_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_058_nodes_states_provision_put_observer ... ok -ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_unsupported -ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_unsupported ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_192_volume_volume_target_id_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_192_volume_volume_target_id_get_reader ... ok -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_cleanup_after_timeout -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_cleanup_after_timeout ... ok -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_cleanup_after_timeout_shared_lock -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_cleanup_after_timeout_shared_lock ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_198_volume_volume_target_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_198_volume_volume_target_id_delete_observer ... ok -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler ... ok -GOT:Response: 404 Not Found +{"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": "a6d3425c-452a-4fd5-a767-2f94e15ffe12", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a92b563a-e217-4b88-ae5e-fe3489a42141 +Openstack-Request-Id: req-a732df24-696b-4db9-afbb-e0947ef2b6e3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"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": "a6d3425c-452a-4fd5-a767-2f94e15ffe12", "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"}]}]} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a92b563a-e217-4b88-ae5e-fe3489a42141 +Openstack-Request-Id: req-72b0f6e6-18dc-4b3a-be94-4580968ac19d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} -GOT:Response: 403 Forbidden +{"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": "9f528f5c-a56e-42e3-bb3b-9441047e6521", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f81c6c40-f0c5-4c2c-afaf-81949c9fabfe +Openstack-Request-Id: req-72b0f6e6-18dc-4b3a-be94-4580968ac19d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"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": "9f528f5c-a56e-42e3-bb3b-9441047e6521", "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"}]}]} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f81c6c40-f0c5-4c2c-afaf-81949c9fabfe +Openstack-Request-Id: req-56232686-c9c9-49e2-9696-3f7b4f72b389 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} -GOT:Response: 503 Service Unavailable +{"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": "6573f787-17b1-4ebe-8dcb-cf060a1e3a1d", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5fc49183-5bf4-4883-8a61-926222109fd3 +Openstack-Request-Id: req-56232686-c9c9-49e2-9696-3f7b4f72b389 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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": "6573f787-17b1-4ebe-8dcb-cf060a1e3a1d", "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"}]}]} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5fc49183-5bf4-4883-8a61-926222109fd3 +Openstack-Request-Id: req-6a2f6357-6464-4ccc-a376-0fc7c4ed1f98 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} -GOT:Response: 404 Not Found +{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "f663c5d8-f1f6-4445-bd45-d3f87e9347aa", "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"}]}]} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_017_lessee_admin_can_get_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_017_lessee_admin_can_get_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_254_allocations_allocation_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_254_allocations_allocation_id_get_observer ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_on_hw_types +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_on_hw_types ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_018_lessee_manager_can_get_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_018_lessee_manager_can_get_node ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_on_missing_driver +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_on_missing_driver ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_262_nodes_allocation_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_262_nodes_allocation_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_255_allocations_allocation_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_255_allocations_allocation_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_019_lessee_member_can_get_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_019_lessee_member_can_get_node ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_263_nodes_allocation_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_263_nodes_allocation_get_observer ... ok +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-9f815487-ef97-4c1a-976a-ce12b977c790 +Openstack-Request-Id: req-4a23b6c3-e417-45df-a066-b6325b801e57 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors +GET: /v1/conductors {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-9f815487-ef97-4c1a-976a-ce12b977c790 +Openstack-Request-Id: req-4fe44430-0aad-4add-97e1-3f53fd38f634 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors/test-conductor-node +GET: /v1/conductors/test-conductor-node {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-fc655332-a5ff-4d7a-905d-4da5dd06c64a +Openstack-Request-Id: req-d9fc5fc9-a8d6-4cd8-9bc0-db61ac489bfc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors/test-conductor-node +GET: /v1/conductors/test-conductor-node {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-fc655332-a5ff-4d7a-905d-4da5dd06c64a +Openstack-Request-Id: req-4151a642-5565-4f43-a33b-34cf6c693aa4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors/test-conductor-node +GET: /v1/conductors/test-conductor-node {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-351f3224-b11a-4817-884f-a97b315aa5b1 +Openstack-Request-Id: req-15d538ce-ce5c-48fd-85d6-79fdb5588a88 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/allocations +POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-351f3224-b11a-4817-884f-a97b315aa5b1 +Openstack-Request-Id: req-223bf6ae-0e0c-4597-a1f6-8bfd8a44c4c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/allocations +POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5b9cc5e3-3d60-4403-9ae8-cf252f13079a +Openstack-Request-Id: req-38d3751e-dce1-43ad-be70-61cd35a6ae65 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations +GET: /v1/allocations {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5b9cc5e3-3d60-4403-9ae8-cf252f13079a +Openstack-Request-Id: req-99154bd8-4272-4de8-9f05-e3d87b576f6b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations +GET: /v1/allocations {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4bb9bd0d-ff15-45a8-ad6a-fd006e66943f +Openstack-Request-Id: req-8be75e9c-7f36-45c3-aa12-58eb8475db47 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations +GET: /v1/allocations {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4bb9bd0d-ff15-45a8-ad6a-fd006e66943f +Openstack-Request-Id: req-62e7241f-2776-4222-907b-7b0327d54c29 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_059_nodes_states_raid_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_059_nodes_states_raid_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_193_volume_volume_target_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_193_volume_volume_target_id_patch_admin ... ok -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_cleanup_ironic_exception -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_cleanup_ironic_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_199_nodes_volume_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_199_nodes_volume_get_admin ... ok -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_cleanup_random_exception -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_cleanup_random_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_060_nodes_states_raid_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_060_nodes_states_raid_put_member ... ok -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_no_cleanup -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_no_cleanup ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_194_volume_volume_target_id_patch_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_194_volume_volume_target_id_patch_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_200_nodes_volume_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_200_nodes_volume_get_member ... ok -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_not_deploy -ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_not_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_061_nodes_states_raid_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_061_nodes_states_raid_put_observer ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_abort_on_conductor_take_over_cleaning -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_abort_on_conductor_take_over_cleaning ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_abort_on_conductor_take_over_deploying -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_abort_on_conductor_take_over_deploying ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_201_nodes_volume_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_201_nodes_volume_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_195_volume_volume_target_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_195_volume_volume_target_id_delete_admin ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_062_nodes_states_console_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_062_nodes_states_console_get_admin ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_cleanfail -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_cleanfail ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_196_volume_volume_target_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_196_volume_volume_target_id_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_202_nodes_volume_connectors_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_202_nodes_volume_connectors_get_admin ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_cleanwait -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_cleanwait ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_manual -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_manual ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_063_nodes_states_console_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_063_nodes_states_console_get_member ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_no_fail -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_no_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_197_volume_volume_target_id_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_197_volume_volume_target_id_delete_reader ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_no_teardown -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_no_teardown ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_064_nodes_states_console_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_064_nodes_states_console_put_admin ... ok -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations/0b8f5767-807b-41ee-9c44-27aaf1a43456 +GET: /v1/allocations/0b8f5767-807b-41ee-9c44-27aaf1a43456 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-478dd5f1-4627-428f-b48b-93563d4ce0e3 +Openstack-Request-Id: req-8e956490-66a8-4b77-a3f9-c43b3667bf80 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 0b8f5767-807b-41ee-9c44-27aaf1a43456 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations/f92ff375-271b-4e77-81d6-05cf782b37a0 +GET: /v1/allocations/f92ff375-271b-4e77-81d6-05cf782b37a0 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1e2ae498-4e06-45f2-9b68-d9ef900f8143 +Openstack-Request-Id: req-74fbe808-5fcc-42d5-9ab6-e0e6a918cd2e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation f92ff375-271b-4e77-81d6-05cf782b37a0 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations/e39bc683-d874-43ec-8705-2a3bce3881e8 +GET: /v1/allocations/e39bc683-d874-43ec-8705-2a3bce3881e8 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d084835d-c093-4453-9546-c0c6addf1f51 +Openstack-Request-Id: req-357ef338-bcdf-42ef-be21-d80ba32faa70 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation e39bc683-d874-43ec-8705-2a3bce3881e8 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/allocations/01b68cb9-7e14-4229-87d8-71b04b04ca88 +PATCH: /v1/allocations/01b68cb9-7e14-4229-87d8-71b04b04ca88 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bf9eaf1e-0ac0-4f32-b193-f70035cb18c5 +Openstack-Request-Id: req-e91fc127-4840-49a6-ab8d-b2a97d666677 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 01b68cb9-7e14-4229-87d8-71b04b04ca88 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/allocations/1ed20dcb-34d4-4451-a6c1-a03fa924f412 +PATCH: /v1/allocations/1ed20dcb-34d4-4451-a6c1-a03fa924f412 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1426037d-303f-4bb8-838a-7abed019bfaf +Openstack-Request-Id: req-ffa8b25e-b375-4857-9a79-047af659345e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 1ed20dcb-34d4-4451-a6c1-a03fa924f412 could not be found.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_256_allocations_allocation_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_256_allocations_allocation_id_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_020_lessee_reader_can_get_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_020_lessee_reader_can_get_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_257_allocations_allocation_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_257_allocations_allocation_id_patch_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_264_nodes_allocation_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_264_nodes_allocation_delete_admin ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_recover_nodes_stuck +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_recover_nodes_stuck ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_021_third_party_admin_cannot_get_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_021_third_party_admin_cannot_get_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_258_allocations_allocation_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_258_allocations_allocation_id_delete_admin ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_conductor +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_conductor ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_265_nodes_allocation_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_265_nodes_allocation_delete_member ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1d605d6a-dde8-4ae6-a97f-cc4f67e3fa80 +Openstack-Request-Id: req-6a2f6357-6464-4ccc-a376-0fc7c4ed1f98 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "f663c5d8-f1f6-4445-bd45-d3f87e9347aa", "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"}]}]} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a5037748-0958-40f4-bcc3-7965e3a97ad4 +Openstack-Request-Id: req-0b14f0d4-3bc6-41cd-b23b-374bad933d07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "37aaa9ff-a29a-480a-8936-771baf9dacf4", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-02bd5973-8589-4493-a790-a0f14773a508 +Openstack-Request-Id: req-0b14f0d4-3bc6-41cd-b23b-374bad933d07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "37aaa9ff-a29a-480a-8936-771baf9dacf4", "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"}]}]} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e1202d17-9c79-4dfb-933a-def6a7c66ffe +Openstack-Request-Id: req-cb9a1cc1-d207-4ec7-bd27-692c3eaa8bab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "babca007-c9ee-4897-b1fd-ce162a4c4462", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9f6640db-14c8-4189-a985-096dfab8c44a +Openstack-Request-Id: req-cb9a1cc1-d207-4ec7-bd27-692c3eaa8bab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} -GOT:Response: 403 Forbidden +{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "babca007-c9ee-4897-b1fd-ce162a4c4462", "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"}]}]} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-74df9c71-2ee5-436f-9496-2c477f0c74fb +Openstack-Request-Id: req-45acfe1d-fa0c-4718-828a-fd5d6ed2ca21 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} -GOT:Response: 403 Forbidden +{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "42e30f24-5aa5-4c07-b6f1-f00c2c00dd42", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-632fd82a-e21d-4dd8-9d0c-2fdf54cba645 +Openstack-Request-Id: req-45acfe1d-fa0c-4718-828a-fd5d6ed2ca21 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} -GOT:Response: 403 Forbidden +{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "42e30f24-5aa5-4c07-b6f1-f00c2c00dd42", "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"}]}]} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ce70cae1-d461-48ac-952f-d44b544bcc9b +Openstack-Request-Id: req-2f4d5ff0-e400-4ece-ae20-3ccead91f521 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} -GOT:Response: 404 Not Found +{"nodes": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9b18ed1f-83b1-4b61-9394-96e130db387b +Openstack-Request-Id: req-2f4d5ff0-e400-4ece-ae20-3ccead91f521 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_203_nodes_volume_connectors_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_203_nodes_volume_connectors_get_member ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_tear_down_error -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_tear_down_error ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_cleanwait_timeout -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_cleanwait_timeout ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_204_nodes_volume_connectors_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_204_nodes_volume_connectors_get_observer ... ok -ACL Test GOT Response: 200 OK +{"nodes": []} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 {} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_022_owner_reader_can_get_their_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_022_owner_reader_can_get_their_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_259_allocations_allocation_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_259_allocations_allocation_id_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_023_owner_reader_cannot_get_other_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_023_owner_reader_cannot_get_other_node ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_266_nodes_allocation_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_266_nodes_allocation_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_260_allocations_allocation_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_260_allocations_allocation_id_delete_observer ... ok +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f25aa5b0-c346-44f3-ae7c-99f1af258fdb +Openstack-Request-Id: req-4ef9dc83-0e49-4d73-87d0-ac6403474a5e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:36:05.900668+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"} -API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b54a700a-5bad-4ed0-b163-27272c4be836 +Openstack-Request-Id: req-36852095-7e9b-495d-bdc6-84013b50efbb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:36:06.726277+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"} +{"uuid": "d23a58a3-8bef-455d-8ed3-3d51a8d9603a", "created_at": "2024-01-06T14:12:11.242613+00:00", "updated_at": "2024-01-06T14:12:11.266445+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/d23a58a3-8bef-455d-8ed3-3d51a8d9603a", "rel": "self"}, {"href": "http://localhost/allocations/d23a58a3-8bef-455d-8ed3-3d51a8d9603a", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b54a700a-5bad-4ed0-b163-27272c4be836 +Openstack-Request-Id: req-36852095-7e9b-495d-bdc6-84013b50efbb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:36:06.726277+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"} -API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +{"uuid": "d23a58a3-8bef-455d-8ed3-3d51a8d9603a", "created_at": "2024-01-06T14:12:11.242613+00:00", "updated_at": "2024-01-06T14:12:11.266445+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/d23a58a3-8bef-455d-8ed3-3d51a8d9603a", "rel": "self"}, {"href": "http://localhost/allocations/d23a58a3-8bef-455d-8ed3-3d51a8d9603a", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-dc294ccc-74d2-4733-8169-8f4220a7add2 +Openstack-Request-Id: req-81baa198-c515-43a8-83e4-9f35e8d028c3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-dc294ccc-74d2-4733-8169-8f4220a7add2 +Openstack-Request-Id: req-81baa198-c515-43a8-83e4-9f35e8d028c3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8019e9dc-9ddd-47a1-8928-d56df8f6cce4 +Openstack-Request-Id: req-2dca8aed-b9c6-48a3-b180-b36ea68b6490 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "08ad00ed-4864-4669-9318-fbcfb772a9d5", "created_at": "2024-01-06T14:12:11.837968+00:00", "updated_at": "2024-01-06T14:12:11.862284+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/08ad00ed-4864-4669-9318-fbcfb772a9d5", "rel": "self"}, {"href": "http://localhost/allocations/08ad00ed-4864-4669-9318-fbcfb772a9d5", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8019e9dc-9ddd-47a1-8928-d56df8f6cce4 +Openstack-Request-Id: req-2dca8aed-b9c6-48a3-b180-b36ea68b6490 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +{"uuid": "08ad00ed-4864-4669-9318-fbcfb772a9d5", "created_at": "2024-01-06T14:12:11.837968+00:00", "updated_at": "2024-01-06T14:12:11.862284+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/08ad00ed-4864-4669-9318-fbcfb772a9d5", "rel": "self"}, {"href": "http://localhost/allocations/08ad00ed-4864-4669-9318-fbcfb772a9d5", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e3f0b79d-f0dd-4172-8e5a-18ce65e6c14c +Openstack-Request-Id: req-652f5c76-7f24-43d6-a0d5-67245c91acf2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e3f0b79d-f0dd-4172-8e5a-18ce65e6c14c +Openstack-Request-Id: req-652f5c76-7f24-43d6-a0d5-67245c91acf2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 503 Service Unavailable +API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5f69423b-8794-4074-ad9d-b782f397daea +Openstack-Request-Id: req-88ac252e-5e90-4a64-8f29-ab159a60620e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5f69423b-8794-4074-ad9d-b782f397daea +Openstack-Request-Id: req-88ac252e-5e90-4a64-8f29-ab159a60620e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3bfd6317-56d5-4eb0-be85-9d2e29c5a27f +Openstack-Request-Id: req-316d4033-c2b8-4049-be4d-2a9ce62f93da X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3bfd6317-56d5-4eb0-be85-9d2e29c5a27f +Openstack-Request-Id: req-316d4033-c2b8-4049-be4d-2a9ce62f93da X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_198_nodes_volume_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_198_nodes_volume_get_admin ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_cleanwait_timeout_handler_call -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_cleanwait_timeout_handler_call ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_065_nodes_states_console_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_065_nodes_states_console_put_member ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_199_nodes_volume_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_199_nodes_volume_get_member ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout_known_exc -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout_known_exc ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_205_nodes_volume_targets_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_205_nodes_volume_targets_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_066_nodes_states_console_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_066_nodes_states_console_put_observer ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout_unknown_exc -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout_unknown_exc ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_200_nodes_volume_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_200_nodes_volume_get_reader ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_power_state_error_handler_no_worker -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_power_state_error_handler_no_worker ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_206_nodes_volume_targets_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_206_nodes_volume_targets_get_member ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_power_state_error_handler_other_error -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_power_state_error_handler_other_error ... ok -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/deploy_templates +POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_267_deploy_templates_post_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_267_deploy_templates_post_admin ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-cee7161c-716c-4d81-ab7a-d108cdfe672c +Openstack-Request-Id: req-a9db531e-1b20-4808-b436-169dec682ac6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2024-01-06T14:12:12.502192+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": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-cee7161c-716c-4d81-ab7a-d108cdfe672c +Openstack-Request-Id: req-a9db531e-1b20-4808-b436-169dec682ac6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} +{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2024-01-06T14:12:12.502192+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": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b4aa0881-a0eb-4ab0-8250-8a14d4de1604 +Openstack-Request-Id: req-7a4ed7fe-be11-4905-a254-90fe3721e87c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b4aa0881-a0eb-4ab0-8250-8a14d4de1604 +Openstack-Request-Id: req-7a4ed7fe-be11-4905-a254-90fe3721e87c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 403 Forbidden +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f {} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_024_lessee_reader_can_get_their_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_024_lessee_reader_can_get_their_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_261_nodes_allocation_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_261_nodes_allocation_get_admin ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_driver_names +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_driver_names ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_025_lessee_reader_cant_get_other_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_025_lessee_reader_cant_get_other_node ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_268_deploy_templates_post_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_268_deploy_templates_post_member ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_driver_specific_tasks +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_driver_specific_tasks ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_262_nodes_allocation_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_262_nodes_allocation_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_269_deploy_templates_post_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_269_deploy_templates_post_observer ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5101dfe7-91d6-4377-aab4-631641fdf546 +Openstack-Request-Id: req-1d092573-6c4a-4dd1-bf65-540374254ba3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2024-01-06T14:12:13.025577+00:00", "updated_at": "2024-01-06T14:12:13.052365+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "9cd5fdd9-079d-4849-8039-02dad82a162d", "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "9cd5fdd9-079d-4849-8039-02dad82a162d", "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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5101dfe7-91d6-4377-aab4-631641fdf546 +Openstack-Request-Id: req-1d092573-6c4a-4dd1-bf65-540374254ba3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} -GOT:Response: 403 Forbidden +{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2024-01-06T14:12:13.025577+00:00", "updated_at": "2024-01-06T14:12:13.052365+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "9cd5fdd9-079d-4849-8039-02dad82a162d", "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "9cd5fdd9-079d-4849-8039-02dad82a162d", "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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5fcc4225-5449-440e-80af-69fda5443e3e +Openstack-Request-Id: req-12dda333-7fd4-4af8-9c72-09addeaa792a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5fcc4225-5449-440e-80af-69fda5443e3e +Openstack-Request-Id: req-12dda333-7fd4-4af8-9c72-09addeaa792a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6fbf0908-f1fc-46df-bf3a-7be505642a12 +Openstack-Request-Id: req-208f2592-4f69-4339-ad1e-2bbc1d367d26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_026_third_party_admin_cant_get_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_026_third_party_admin_cant_get_node ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_mdns +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_mdns ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_263_nodes_allocation_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_263_nodes_allocation_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_270_deploy_templates_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_270_deploy_templates_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_027_owner_reader_can_get_restricted_fields +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_027_owner_reader_can_get_restricted_fields ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_mdns_and_debug +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_mdns_and_debug ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_264_nodes_allocation_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_264_nodes_allocation_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_271_deploy_templates_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_271_deploy_templates_get_member ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_no_enabled_interfaces +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_no_enabled_interfaces ... ok ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6fbf0908-f1fc-46df-bf3a-7be505642a12 +Openstack-Request-Id: req-208f2592-4f69-4339-ad1e-2bbc1d367d26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} -GOT:Response: 503 Service Unavailable +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1dc4fc9f-59ed-4d36-b62b-27a27038c9b3 +Openstack-Request-Id: req-a92b506a-81e3-425e-b98b-644f816cc458 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2024-01-06T14:12:13.927807+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": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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"}]} +last_error +meow +reservation +lolcats +driver_internal_info +{'private_state': 'secret value'} +driver_info +{'foo': 'bar', 'fake_password': '******'} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1dc4fc9f-59ed-4d36-b62b-27a27038c9b3 +Openstack-Request-Id: req-a92b506a-81e3-425e-b98b-644f816cc458 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} -GOT:Response: 404 Not Found +{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2024-01-06T14:12:13.927807+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": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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"}]} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f {} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_028_lessee_reader_cannot_get_restricted_fields +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_028_lessee_reader_cannot_get_restricted_fields ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_272_deploy_templates_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_272_deploy_templates_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_265_nodes_allocation_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_265_nodes_allocation_delete_member ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_clears_conductor_locks +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_clears_conductor_locks ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_doesnt_unregister_conductor +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_doesnt_unregister_conductor ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_266_nodes_allocation_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_266_nodes_allocation_delete_observer ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-45008d19-22c5-41c9-8c02-3ae68329f5c3 +Location: http://localhost/v1/deploy_templates/a4677f3a-e5f5-44e0-be93-367f6be14696 +Openstack-Request-Id: req-1be5d1d2-401c-4012-9f60-a2a77ebbe80a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"uuid": "a4677f3a-e5f5-44e0-be93-367f6be14696", "created_at": "2024-01-06T14:12:13.139239+00:00", "updated_at": null, "name": "CUSTOM_TEST_TEMPLATE", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/a4677f3a-e5f5-44e0-be93-367f6be14696", "rel": "self"}, {"href": "http://localhost/deploy_templates/a4677f3a-e5f5-44e0-be93-367f6be14696", "rel": "bookmark"}], "steps": [{"interface": "deploy", "step": "noop", "args": {}, "priority": 0}]} +ACL Test GOT Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-45008d19-22c5-41c9-8c02-3ae68329f5c3 +Location: http://localhost/v1/deploy_templates/a4677f3a-e5f5-44e0-be93-367f6be14696 +Openstack-Request-Id: req-1be5d1d2-401c-4012-9f60-a2a77ebbe80a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} +{"uuid": "a4677f3a-e5f5-44e0-be93-367f6be14696", "created_at": "2024-01-06T14:12:13.139239+00:00", "updated_at": null, "name": "CUSTOM_TEST_TEMPLATE", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/a4677f3a-e5f5-44e0-be93-367f6be14696", "rel": "self"}, {"href": "http://localhost/deploy_templates/a4677f3a-e5f5-44e0-be93-367f6be14696", "rel": "bookmark"}], "steps": [{"interface": "deploy", "step": "noop", "args": {}, "priority": 0}]} +API ACL Testing Path post /v1/deploy_templates +POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ffe89c7e-02b7-48ca-a653-1603472d5513 +Openstack-Request-Id: req-97de5ffa-dcc6-4516-a1df-7dd75e96acd3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ffe89c7e-02b7-48ca-a653-1603472d5513 +Openstack-Request-Id: req-97de5ffa-dcc6-4516-a1df-7dd75e96acd3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_067_nodes_vendor_passthru_methods_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_067_nodes_vendor_passthru_methods_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_201_nodes_volume_connectors_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_201_nodes_volume_connectors_get_admin ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_provision_error_handler_no_worker -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_provision_error_handler_no_worker ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_207_nodes_volume_targets_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_207_nodes_volume_targets_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_068_nodes_vendor_passthru_methods_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_068_nodes_vendor_passthru_methods_get_member ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_provision_error_handler_other_error -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_provision_error_handler_other_error ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_208_drivers_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_208_drivers_get_admin ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/deploy_templates +POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1a61aa42-b6c6-4d1c-ab2a-c8087512915b +Openstack-Request-Id: req-39231815-5038-459a-8da2-7a9b60c64b75 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1a61aa42-b6c6-4d1c-ab2a-c8087512915b +Openstack-Request-Id: req-39231815-5038-459a-8da2-7a9b60c64b75 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates +GET: /v1/deploy_templates {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a32b1689-ed05-43df-b3d6-579ae63c7a36 +Openstack-Request-Id: req-dfe51148-d072-45ef-989f-05b34a4a54d3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"deploy_templates": [{"uuid": "f156c24c-6293-40c3-86c4-50273ed45f30", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/f156c24c-6293-40c3-86c4-50273ed45f30", "rel": "self"}, {"href": "http://localhost/deploy_templates/f156c24c-6293-40c3-86c4-50273ed45f30", "rel": "bookmark"}]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a32b1689-ed05-43df-b3d6-579ae63c7a36 +Openstack-Request-Id: req-dfe51148-d072-45ef-989f-05b34a4a54d3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +{"deploy_templates": [{"uuid": "f156c24c-6293-40c3-86c4-50273ed45f30", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/f156c24c-6293-40c3-86c4-50273ed45f30", "rel": "self"}, {"href": "http://localhost/deploy_templates/f156c24c-6293-40c3-86c4-50273ed45f30", "rel": "bookmark"}]}]} +API ACL Testing Path get /v1/deploy_templates +GET: /v1/deploy_templates {} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-b6a15640-e1e8-4c46-806a-0fd76c14b798 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-b6a15640-e1e8-4c46-806a-0fd76c14b798 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates +GET: /v1/deploy_templates {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-592025ee-23c7-4cb4-bb26-939effc049a4 +Openstack-Request-Id: req-68c36a23-963f-40f0-81ee-30fc13e9e612 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"deploy_templates": [{"uuid": "9613b28d-f558-4658-9a89-d4a4a5864e28", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/9613b28d-f558-4658-9a89-d4a4a5864e28", "rel": "self"}, {"href": "http://localhost/deploy_templates/9613b28d-f558-4658-9a89-d4a4a5864e28", "rel": "bookmark"}]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-592025ee-23c7-4cb4-bb26-939effc049a4 +Openstack-Request-Id: req-68c36a23-963f-40f0-81ee-30fc13e9e612 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +{"deploy_templates": [{"uuid": "9613b28d-f558-4658-9a89-d4a4a5864e28", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/9613b28d-f558-4658-9a89-d4a4a5864e28", "rel": "self"}, {"href": "http://localhost/deploy_templates/9613b28d-f558-4658-9a89-d4a4a5864e28", "rel": "bookmark"}]}]} +API ACL Testing Path get /v1/deploy_templates/1c737f90-6d1a-4614-9d84-f65245e1456a +GET: /v1/deploy_templates/1c737f90-6d1a-4614-9d84-f65245e1456a {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-98c2d2cb-a12e-4718-81b9-1a6488304cc8 +Openstack-Request-Id: req-2153628b-c256-4f5f-965b-696ebc50f0e5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"uuid": "1c737f90-6d1a-4614-9d84-f65245e1456a", "created_at": "2024-01-06T14:12:14.680484+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/1c737f90-6d1a-4614-9d84-f65245e1456a", "rel": "self"}, {"href": "http://localhost/deploy_templates/1c737f90-6d1a-4614-9d84-f65245e1456a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_273_deploy_templates_deploy_template_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_273_deploy_templates_deploy_template_id_get_admin ... ok +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-7a65c0c3-df43-418c-995a-3144fbc43e43 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2024-01-06T14:12:14.237744+00:00", "updated_at": "2024-01-06T14:12:14.265202+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "825dbe2c-c0d7-4940-ad34-8a1c521938d5", "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "825dbe2c-c0d7-4940-ad34-8a1c521938d5", "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"}]} +last_error +** Value Redacted - Requires baremetal:node:get:last_error permission. ** +reservation +** Redacted - requires baremetal:node:get:reservation permission. ** +driver_internal_info +{'content': '** Redacted - Requires baremetal:node:get:driver_internal_info permission. **'} +driver_info +{'content': '** Redacted - requires baremetal:node:get:driver_info permission. **'} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-98c2d2cb-a12e-4718-81b9-1a6488304cc8 +Openstack-Request-Id: req-7a65c0c3-df43-418c-995a-3144fbc43e43 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2024-01-06T14:12:14.237744+00:00", "updated_at": "2024-01-06T14:12:14.265202+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "825dbe2c-c0d7-4940-ad34-8a1c521938d5", "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "825dbe2c-c0d7-4940-ad34-8a1c521938d5", "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"}]} +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3166216f-440f-452c-b138-ea2ec3cec71a +Openstack-Request-Id: req-5954d5df-6f0d-4670-b20b-ad474d3282ee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_202_nodes_volume_connectors_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_202_nodes_volume_connectors_get_member ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_bad_state -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_bad_state ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_069_nodes_vendor_passthru_methods_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_069_nodes_vendor_passthru_methods_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_209_drivers_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_209_drivers_get_member ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_ironic_exc -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_ironic_exc ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_203_nodes_volume_connectors_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_203_nodes_volume_connectors_get_reader ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_other_exc -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_other_exc ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_set_failed_state_false -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_set_failed_state_false ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_070_nodes_vendor_passthru_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_070_nodes_vendor_passthru_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_210_drivers_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_210_drivers_get_observer ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_cleaning_error_handler_no_worker -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_cleaning_error_handler_no_worker ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_204_nodes_volume_targets_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_204_nodes_volume_targets_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_071_nodes_vendor_passthru_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_071_nodes_vendor_passthru_get_member ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_cleaning_error_handler_other_error -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_cleaning_error_handler_other_error ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_211_drivers_driver_name_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_211_drivers_driver_name_get_admin ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_deploying_error_handler_no_worker -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_deploying_error_handler_no_worker ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_205_nodes_volume_targets_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_205_nodes_volume_targets_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_212_drivers_driver_name_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_212_drivers_driver_name_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_072_nodes_vendor_passthru_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_072_nodes_vendor_passthru_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_213_drivers_driver_name_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_213_drivers_driver_name_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_206_nodes_volume_targets_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_206_nodes_volume_targets_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_073_nodes_vendor_passthru_post_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_073_nodes_vendor_passthru_post_admin ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_deploying_error_handler_other_error -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_deploying_error_handler_other_error ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_207_drivers_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_207_drivers_get_admin ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_rescue_error_handler_no_worker -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_rescue_error_handler_no_worker ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_214_drivers_properties_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_214_drivers_properties_get_admin ... ok -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_rescue_error_handler_other_error -ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_rescue_error_handler_other_error ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_074_nodes_vendor_passthru_post_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_074_nodes_vendor_passthru_post_member ... ok -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_exclude_current_conductor -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_exclude_current_conductor ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_208_drivers_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_208_drivers_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_215_drivers_properties_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_215_drivers_properties_get_member ... ok -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_clean -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_clean ... ok -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-4b0c230c-7654-494e-ba57-da2242ca7946 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"nodes": [{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2024-01-06T14:12:14.478862+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": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "2024-01-06T14:12:14.508152+00:00", "updated_at": "2024-01-06T14:12:14.536061+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", "traits": []}, "instance_uuid": "2507cb75-95ec-4d4d-90b8-8b41caf511b8", "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-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "2507cb75-95ec-4d4d-90b8-8b41caf511b8", "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"}]}]} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_029_owner_reader_can_get_detail +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_029_owner_reader_can_get_detail ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_uninitialized_conductor +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_uninitialized_conductor ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4b0c230c-7654-494e-ba57-da2242ca7946 +Openstack-Request-Id: req-5954d5df-6f0d-4670-b20b-ad474d3282ee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} -GOT:Response: 404 Not Found +{"nodes": [{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2024-01-06T14:12:14.478862+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": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "2024-01-06T14:12:14.508152+00:00", "updated_at": "2024-01-06T14:12:14.536061+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", "traits": []}, "instance_uuid": "2507cb75-95ec-4d4d-90b8-8b41caf511b8", "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-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "2507cb75-95ec-4d4d-90b8-8b41caf511b8", "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"}]}]} +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_030_lessee_reader_can_get_detail +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_030_lessee_reader_can_get_detail ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_274_deploy_templates_deploy_template_id_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_274_deploy_templates_deploy_template_id_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_267_deploy_templates_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_267_deploy_templates_post_admin ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_unregisters_conductor +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_unregisters_conductor ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_031_third_party_admin_cannot_get_detail +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_031_third_party_admin_cannot_get_detail ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_275_deploy_templates_deploy_template_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_275_deploy_templates_deploy_template_id_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_268_deploy_templates_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_268_deploy_templates_post_member ... ok +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_warning_on_low_workers_pool +ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_warning_on_low_workers_pool ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_269_deploy_templates_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_269_deploy_templates_post_observer ... ok +ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive +ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_032_owner_admin_can_patch_node_extra +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_032_owner_admin_can_patch_node_extra ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_276_deploy_templates_deploy_template_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_276_deploy_templates_deploy_template_id_patch_admin ... ok +ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift +ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_270_deploy_templates_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_270_deploy_templates_get_admin ... ok +ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_build +ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_build ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_277_deploy_templates_deploy_template_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_277_deploy_templates_deploy_template_id_patch_member ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-dc982c03-91ad-4b65-b91b-8b5e653d0b07 +Openstack-Request-Id: req-4c131a9f-bcb2-4f5e-8425-5f19e8b0795f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2024-01-06T14:12:14.807872+00:00", "updated_at": "2024-01-06T14:12:14.837281+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "73cd3edb-3987-4ac1-a74c-d988b13fcd95", "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "73cd3edb-3987-4ac1-a74c-d988b13fcd95", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-dc982c03-91ad-4b65-b91b-8b5e653d0b07 +Openstack-Request-Id: req-4c131a9f-bcb2-4f5e-8425-5f19e8b0795f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} -GOT:Response: 403 Forbidden +{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2024-01-06T14:12:14.807872+00:00", "updated_at": "2024-01-06T14:12:14.837281+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "73cd3edb-3987-4ac1-a74c-d988b13fcd95", "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "73cd3edb-3987-4ac1-a74c-d988b13fcd95", "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"}]}]} +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-08b8b3ab-6833-461c-b22f-d3cbaf0808bc +Openstack-Request-Id: req-a20e41f5-9f05-4cc4-8a28-6ebe87ff78aa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"nodes": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-08b8b3ab-6833-461c-b22f-d3cbaf0808bc +Openstack-Request-Id: req-a20e41f5-9f05-4cc4-8a28-6ebe87ff78aa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +{"nodes": []} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-80a9bbce-1327-4e63-98d7-818cfeab42a3 +Openstack-Request-Id: req-7ce7c36e-aac2-4073-9e14-a033e6c6b7c1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-80a9bbce-1327-4e63-98d7-818cfeab42a3 +Openstack-Request-Id: req-7ce7c36e-aac2-4073-9e14-a033e6c6b7c1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_no_deploy_timeout +ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_no_deploy_timeout ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_033_owner_manager_can_patch_node_extra +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_033_owner_manager_can_patch_node_extra ... ok +API ACL Testing Path patch /v1/allocations/7f4e2a5e-67ed-4aee-9afa-8a4f563466f2 +PATCH: /v1/allocations/7f4e2a5e-67ed-4aee-9afa-8a4f563466f2 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-42824f2f-2bdf-433c-9074-43b6f0372a2f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-42824f2f-2bdf-433c-9074-43b6f0372a2f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-32d38d76-2a92-414d-af01-7315044d62d6 +Openstack-Request-Id: req-b5075368-58b8-4c5d-a424-9179c5069393 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 7f4e2a5e-67ed-4aee-9afa-8a4f563466f2 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/allocations/803ccb13-cd98-48ab-9f13-fc14470f7ba9 +DELETE: /v1/allocations/803ccb13-cd98-48ab-9f13-fc14470f7ba9 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-32d38d76-2a92-414d-af01-7315044d62d6 +Openstack-Request-Id: req-3bac6dd5-f91b-4107-8955-997d1bb55a27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 803ccb13-cd98-48ab-9f13-fc14470f7ba9 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/allocations/131cd0f9-65b9-4830-84ac-d237eab19d23 +DELETE: /v1/allocations/131cd0f9-65b9-4830-84ac-d237eab19d23 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-68ae10e2-1205-4e4f-aa74-ed7ce53289ac +Openstack-Request-Id: req-272893ec-bd47-4d71-bbc6-76c4acf10d04 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 131cd0f9-65b9-4830-84ac-d237eab19d23 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/allocations/686c7734-c039-4c70-850a-06ac930464c5 +DELETE: /v1/allocations/686c7734-c039-4c70-850a-06ac930464c5 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-68ae10e2-1205-4e4f-aa74-ed7ce53289ac +Openstack-Request-Id: req-8b400562-7da7-42b5-b682-8ad3a8e64b90 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 686c7734-c039-4c70-850a-06ac930464c5 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-aade03b6-88fc-42ad-a825-1035a59434aa +Openstack-Request-Id: req-f3096169-12aa-4d28-93fd-1180cdab7ea4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-aade03b6-88fc-42ad-a825-1035a59434aa +Openstack-Request-Id: req-33a234fe-d837-4611-9f25-2705059e2568 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_075_nodes_vendor_passthru_post_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_075_nodes_vendor_passthru_post_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_209_drivers_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_209_drivers_get_reader ... ok -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_deploy -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_216_drivers_properties_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_216_drivers_properties_get_observer ... ok -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_operation -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_operation ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_076_nodes_vendor_passthru_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_076_nodes_vendor_passthru_put_admin ... ok -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_false_no_need -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_false_no_need ... ok -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3166216f-440f-452c-b138-ea2ec3cec71a +Openstack-Request-Id: req-bf696b3e-1a7c-4325-8f7a-ae24a296a473 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f08d0be6-9d1c-4cf2-bb99-9cd3c3ee044f +Openstack-Request-Id: req-4612b455-74c0-45d8-9002-b97a57bd6c10 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f08d0be6-9d1c-4cf2-bb99-9cd3c3ee044f +Openstack-Request-Id: req-9d7f470c-4737-44c4-b1e9-487d55e19007 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-078b5ac1-fcc8-4166-86e3-7618086dfb17 +Openstack-Request-Id: req-b05a14c2-dcb4-428a-9748-eda56db886cf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/deploy_templates +POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-078b5ac1-fcc8-4166-86e3-7618086dfb17 +Openstack-Request-Id: req-f066f846-28ef-4fee-a62d-15c18696eb96 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/deploy_templates +POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-3e1fd331-3fe3-49f4-a058-0ad2e9bd3336 +Openstack-Request-Id: req-1a0d2df8-49a3-474e-8e34-6ceb3dabea28 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/deploy_templates +POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-3e1fd331-3fe3-49f4-a058-0ad2e9bd3336 +Openstack-Request-Id: req-7f4a173c-47c9-4337-9ab7-14b11e69da9b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates +GET: /v1/deploy_templates {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-fa499345-30b2-45cc-a57b-33be7aa34fe6 +Openstack-Request-Id: req-6078cc32-889f-4abe-a2fb-1663a116e87a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_271_deploy_templates_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_271_deploy_templates_get_member ... ok +ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_no_deploy_timeout_fallback +ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_no_deploy_timeout_fallback ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_278_deploy_templates_deploy_template_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_278_deploy_templates_deploy_template_id_patch_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_272_deploy_templates_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_272_deploy_templates_get_observer ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_exception_getting_current +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_exception_getting_current ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_279_deploy_templates_deploy_template_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_279_deploy_templates_deploy_template_id_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_034_owner_member_can_patch_node_extra +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_034_owner_member_can_patch_node_extra ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_273_deploy_templates_deploy_template_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_273_deploy_templates_deploy_template_id_get_admin ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_exception_in_background_task +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_exception_in_background_task ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_035_owner_reader_cannot_patch_node_extra +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_035_owner_reader_cannot_patch_node_extra ... ok ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-fa499345-30b2-45cc-a57b-33be7aa34fe6 +Openstack-Request-Id: req-2153628b-c256-4f5f-965b-696ebc50f0e5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/drivers -GET: /v1/drivers {} -GOT:Response: 200 OK +{"uuid": "1c737f90-6d1a-4614-9d84-f65245e1456a", "created_at": "2024-01-06T14:12:14.680484+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/1c737f90-6d1a-4614-9d84-f65245e1456a", "rel": "self"}, {"href": "http://localhost/deploy_templates/1c737f90-6d1a-4614-9d84-f65245e1456a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +API ACL Testing Path get /v1/deploy_templates/a51b95c7-ced9-4d05-9ccf-6d755d5ddd97 +GET: /v1/deploy_templates/a51b95c7-ced9-4d05-9ccf-6d755d5ddd97 {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0926afe9-8651-4aba-8fc6-7bcf2894a6bb +Openstack-Request-Id: req-47af705b-1f7c-4a30-86d8-3537e3f16b9f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"drivers": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0926afe9-8651-4aba-8fc6-7bcf2894a6bb +Openstack-Request-Id: req-47af705b-1f7c-4a30-86d8-3537e3f16b9f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"drivers": []} -API ACL Testing Path get /v1/drivers -GET: /v1/drivers {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates/d3f326d2-b065-4d74-b777-4e94bc60a21c +GET: /v1/deploy_templates/d3f326d2-b065-4d74-b777-4e94bc60a21c {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-46a52a15-e412-4c05-b7a1-06f5dfca124e +Openstack-Request-Id: req-da3392e9-aff6-4502-b604-aea955f2fe8c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"drivers": []} +{"uuid": "d3f326d2-b065-4d74-b777-4e94bc60a21c", "created_at": "2024-01-06T14:12:15.309120+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/d3f326d2-b065-4d74-b777-4e94bc60a21c", "rel": "self"}, {"href": "http://localhost/deploy_templates/d3f326d2-b065-4d74-b777-4e94bc60a21c", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-46a52a15-e412-4c05-b7a1-06f5dfca124e +Openstack-Request-Id: req-da3392e9-aff6-4502-b604-aea955f2fe8c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"drivers": []} -API ACL Testing Path get /v1/drivers -GET: /v1/drivers {} +{"uuid": "d3f326d2-b065-4d74-b777-4e94bc60a21c", "created_at": "2024-01-06T14:12:15.309120+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/d3f326d2-b065-4d74-b777-4e94bc60a21c", "rel": "self"}, {"href": "http://localhost/deploy_templates/d3f326d2-b065-4d74-b777-4e94bc60a21c", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +API ACL Testing Path patch /v1/deploy_templates/4f8753ec-9e20-4aac-af46-cbde87501c50 +PATCH: /v1/deploy_templates/4f8753ec-9e20-4aac-af46-cbde87501c50 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b03cbb16-489f-4d89-b769-9fdd0fde454a +Openstack-Request-Id: req-f4582c8a-5c2a-44ee-a0c1-d455b608e161 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"drivers": []} +{"uuid": "4f8753ec-9e20-4aac-af46-cbde87501c50", "created_at": "2024-01-06T14:12:15.570945+00:00", "updated_at": "2024-01-06T14:12:15.738404+00:00", "name": "CUSTOM_MAGIC", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/4f8753ec-9e20-4aac-af46-cbde87501c50", "rel": "self"}, {"href": "http://localhost/deploy_templates/4f8753ec-9e20-4aac-af46-cbde87501c50", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b03cbb16-489f-4d89-b769-9fdd0fde454a +Openstack-Request-Id: req-f4582c8a-5c2a-44ee-a0c1-d455b608e161 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"drivers": []} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_210_drivers_driver_name_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_210_drivers_driver_name_get_admin ... ok -GOT:Response: 404 Not Found +{"uuid": "4f8753ec-9e20-4aac-af46-cbde87501c50", "created_at": "2024-01-06T14:12:15.570945+00:00", "updated_at": "2024-01-06T14:12:15.738404+00:00", "name": "CUSTOM_MAGIC", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/4f8753ec-9e20-4aac-af46-cbde87501c50", "rel": "self"}, {"href": "http://localhost/deploy_templates/4f8753ec-9e20-4aac-af46-cbde87501c50", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +API ACL Testing Path patch /v1/deploy_templates/025e4d7a-9a7c-4eee-aaf6-332c8564367e +PATCH: /v1/deploy_templates/025e4d7a-9a7c-4eee-aaf6-332c8564367e [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-162ed827-58bf-4e74-903f-724a1ba60d95 +Openstack-Request-Id: req-fd20b9b8-9a77-433d-afb3-857c872feeb4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e293837d-d7b9-42dd-bd1d-f4d500113773 +Openstack-Request-Id: req-fd20b9b8-9a77-433d-afb3-857c872feeb4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/deploy_templates/469ea984-e0d3-4ffa-96a0-ce4dc6cc5a28 +PATCH: /v1/deploy_templates/469ea984-e0d3-4ffa-96a0-ce4dc6cc5a28 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8e648aef-4040-42cf-b3ad-27d4a8efeb60 +Openstack-Request-Id: req-47cb30d6-8613-4a9f-9bbf-075b724eaeeb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1dac6c4c-e734-4712-a870-e780e17b9e4d +Openstack-Request-Id: req-47cb30d6-8613-4a9f-9bbf-075b724eaeeb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-735fb479-30f0-4ca3-bba9-0be9889a2188 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/deploy_templates/cd398f69-8ea2-41d9-93e8-e9339ffffe74 +DELETE: /v1/deploy_templates/cd398f69-8ea2-41d9-93e8-e9339ffffe74 +GOT:Response: 204 No Content +Openstack-Request-Id: req-5b152c13-cd1e-41fb-aa15-6b6fa7472adc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers -GET: /v1/drivers {} -GOT:Response: 500 Internal Server Error -Content-Type: application/json -Openstack-Request-Id: req-41e6daef-a001-4bbc-9b99-aaae4ec063d9 + +ACL Test GOT Response: 204 No Content +Openstack-Request-Id: req-5b152c13-cd1e-41fb-aa15-6b6fa7472adc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers -GET: /v1/drivers {} -GOT:Response: 500 Internal Server Error + +API ACL Testing Path delete /v1/deploy_templates/d36003d5-8d94-42ae-8b97-503ab30a9d31 +DELETE: /v1/deploy_templates/d36003d5-8d94-42ae-8b97-503ab30a9d31 +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_280_deploy_templates_deploy_template_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_280_deploy_templates_deploy_template_id_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_274_deploy_templates_deploy_template_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_274_deploy_templates_deploy_template_id_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_281_deploy_templates_deploy_template_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_281_deploy_templates_deploy_template_id_delete_observer ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_existing +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_existing ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_275_deploy_templates_deploy_template_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_275_deploy_templates_deploy_template_id_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_036_lessee_admin_can_patch_node_extra +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_036_lessee_admin_can_patch_node_extra ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_282_chassis_post_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_282_chassis_post_admin ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_node_already_locked +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_node_already_locked ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_276_deploy_templates_deploy_template_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_276_deploy_templates_deploy_template_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_283_chassis_post_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_283_chassis_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_037_lessee_manager_can_patch_node_extra +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_037_lessee_manager_can_patch_node_extra ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_valid +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_valid ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_277_deploy_templates_deploy_template_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_277_deploy_templates_deploy_template_id_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_284_chassis_post_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_284_chassis_post_observer ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_validate_fail +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_validate_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_278_deploy_templates_deploy_template_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_278_deploy_templates_deploy_template_id_patch_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_038_lessee_member_can_patch_node_extra +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_038_lessee_member_can_patch_node_extra ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_285_chassis_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_285_chassis_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_279_deploy_templates_deploy_template_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_279_deploy_templates_deploy_template_id_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_039_lessee_reader_cannot_patch_node_extra +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_039_lessee_reader_cannot_patch_node_extra ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_worker_pool_full +ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_worker_pool_full ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_286_chassis_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_286_chassis_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_280_deploy_templates_deploy_template_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_280_deploy_templates_deploy_template_id_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_040_third_party_admin_cannot_patch_node_extra +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_040_third_party_admin_cannot_patch_node_extra ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_exception_in_background_task +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_exception_in_background_task ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_281_deploy_templates_deploy_template_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_281_deploy_templates_deploy_template_id_delete_observer ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8b5211db-5fad-473d-a0bd-c653ccfee4da +Openstack-Request-Id: req-ecebec64-480e-4652-853c-c169c9acf04d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers -GET: /v1/drivers {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bd5ca132-ed6a-4796-b224-7a4112b529c1 +Openstack-Request-Id: req-ecebec64-480e-4652-853c-c169c9acf04d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz -GET: /v1/drivers/fake-driverz {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/deploy_templates/c3ab1509-aff7-40cc-a077-134d8674f2c2 +DELETE: /v1/deploy_templates/c3ab1509-aff7-40cc-a077-134d8674f2c2 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6e72a3b8-b778-40f5-b035-60d29ae93cc4 +Openstack-Request-Id: req-48941a1a-1a7a-4b51-bcfb-32df03a37dc5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz -GET: /v1/drivers/fake-driverz {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-df2c1a47-517e-440e-8519-31f041232c89 +Openstack-Request-Id: req-48941a1a-1a7a-4b51-bcfb-32df03a37dc5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz -GET: /v1/drivers/fake-driverz {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/chassis +POST: /v1/chassis {'description': 'test-chassis'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-35af590b-3b51-4f9d-8c60-91c35566defa +Location: http://localhost/v1/chassis/ae2b1454-57b1-4347-bb1f-5b07d8a1627f +Openstack-Request-Id: req-af6b5f26-1720-4b47-8c30-ab05af791699 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/properties -GET: /v1/drivers/fake-driverz/properties {} -GOT:Response: 500 Internal Server Error +{"uuid": "ae2b1454-57b1-4347-bb1f-5b07d8a1627f", "created_at": "2024-01-06T14:12:17.356629+00:00", "updated_at": null, "description": "test-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/ae2b1454-57b1-4347-bb1f-5b07d8a1627f", "rel": "self"}, {"href": "http://localhost/chassis/ae2b1454-57b1-4347-bb1f-5b07d8a1627f", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/ae2b1454-57b1-4347-bb1f-5b07d8a1627f/nodes", "rel": "self"}, {"href": "http://localhost/chassis/ae2b1454-57b1-4347-bb1f-5b07d8a1627f/nodes", "rel": "bookmark"}]]} +ACL Test GOT Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-8696aad6-f5f5-4ff7-8817-2bb89d905686 +Location: http://localhost/v1/chassis/ae2b1454-57b1-4347-bb1f-5b07d8a1627f +Openstack-Request-Id: req-af6b5f26-1720-4b47-8c30-ab05af791699 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/properties -GET: /v1/drivers/fake-driverz/properties {} -GOT:Response: 500 Internal Server Error +{"uuid": "ae2b1454-57b1-4347-bb1f-5b07d8a1627f", "created_at": "2024-01-06T14:12:17.356629+00:00", "updated_at": null, "description": "test-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/ae2b1454-57b1-4347-bb1f-5b07d8a1627f", "rel": "self"}, {"href": "http://localhost/chassis/ae2b1454-57b1-4347-bb1f-5b07d8a1627f", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/ae2b1454-57b1-4347-bb1f-5b07d8a1627f/nodes", "rel": "self"}, {"href": "http://localhost/chassis/ae2b1454-57b1-4347-bb1f-5b07d8a1627f/nodes", "rel": "bookmark"}]]} +API ACL Testing Path post /v1/chassis +POST: /v1/chassis {'description': 'test-chassis'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1da7da51-5923-47cb-bd1a-a0eb493c57f0 +Openstack-Request-Id: req-d2348cdd-2ac7-4236-a668-9ed7f4489f9f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/properties -GET: /v1/drivers/fake-driverz/properties {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d0ad86ef-4a0e-45e3-9e51-82243c13d30d +Openstack-Request-Id: req-d2348cdd-2ac7-4236-a668-9ed7f4489f9f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties -GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_217_drivers_raid_logical_disk_properties_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_217_drivers_raid_logical_disk_properties_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_218_drivers_raid_logical_disk_properties_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_218_drivers_raid_logical_disk_properties_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_077_nodes_vendor_passthru_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_077_nodes_vendor_passthru_put_member ... ok -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_false_power_on -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_false_power_on ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_211_drivers_driver_name_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_211_drivers_driver_name_get_member ... ok -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_true -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_true ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_219_drivers_raid_logical_disk_properties_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_219_drivers_raid_logical_disk_properties_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_078_nodes_vendor_passthru_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_078_nodes_vendor_passthru_put_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_212_drivers_driver_name_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_212_drivers_driver_name_get_reader ... ok -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_with_smart_nic_port -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_with_smart_nic_port ... ok -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_remove_node_rescue_password_save_false -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_remove_node_rescue_password_save_false ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_220_drivers_vendor_passthru_methods_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_220_drivers_vendor_passthru_methods_get_admin ... ok -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_remove_node_rescue_password_save_true -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_remove_node_rescue_password_save_true ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_079_nodes_vendor_passthru_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_079_nodes_vendor_passthru_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_213_drivers_properties_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_213_drivers_properties_get_admin ... ok -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_restore_power_state_if_needed_false -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_restore_power_state_if_needed_false ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_221_drivers_vendor_passthru_methods_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_221_drivers_vendor_passthru_methods_get_member ... ok -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_restore_power_state_if_needed_true -ironic.tests.unit.conductor.test_utils.MiscTestCase.test_restore_power_state_if_needed_true ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_080_nodes_vendor_passthru_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_080_nodes_vendor_passthru_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_214_drivers_properties_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_214_drivers_properties_get_member ... ok -ironic.tests.unit.conductor.test_utils.NodeGetBootModeTestCase.test_node_get_boot_mode_unsupported -ironic.tests.unit.conductor.test_utils.NodeGetBootModeTestCase.test_node_get_boot_mode_unsupported ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_222_drivers_vendor_passthru_methods_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_222_drivers_vendor_passthru_methods_get_observer ... ok -ironic.tests.unit.conductor.test_utils.NodeGetBootModeTestCase.test_node_get_boot_mode_valid -ironic.tests.unit.conductor.test_utils.NodeGetBootModeTestCase.test_node_get_boot_mode_valid ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_081_nodes_vendor_passthru_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_081_nodes_vendor_passthru_delete_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_215_drivers_properties_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_215_drivers_properties_get_reader ... ok -ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_adopting -ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_adopting ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_223_drivers_vendor_passthru_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_223_drivers_vendor_passthru_get_admin ... ok -ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_always -ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_always ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_082_nodes_traits_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_082_nodes_traits_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_216_drivers_raid_logical_disk_properties_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_216_drivers_raid_logical_disk_properties_get_admin ... ok -ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_default -ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_default ... ok -ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_never -ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_never ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/chassis +POST: /v1/chassis {'description': 'test-chassis'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9000ee8a-0601-492d-b8e6-b69beaf077ef +Openstack-Request-Id: req-14c8ff53-627d-4082-ba36-6e8895ea33f8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9000ee8a-0601-492d-b8e6-b69beaf077ef -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-39edbb37-c387-480c-bd9c-8c09554d501f +Openstack-Request-Id: req-14c8ff53-627d-4082-ba36-6e8895ea33f8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis +GET: /v1/chassis {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-39edbb37-c387-480c-bd9c-8c09554d501f +Openstack-Request-Id: req-3a504793-4e19-4135-adfc-44d9967aba24 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 404 Not Found +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4c9c06b6-32eb-4780-b664-04501dd2ef89 +Openstack-Request-Id: req-3a504793-4e19-4135-adfc-44d9967aba24 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"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"}]}]} +API ACL Testing Path get /v1/chassis +GET: /v1/chassis {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4c9c06b6-32eb-4780-b664-04501dd2ef89 +Openstack-Request-Id: req-23aa3c35-7676-4eeb-bd1b-2bd7254890a1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-dc5a6ffc-ce23-4d1c-9d97-cb1ea37fa3d9 +Openstack-Request-Id: req-23aa3c35-7676-4eeb-bd1b-2bd7254890a1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis +GET: /v1/chassis {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-dc5a6ffc-ce23-4d1c-9d97-cb1ea37fa3d9 +Openstack-Request-Id: req-15d92c63-7483-45e6-aa1e-76ceebae5825 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +{"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"}]}]}ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_287_chassis_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_287_chassis_get_observer ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_node_already_locked +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_node_already_locked ... ok +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ca95ee20-0067-4bc0-9971-da70f93c257c +Openstack-Request-Id: req-062039eb-3f6b-47a0-8951-1379b9a5e293 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ca95ee20-0067-4bc0-9971-da70f93c257c +Openstack-Request-Id: req-062039eb-3f6b-47a0-8951-1379b9a5e293 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GOT:Response: 404 Not Found +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6da6b7b3-9798-42cc-861c-a9ce3ed7fecd +Openstack-Request-Id: req-09b23241-baa0-4433-bd46-6ee999094a74 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6da6b7b3-9798-42cc-861c-a9ce3ed7fecd +Openstack-Request-Id: req-09b23241-baa0-4433-bd46-6ee999094a74 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-07643e11-3829-4cbd-8b63-8cc8ac074963 +Openstack-Request-Id: req-225c8474-383a-4eab-bc90-fda0cc1ab59d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-07643e11-3829-4cbd-8b63-8cc8ac074963 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-7bd23684-f802-47ea-9260-39fda18912b4 +Openstack-Request-Id: req-225c8474-383a-4eab-bc90-fda0cc1ab59d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"traits": ["trait1"]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7bd23684-f802-47ea-9260-39fda18912b4 +Openstack-Request-Id: req-1e5abf35-2613-496b-ac55-d7d415d92aad X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"traits": ["trait1"]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-126abe7c-7c10-40a3-a871-7818ed91121a +Openstack-Request-Id: req-1e5abf35-2613-496b-ac55-d7d415d92aad X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_083_nodes_traits_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_083_nodes_traits_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_217_drivers_raid_logical_disk_properties_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_217_drivers_raid_logical_disk_properties_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_224_drivers_vendor_passthru_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_224_drivers_vendor_passthru_get_member ... ok -ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_non_existent_device -ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_non_existent_device ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_084_nodes_traits_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_084_nodes_traits_get_observer ... ok -ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_valid -ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_valid ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_218_drivers_raid_logical_disk_properties_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_218_drivers_raid_logical_disk_properties_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_225_drivers_vendor_passthru_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_225_drivers_vendor_passthru_get_observer ... ok -ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_power_soft_reboot -ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_power_soft_reboot ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_085_nodes_traits_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_085_nodes_traits_put_admin ... ok -API ACL Testing Path get /v1/drivers/fake-driverz -GET: /v1/drivers/fake-driverz {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c0e5558d-6339-4d9a-8917-7cef44d4e064 +Openstack-Request-Id: req-0402fdc8-4c9c-4b54-a8b9-cb1cade42a48 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c0e5558d-6339-4d9a-8917-7cef44d4e064 +Openstack-Request-Id: req-0402fdc8-4c9c-4b54-a8b9-cb1cade42a48 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz -GET: /v1/drivers/fake-driverz {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-506288cf-09ef-448f-afff-07ade336fc11 +Openstack-Request-Id: req-71eba093-45da-473c-ac99-bbf18dd0f57c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-506288cf-09ef-448f-afff-07ade336fc11 +Openstack-Request-Id: req-71eba093-45da-473c-ac99-bbf18dd0f57c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz -GET: /v1/drivers/fake-driverz {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-782a0b36-858e-4a22-a892-4998753274e3 +Openstack-Request-Id: req-b969cd04-334a-423e-bb98-5261bc09392f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-782a0b36-858e-4a22-a892-4998753274e3 +Openstack-Request-Id: req-b969cd04-334a-423e-bb98-5261bc09392f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/properties -GET: /v1/drivers/fake-driverz/properties {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-74e38ca4-e20c-4cd2-b515-65e8d8f13583 +Openstack-Request-Id: req-81b640cd-d8e1-4fcf-bf18-a8c117267e86 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-74e38ca4-e20c-4cd2-b515-65e8d8f13583 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/properties -GET: /v1/drivers/fake-driverz/properties {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-c6fe0b3d-ec5f-4961-b764-8726d05f517a +Openstack-Request-Id: req-81b640cd-d8e1-4fcf-bf18-a8c117267e86 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_041_owner_admin_can_change_drivers +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_041_owner_admin_can_change_drivers ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_288_chassis_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_288_chassis_detail_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_282_chassis_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_282_chassis_post_admin ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_power_on +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_power_on ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_289_chassis_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_289_chassis_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_042_owner_manager_can_change_drivers +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_042_owner_manager_can_change_drivers ... ok +GET: /v1/deploy_templates {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-c6fe0b3d-ec5f-4961-b764-8726d05f517a +Openstack-Request-Id: req-cb760280-242e-45ce-93e2-e1ac9e0c9405 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/properties -GET: /v1/drivers/fake-driverz/properties {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates +GET: /v1/deploy_templates {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-e97fb3d5-efa4-4607-9910-6b67bc4a29b8 +Openstack-Request-Id: req-54bfd94f-c98f-4b78-89e7-c42c2507fa1e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates/2c87a23a-93f4-488d-930b-7d3085b34bf0 +GET: /v1/deploy_templates/2c87a23a-93f4-488d-930b-7d3085b34bf0 {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-e97fb3d5-efa4-4607-9910-6b67bc4a29b8 +Openstack-Request-Id: req-34173bd3-7238-4013-a204-74fffcdbc6e8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties -GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates/e682ce65-d202-4a8b-9725-82555b4daf80 +GET: /v1/deploy_templates/e682ce65-d202-4a8b-9725-82555b4daf80 {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-376fff63-8e64-4ce2-942b-5bbe6c3474ee +Openstack-Request-Id: req-6ded0366-3c4c-4eb8-b390-0a1b27b22ef2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates/d8aa8fbf-2e4a-4729-bcbe-002d71bd9ac6 +GET: /v1/deploy_templates/d8aa8fbf-2e4a-4729-bcbe-002d71bd9ac6 {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-376fff63-8e64-4ce2-942b-5bbe6c3474ee +Openstack-Request-Id: req-33aeb61d-536e-4e56-b607-8086eb94e43c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties -GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/deploy_templates/6b55d023-718b-460e-9111-5ca575a23308 +PATCH: /v1/deploy_templates/6b55d023-718b-460e-9111-5ca575a23308 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-9317d545-8376-42c8-8899-0493d11cf071 +Openstack-Request-Id: req-3b282d05-2f49-4a27-9c37-b48f82aa7bb6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:update\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/deploy_templates/8e0f99e1-9edc-4628-9912-4a92c410a193 +PATCH: /v1/deploy_templates/8e0f99e1-9edc-4628-9912-4a92c410a193 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-9317d545-8376-42c8-8899-0493d11cf071 +Openstack-Request-Id: req-19a269fd-136d-4c76-8f51-6617ebbfc997 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties -GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:update\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/deploy_templates/c585caf3-0eb4-4f3c-a47f-0571fb8b60f2 +PATCH: /v1/deploy_templates/c585caf3-0eb4-4f3c-a47f-0571fb8b60f2 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-79b63c8e-e08a-49e7-9c88-ccf9abb7acdf +Openstack-Request-Id: req-096e5a10-ee4c-4c5b-b945-7d213b9ad98b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:update\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/deploy_templates/21d5fc3e-a6d0-43ce-ae29-e4c62a998d7d +DELETE: /v1/deploy_templates/21d5fc3e-a6d0-43ce-ae29-e4c62a998d7d +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-79b63c8e-e08a-49e7-9c88-ccf9abb7acdf +Openstack-Request-Id: req-6e6782f5-71ca-44f0-8d6f-da0e744f24b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods -GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_219_drivers_vendor_passthru_methods_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_219_drivers_vendor_passthru_methods_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_226_drivers_vendor_passthru_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_226_drivers_vendor_passthru_post_admin ... ok -ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_power_soft_reboot_timeout -ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_power_soft_reboot_timeout ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_220_drivers_vendor_passthru_methods_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_220_drivers_vendor_passthru_methods_get_member ... ok -ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off -ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_227_drivers_vendor_passthru_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_227_drivers_vendor_passthru_post_member ... ok -ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off_storage_detach -ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off_storage_detach ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_221_drivers_vendor_passthru_methods_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_221_drivers_vendor_passthru_methods_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_228_drivers_vendor_passthru_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_228_drivers_vendor_passthru_post_observer ... ok -ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off_timeout -ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off_timeout ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_086_nodes_traits_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_086_nodes_traits_put_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_222_drivers_vendor_passthru_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_222_drivers_vendor_passthru_get_admin ... ok +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/deploy_templates/5da8cce5-8dbc-4b63-a4e4-188a52ca62d9 +DELETE: /v1/deploy_templates/5da8cce5-8dbc-4b63-a4e4-188a52ca62d9 GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-b122119a-4197-4fd6-8d67-fd03959dbc2c +Openstack-Request-Id: req-92e5655d-b4b2-4dea-9089-e8a45d474076 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties -GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/deploy_templates/155ecab2-03d7-4123-ae80-181c45fdad66 +DELETE: /v1/deploy_templates/155ecab2-03d7-4123-ae80-181c45fdad66 GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-dd098f96-ea95-4ce4-978d-192787d5d276 +Openstack-Request-Id: req-19a8195d-a818-4cea-aa97-f3380c7f8f82 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties -GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/chassis +POST: /v1/chassis {'description': 'test-chassis'} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-ad4dfe36-1190-4634-8aa9-ac63c82fcbfa +Openstack-Request-Id: req-6bf94f6d-3c86-4bec-ba0c-71a8d2cd4afc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods -GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} -GOT:Response: 500 Internal Server Error +{"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}"} +API ACL Testing Path post /v1/chassis +POST: /v1/chassis {'description': 'test-chassis'} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_283_chassis_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_283_chassis_post_member ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_soft_power_off_timeout +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_soft_power_off_timeout ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_284_chassis_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_284_chassis_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_290_chassis_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_290_chassis_detail_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_043_owner_member_can_patch_all_the_things +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_043_owner_member_can_patch_all_the_things ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_unsupported_state +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_unsupported_state ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_285_chassis_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_285_chassis_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_291_chassis_chassis_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_291_chassis_chassis_id_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_286_chassis_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_286_chassis_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_292_chassis_chassis_id_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_292_chassis_chassis_id_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_044_owner_member_can_change_lessee +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_044_owner_member_can_change_lessee ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_validate_fail +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_validate_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_287_chassis_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_287_chassis_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_045_lessee_admin_cannot_change_lessee +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_045_lessee_admin_cannot_change_lessee ... ok + +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a7719e30-5eb7-49e0-b3c2-627c11944728 +Openstack-Request-Id: req-15d92c63-7483-45e6-aa1e-76ceebae5825 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods -GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} -GOT:Response: 500 Internal Server Error +{"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"}]}]} +API ACL Testing Path get /v1/chassis/detail +GET: /v1/chassis/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c915bdb1-bddb-40f1-8c9a-b1f774e977b1 +Openstack-Request-Id: req-0fe5b5b0-31da-4fb2-9f5d-6db36c7efdbc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods -GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} -GOT:Response: 500 Internal Server Error +{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:12:18.854259+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"}]]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-24e5bfff-b06a-47e6-8f86-292e454a6f44 +Openstack-Request-Id: req-0fe5b5b0-31da-4fb2-9f5d-6db36c7efdbc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test -GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} -GOT:Response: 500 Internal Server Error +{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:12:18.854259+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"}]]}]} +API ACL Testing Path get /v1/chassis/detail +GET: /v1/chassis/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-cc9bdcb8-ab07-4c45-83b4-8f92e5dcf92e +Openstack-Request-Id: req-feea6a35-ff80-47d7-bf53-5673786f8d3a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test -GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3ea1d15e-5788-4979-aba6-9a4d6f4359c2 +Openstack-Request-Id: req-feea6a35-ff80-47d7-bf53-5673786f8d3a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test -GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/detail +GET: /v1/chassis/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-92a97628-edd3-4951-b780-23a5a4a4aaf4 +Openstack-Request-Id: req-29200e61-e69a-49fe-9cbb-d85b6522bfab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test -POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 500 Internal Server Error +{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:12:19.503322+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"}]]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d50aa816-0725-46e5-b949-f82b2c2d6efc +Openstack-Request-Id: req-29200e61-e69a-49fe-9cbb-d85b6522bfab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test -POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 500 Internal Server Error +{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:12:19.503322+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"}]]}]} +API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0090f2a5-9116-4cd5-bc27-aeba01444251 +Openstack-Request-Id: req-8a9c63e3-6ec6-4df2-bdb9-aa46877623fe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test -POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 500 Internal Server Error +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:12:19.788357+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"}]]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a93ad679-c052-4e5f-9431-d2b45b9a445e +Openstack-Request-Id: req-8a9c63e3-6ec6-4df2-bdb9-aa46877623fe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test -PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_229_drivers_vendor_passthru_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_229_drivers_vendor_passthru_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_087_nodes_traits_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_087_nodes_traits_put_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_223_drivers_vendor_passthru_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_223_drivers_vendor_passthru_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_230_drivers_vendor_passthru_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_230_drivers_vendor_passthru_put_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_224_drivers_vendor_passthru_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_224_drivers_vendor_passthru_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_088_nodes_traits_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_088_nodes_traits_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_231_drivers_vendor_passthru_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_231_drivers_vendor_passthru_put_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_225_drivers_vendor_passthru_post_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_225_drivers_vendor_passthru_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_089_nodes_traits_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_089_nodes_traits_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_232_drivers_vendor_passthru_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_232_drivers_vendor_passthru_delete_admin ... skipped 'not updated for scope testing' -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_226_drivers_vendor_passthru_post_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_226_drivers_vendor_passthru_post_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_090_nodes_traits_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_090_nodes_traits_delete_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_233_drivers_vendor_passthru_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_233_drivers_vendor_passthru_delete_observer ... skipped 'not updated for scope testing' -GOT:Response: 404 Not Found +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:12:19.788357+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"}]]} +API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-15179229-29ca-411c-ab62-b6e2907d6ae0 +Openstack-Request-Id: req-43a07e57-f266-41a1-a715-727853118d82 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-15179229-29ca-411c-ab62-b6e2907d6ae0 +Openstack-Request-Id: req-43a07e57-f266-41a1-a715-727853118d82 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods -GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_293_chassis_chassis_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_293_chassis_chassis_id_get_observer ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_worker_pool_full +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_worker_pool_full ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_288_chassis_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_288_chassis_detail_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_046_lessee_manager_cannot_change_lessee +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_046_lessee_manager_cannot_change_lessee ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_294_chassis_chassis_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_294_chassis_chassis_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_289_chassis_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_289_chassis_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_047_lessee_admin_cannot_change_owner +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_047_lessee_admin_cannot_change_owner ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_295_chassis_chassis_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_295_chassis_chassis_id_patch_member ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_get_power_fail +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_get_power_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_290_chassis_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_290_chassis_detail_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_291_chassis_chassis_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_291_chassis_chassis_id_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_296_chassis_chassis_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_296_chassis_chassis_id_patch_observer ... ok +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'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-992568ed-ca77-4f00-9af2-9408611498bc +Openstack-Request-Id: req-30ffb8c5-6eda-4652-bb41-50a20808190d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-992568ed-ca77-4f00-9af2-9408611498bc +Openstack-Request-Id: req-30ffb8c5-6eda-4652-bb41-50a20808190d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods -GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'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-61ce74f4-7a73-4f8a-b02d-410e91ace83c +Openstack-Request-Id: req-324e5235-9959-430f-9fde-ef510c4f3ef7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-61ce74f4-7a73-4f8a-b02d-410e91ace83c +Openstack-Request-Id: req-324e5235-9959-430f-9fde-ef510c4f3ef7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test -GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'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-35b0f793-33c7-416a-a00f-d80905ad46ec +Openstack-Request-Id: req-05537f25-5a4a-437e-a4ed-322ca52d357e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-35b0f793-33c7-416a-a00f-d80905ad46ec +Openstack-Request-Id: req-05537f25-5a4a-437e-a4ed-322ca52d357e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test -GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/lessee', 'value': '198566a5-a609-4463-9800-e8920be7c2fa'}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ce5e0afc-3bb4-49de-a21a-4e0b4e17be78 +Openstack-Request-Id: req-b2021dd8-2bc7-44c3-8dc1-f864da635b28 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ce5e0afc-3bb4-49de-a21a-4e0b4e17be78 +Openstack-Request-Id: req-b2021dd8-2bc7-44c3-8dc1-f864da635b28 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test -GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/lessee', 'value': '1234'}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c3b6f27e-80e8-4351-bcf1-0f7ed693ec9d +Openstack-Request-Id: req-384ef53b-f190-4458-bd08-371f6b261d93 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:lessee\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c3b6f27e-80e8-4351-bcf1-0f7ed693ec9d +Openstack-Request-Id: req-384ef53b-f190-4458-bd08-371f6b261d93 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test -POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:lessee\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/lessee', 'value': '1234'}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8d58cd81-ce7e-420f-bcef-f407e96a2216 +Openstack-Request-Id: req-a5439436-784d-4193-8452-5b2e7ba516b2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:lessee\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8d58cd81-ce7e-420f-bcef-f407e96a2216 +Openstack-Request-Id: req-a5439436-784d-4193-8452-5b2e7ba516b2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test -POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:lessee\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/owner', 'value': '1234'}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c24a5461-f0c8-4b03-8f7c-da12ec152c54 +Openstack-Request-Id: req-ddae01e5-2d94-4085-9c70-264f1a9015f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c24a5461-f0c8-4b03-8f7c-da12ec152c54 +Openstack-Request-Id: req-ddae01e5-2d94-4085-9c70-264f1a9015f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test -POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/owner', 'value': '1234'}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3f7eb612-a5d3-4299-9421-b4830daf1d59 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_227_drivers_vendor_passthru_post_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_227_drivers_vendor_passthru_post_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_091_nodes_traits_trait_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_091_nodes_traits_trait_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_234_nodes_bios_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_234_nodes_bios_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_228_drivers_vendor_passthru_put_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_228_drivers_vendor_passthru_put_admin ... ok -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-126abe7c-7c10-40a3-a871-7818ed91121a +Openstack-Request-Id: req-874a89e6-aff5-42bd-bd06-90c846dff3cd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_048_lessee_manager_cannot_change_owner +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_048_lessee_manager_cannot_change_owner ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_no_state_change +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_no_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_292_chassis_chassis_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_292_chassis_chassis_id_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_297_chassis_chassis_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_297_chassis_chassis_id_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_293_chassis_chassis_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_293_chassis_chassis_id_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_049_owner_admin_can_change_lessee +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_049_owner_admin_can_change_lessee ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_298_chassis_chassis_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_298_chassis_chassis_id_delete_member ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_set_power_fail +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_set_power_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_294_chassis_chassis_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_294_chassis_chassis_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_299_chassis_chassis_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_299_chassis_chassis_id_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_050_owner_manager_can_change_lessee +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_050_owner_manager_can_change_lessee ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_295_chassis_chassis_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_295_chassis_chassis_id_patch_member ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_spawn_fail +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_spawn_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_051_owner_admin_cannot_change_owner +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_051_owner_admin_cannot_change_owner ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c8067a17-5555-4690-84dc-3e77de3c160f +Openstack-Request-Id: req-5fd00638-2ee6-486f-8155-d9b989becf7a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"traits": ["trait1"]} +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:12:20.318399+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"}]]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c8067a17-5555-4690-84dc-3e77de3c160f +Openstack-Request-Id: req-5fd00638-2ee6-486f-8155-d9b989becf7a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"traits": ["trait1"]} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -GOT:Response: 503 Service Unavailable +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:12:20.318399+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"}]]} +API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-21221152-fb40-40b6-a231-b7d37b964a78 +Openstack-Request-Id: req-6a84d9ab-9e8d-4a55-9c1e-1454d095c31c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:12:20.568027+00:00", "updated_at": "2024-01-06T14:12:20.701332+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"}]]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-21221152-fb40-40b6-a231-b7d37b964a78 +Openstack-Request-Id: req-6a84d9ab-9e8d-4a55-9c1e-1454d095c31c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -GOT:Response: 404 Not Found +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:12:20.568027+00:00", "updated_at": "2024-01-06T14:12:20.701332+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"}]]} +API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ed0e0470-7f79-4f55-b8c5-087f4a10e1cc +Openstack-Request-Id: req-19a3d91b-8451-4345-a078-56dc88e838bb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ed0e0470-7f79-4f55-b8c5-087f4a10e1cc +Openstack-Request-Id: req-19a3d91b-8451-4345-a078-56dc88e838bb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-324c7fca-3ac3-43ab-9bb3-7de5588a531b +Openstack-Request-Id: req-bac5ffe6-c6aa-4c7e-a1cf-f6c4b84195c0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-324c7fca-3ac3-43ab-9bb3-7de5588a531b +Openstack-Request-Id: req-bac5ffe6-c6aa-4c7e-a1cf-f6c4b84195c0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-b399f5b0-df53-46e2-a21d-8d7f1930d5a5 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GOT:Response: 204 No Content +Openstack-Request-Id: req-94cc74b6-29f2-4dd8-96d8-c71b6b281f97 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-b399f5b0-df53-46e2-a21d-8d7f1930d5a5 + +ACL Test GOT Response: 204 No Content +Openstack-Request-Id: req-94cc74b6-29f2-4dd8-96d8-c71b6b281f97 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 404 Not Found + +API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a1333d45-198f-4c61-882b-4fffe8d15515 +Openstack-Request-Id: req-2bb8f595-7a86-4c8d-8e29-42c00077288e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a1333d45-198f-4c61-882b-4fffe8d15515 +Openstack-Request-Id: req-2bb8f595-7a86-4c8d-8e29-42c00077288e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9a514f5c-7164-410f-b671-f00c3d297907 +Openstack-Request-Id: req-b4f0e90b-2fbb-4b4b-8101-30d5cbfacf59 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9a514f5c-7164-410f-b671-f00c3d297907 +Openstack-Request-Id: req-b4f0e90b-2fbb-4b4b-8101-30d5cbfacf59 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_300_node_history_get_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_300_node_history_get_admin ... ok +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-b4c85124-dbd9-4899-96db-fdd40c1aa102 +Openstack-Request-Id: req-7141bf45-de27-458c-a92d-3c2decf41e4c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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}"} +API ACL Testing Path post /v1/chassis +POST: /v1/chassis {'description': 'test-chassis'} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-b4c85124-dbd9-4899-96db-fdd40c1aa102 +Openstack-Request-Id: req-16d94752-e5ef-417b-8abc-ea771d0df84b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_092_nodes_traits_trait_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_092_nodes_traits_trait_put_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_235_nodes_bios_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_235_nodes_bios_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_229_drivers_vendor_passthru_put_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_229_drivers_vendor_passthru_put_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_236_nodes_bios_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_236_nodes_bios_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_093_nodes_traits_trait_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_093_nodes_traits_trait_put_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_230_drivers_vendor_passthru_put_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_230_drivers_vendor_passthru_put_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_237_nodes_bios_bios_setting_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_237_nodes_bios_bios_setting_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_094_nodes_traits_trait_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_094_nodes_traits_trait_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_231_drivers_vendor_passthru_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_231_drivers_vendor_passthru_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_238_nodes_bios_bios_setting_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_238_nodes_bios_bios_setting_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_095_nodes_traits_trait_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_095_nodes_traits_trait_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_232_drivers_vendor_passthru_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_232_drivers_vendor_passthru_delete_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_239_nodes_bios_bios_setting_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_239_nodes_bios_bios_setting_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_096_nodes_traits_trait_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_096_nodes_traits_trait_delete_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_233_nodes_bios_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_233_nodes_bios_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_240_conductors_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_240_conductors_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_097_nodes_vifs_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_097_nodes_vifs_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_234_nodes_bios_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_234_nodes_bios_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_241_conductors_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_241_conductors_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_098_nodes_vifs_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_098_nodes_vifs_get_member ... ok -ACL Test GOT Response: 403 Forbidden +{"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}"} +API ACL Testing Path get /v1/chassis +GET: /v1/chassis {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-3f7eb612-a5d3-4299-9421-b4830daf1d59 +Openstack-Request-Id: req-2c1f5e9e-8cf4-42e7-9953-e4968ee0a080 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test -PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis +GET: /v1/chassis {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-43832bce-edcf-4c8c-8ba8-704586bacd8d +Openstack-Request-Id: req-9b6c8fce-b13b-422b-aad4-a6ecaafd4979 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis +GET: /v1/chassis {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-43832bce-edcf-4c8c-8ba8-704586bacd8d +Openstack-Request-Id: req-cfce9c7d-31d6-4863-b6cd-33dd2bb29e35 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test -PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/detail +GET: /v1/chassis/detail {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-39a35501-b919-42eb-845a-6b77d0327839 +Openstack-Request-Id: req-9c8f4328-87c0-45c9-a5d4-f2e68913f1da X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/detail +GET: /v1/chassis/detail {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-39a35501-b919-42eb-845a-6b77d0327839 +Openstack-Request-Id: req-f69aee25-9367-435a-b53a-e3ca0423da8f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test -PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/detail +GET: /v1/chassis/detail {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-f05923b6-f074-4db6-b9e0-3e1a94af1c28 +Openstack-Request-Id: req-7703d932-122e-470a-8c6f-b8709ee703a5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-f05923b6-f074-4db6-b9e0-3e1a94af1c28 +Openstack-Request-Id: req-cf06f8ab-2f52-4523-a7d9-2d85d0fbe727 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/drivers/fake-driverz/vendor_passthru?method=test -DELETE: /v1/drivers/fake-driverz/vendor_passthru?method=test -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-79093e95-0bf8-4749-8e3c-74293082b0bb +Openstack-Request-Id: req-faea1605-2c0d-42d9-aec7-3b1c1484111e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-79093e95-0bf8-4749-8e3c-74293082b0bb +Openstack-Request-Id: req-47ad6c29-ffc0-4710-9f64-32ad7de5e4ce X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/drivers/fake-driverz/vendor_passthru?method=test -DELETE: /v1/drivers/fake-driverz/vendor_passthru?method=test -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-de799ac8-2013-4682-9f6c-1ca63d98c0bd +Openstack-Request-Id: req-43f5f2b8-85e0-42c1-8178-85b8a8f45361 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"role:member and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-6737d1d0-cf99-4408-8e29-bf2ff9c5729e +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"role:member and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_296_chassis_chassis_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_296_chassis_chassis_id_patch_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_052_owner_manager_cannot_change_owner +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_052_owner_manager_cannot_change_owner ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_301_node_history_get_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_301_node_history_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_297_chassis_chassis_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_297_chassis_chassis_id_delete_admin ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_success +ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_success ... ok +ironic.tests.unit.conductor.test_manager.DestroyPortgroupTestCase.test_destroy_portgroup +ironic.tests.unit.conductor.test_manager.DestroyPortgroupTestCase.test_destroy_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_302_node_history_get_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_302_node_history_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_298_chassis_chassis_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_298_chassis_chassis_id_delete_member ... ok +ironic.tests.unit.conductor.test_manager.DestroyPortgroupTestCase.test_destroy_portgroup_node_locked +ironic.tests.unit.conductor.test_manager.DestroyPortgroupTestCase.test_destroy_portgroup_node_locked ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_053_lessee_member_can_set_protected +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_053_lessee_member_can_set_protected ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_303_node_history_get_entry_admin +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_303_node_history_get_entry_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_054_lessee_member_cannot_patch_instance_info +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_054_lessee_member_cannot_patch_instance_info ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_304_node_history_get_entry_member +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_304_node_history_get_entry_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_055_lessee_member_cannot_patch_driver_info +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_055_lessee_member_cannot_patch_driver_info ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_299_chassis_chassis_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_299_chassis_chassis_id_delete_observer ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated_abort +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated_abort ... ok +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_305_node_history_get_entry_observer +ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_305_node_history_get_entry_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_300_node_history_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_300_node_history_get_admin ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated_abort_last_clean_step +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated_abort_last_clean_step ... ok ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-de799ac8-2013-4682-9f6c-1ca63d98c0bd +Openstack-Request-Id: req-874a89e6-aff5-42bd-bd06-90c846dff3cd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/lessee', 'value': '1234'}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-cb8f2c84-6553-41d7-b65e-feda6912a296 +Openstack-Request-Id: req-4858a26c-5817-45e2-bd86-908430eba03f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"bios": [{"created_at": "2024-01-06T13:36:38.091077+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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-cb8f2c84-6553-41d7-b65e-feda6912a296 +Openstack-Request-Id: req-4858a26c-5817-45e2-bd86-908430eba03f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"bios": [{"created_at": "2024-01-06T13:36:38.091077+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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/lessee', 'value': '1234'}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c3097df3-c572-4b31-85dc-96f7ce4c8bbf +Openstack-Request-Id: req-a16a1e6b-af5b-4d1d-ab30-7d9149996a66 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"bios": [{"created_at": "2024-01-06T13:36:38.928587+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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c3097df3-c572-4b31-85dc-96f7ce4c8bbf +Openstack-Request-Id: req-a16a1e6b-af5b-4d1d-ab30-7d9149996a66 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"bios": [{"created_at": "2024-01-06T13:36:38.928587+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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_235_nodes_bios_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_235_nodes_bios_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_242_conductors_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_242_conductors_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_099_nodes_vifs_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_099_nodes_vifs_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_236_nodes_bios_bios_setting_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_236_nodes_bios_bios_setting_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_243_conductors_hostname_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_243_conductors_hostname_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_237_nodes_bios_bios_setting_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_237_nodes_bios_bios_setting_get_member ... ok -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/owner', 'value': '1234'}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1266a50a-3d55-4e7f-9efb-b55ba36ec5c1 +Openstack-Request-Id: req-b3fe27ff-5975-47d0-86df-30ebfe016815 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1266a50a-3d55-4e7f-9efb-b55ba36ec5c1 +Openstack-Request-Id: req-b3fe27ff-5975-47d0-86df-30ebfe016815 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/owner', 'value': '1234'}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5c76e905-c290-4128-8c75-d19ab0d8a759 +Openstack-Request-Id: req-a8080cfa-6553-414d-85ba-25c1e1753f93 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5c76e905-c290-4128-8c75-d19ab0d8a759 +Openstack-Request-Id: req-a8080cfa-6553-414d-85ba-25c1e1753f93 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/protected', 'value': True}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-372e56c8-792e-40d1-9af2-4cf336a5f69e +Openstack-Request-Id: req-d38f35ab-e32f-406c-8cd0-4fb4350084f2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-372e56c8-792e-40d1-9af2-4cf336a5f69e +Openstack-Request-Id: req-d38f35ab-e32f-406c-8cd0-4fb4350084f2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 404 Not Found +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-00659f27-6ac0-4781-991f-b180bc39745d +Openstack-Request-Id: req-1901435a-7e28-437d-bd9b-90cc7e135b85 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-00659f27-6ac0-4781-991f-b180bc39745d +Openstack-Request-Id: req-1901435a-7e28-437d-bd9b-90cc7e135b85 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/driver_info', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0bc3bdc3-c876-42c5-8380-36af004ec4c8 +Openstack-Request-Id: req-50d719c5-581f-4c1e-a509-01c6ca88922b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:driver_info\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0bc3bdc3-c876-42c5-8380-36af004ec4c8 +Openstack-Request-Id: req-50d719c5-581f-4c1e-a509-01c6ca88922b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:driver_info\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/properties', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-43d81159-54ae-4d83-8ac2-29ffb4fa0c7d +Openstack-Request-Id: req-4bbcad24-6883-469b-829b-23e76e3e730a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:properties\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_056_lessee_member_cannot_patch_properties +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_056_lessee_member_cannot_patch_properties ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_301_node_history_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_301_node_history_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_001_values +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_001_values ... skipped 'These are fake reference values for YAML templating' +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_locked +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_locked ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_057_lessee_member_cannot_patch_network_data +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_057_lessee_member_cannot_patch_network_data ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_302_node_history_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_302_node_history_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_058_lessee_member_cannot_patch_name +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_058_lessee_member_cannot_patch_name ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual ... ok +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-43d81159-54ae-4d83-8ac2-29ffb4fa0c7d +Openstack-Request-Id: req-78909116-456f-4572-af98-0abc915f2340 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -GOT:Response: 404 Not Found +{"history": [{"uuid": "1cf9eab2-ee66-4001-b7c6-fc0d7df05ade", "created_at": "2024-01-06T14:12:22.226590+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/1cf9eab2-ee66-4001-b7c6-fc0d7df05ade", "rel": "self"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e7f60457-d426-4a33-b95a-2a674cf27d84 +Openstack-Request-Id: req-78909116-456f-4572-af98-0abc915f2340 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"history": [{"uuid": "1cf9eab2-ee66-4001-b7c6-fc0d7df05ade", "created_at": "2024-01-06T14:12:22.226590+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/1cf9eab2-ee66-4001-b7c6-fc0d7df05ade", "rel": "self"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e7f60457-d426-4a33-b95a-2a674cf27d84 +Openstack-Request-Id: req-dab90f9f-b82c-4d8f-b078-408ce55d8991 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-04f8b38b-d54c-4636-a997-f2359c7e50fc -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:list\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-04f8b38b-d54c-4636-a997-f2359c7e50fc -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:list\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 503 Service Unavailable +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cf297028-e62b-444f-a372-2c5d0ceb0ca6 +Openstack-Request-Id: req-dab90f9f-b82c-4d8f-b078-408ce55d8991 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_100_nodes_vifs_post_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_100_nodes_vifs_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_244_conductors_hostname_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_244_conductors_hostname_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_101_nodes_vifs_post_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_101_nodes_vifs_post_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_238_nodes_bios_bios_setting_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_238_nodes_bios_bios_setting_get_reader ... ok -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b601e702-6fe4-4e3c-b635-590a66722aed +Openstack-Request-Id: req-0c85ea32-0fc0-4475-a23d-bdb462ada533 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test -PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 500 Internal Server Error +{"history": [{"uuid": "bb9831a7-c1fd-4679-a8e9-db602586729a", "created_at": "2024-01-06T14:12:22.805480+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/bb9831a7-c1fd-4679-a8e9-db602586729a", "rel": "self"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5162e20a-0bb6-4820-ad21-3067ae571c6a +Openstack-Request-Id: req-0c85ea32-0fc0-4475-a23d-bdb462ada533 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test -PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 500 Internal Server Error +{"history": [{"uuid": "bb9831a7-c1fd-4679-a8e9-db602586729a", "created_at": "2024-01-06T14:12:22.805480+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/bb9831a7-c1fd-4679-a8e9-db602586729a", "rel": "self"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/146dfe36-dbcf-4599-8742-7903a381ac4f +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/146dfe36-dbcf-4599-8742-7903a381ac4f {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-46ab71e1-19bc-4fd5-8af0-b26ac961f487 +Openstack-Request-Id: req-1ea60d36-0895-4201-b689-57e55001e201 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} -GOT:Response: 404 Not Found +{"uuid": "146dfe36-dbcf-4599-8742-7903a381ac4f", "created_at": "2024-01-06T14:12:23.102044+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/146dfe36-dbcf-4599-8742-7903a381ac4f", "rel": "self"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c02a9b64-03ed-403e-be19-0db5038535c8 +Openstack-Request-Id: req-1ea60d36-0895-4201-b689-57e55001e201 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +{"uuid": "146dfe36-dbcf-4599-8742-7903a381ac4f", "created_at": "2024-01-06T14:12:23.102044+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/146dfe36-dbcf-4599-8742-7903a381ac4f", "rel": "self"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/f70b8673-9ec6-40e3-865a-0fea71e4c4b5 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/f70b8673-9ec6-40e3-865a-0fea71e4c4b5 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-14cc4dc9-ed06-46ba-9f02-cd01a9d5a580 +Openstack-Request-Id: req-8d55da00-6f94-4853-960d-46adeae9ed7d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} -GOT:Response: 404 Not Found +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f228f5c0-a18b-41dd-bd5b-0cac75bb0472 +Openstack-Request-Id: req-8d55da00-6f94-4853-960d-46adeae9ed7d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} -GOT:Response: 404 Not Found +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/aeab7217-b7ad-4194-abfd-a3b8854ecd13 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/aeab7217-b7ad-4194-abfd-a3b8854ecd13 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e3143943-df02-4b0b-9d3e-59d3cf6d64df +Openstack-Request-Id: req-d6489a46-b30f-41b0-b8c9-865862f2e83a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} -GOT:Response: 404 Not Found +{"uuid": "aeab7217-b7ad-4194-abfd-a3b8854ecd13", "created_at": "2024-01-06T14:12:23.688711+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/aeab7217-b7ad-4194-abfd-a3b8854ecd13", "rel": "self"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3c2d67c4-4992-4991-89e8-fe128011853f +Openstack-Request-Id: req-d6489a46-b30f-41b0-b8c9-865862f2e83a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} -GOT:Response: 404 Not Found +{"uuid": "aeab7217-b7ad-4194-abfd-a3b8854ecd13", "created_at": "2024-01-06T14:12:23.688711+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/aeab7217-b7ad-4194-abfd-a3b8854ecd13", "rel": "self"}]} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-484b5bea-4586-47b2-b144-b5a2d6354491 +Openstack-Request-Id: req-252724b1-d7de-45ad-9fb4-14ac6dddce90 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors -GET: /v1/conductors {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_002_nodes_post_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_002_nodes_post_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_303_node_history_get_entry_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_303_node_history_get_entry_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_059_lessee_member_cannot_patch_retired +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_059_lessee_member_cannot_patch_retired ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual_abort +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual_abort ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_003_nodes_post_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_003_nodes_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_304_node_history_get_entry_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_304_node_history_get_entry_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_305_node_history_get_entry_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_305_node_history_get_entry_observer ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual_abort_last_clean_step +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual_abort_last_clean_step ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_060_owner_admin_can_patch_node_instance_info +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_060_owner_admin_can_patch_node_instance_info ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_004_nodes_post_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_004_nodes_post_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_001_values +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_001_values ... skipped 'These are fake reference values for YAML templating' +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_worker_pool_full +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_worker_pool_full ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_005_nodes_get_node_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_005_nodes_get_node_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_061_owner_manager_can_patch_node_instance_info +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_061_owner_manager_can_patch_node_instance_info ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_002_nodes_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_002_nodes_post_admin ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_wrong_state +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_wrong_state ... ok +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b02ca8b2-45dd-4d22-b7f3-af937c2545b8 +Openstack-Request-Id: req-252724b1-d7de-45ad-9fb4-14ac6dddce90 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors -GET: /v1/conductors {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9bd7c1d8-8017-4454-9bf3-e21fe4b5b7e3 +Openstack-Request-Id: req-ca0d983d-61c0-4923-9d72-b3f374e1106e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors -GET: /v1/conductors {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d715c979-f4a4-4048-be8e-ac282c457e4a +Openstack-Request-Id: req-ca0d983d-61c0-4923-9d72-b3f374e1106e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors/test-conductor-node -GET: /v1/conductors/test-conductor-node {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0e9ac9c0-ced8-4b30-b427-75e241064f38 +Openstack-Request-Id: req-6a007025-4fdb-4a19-99ba-68945bc405f7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors/test-conductor-node -GET: /v1/conductors/test-conductor-node {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2b9c1b2f-2098-4d55-bcef-9c000ceecc23 +Openstack-Request-Id: req-6a007025-4fdb-4a19-99ba-68945bc405f7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors/test-conductor-node -GET: /v1/conductors/test-conductor-node {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_245_conductors_hostname_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_245_conductors_hostname_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_239_conductors_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_239_conductors_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_246_allocations_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_246_allocations_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_102_nodes_vifs_post_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_102_nodes_vifs_post_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_247_allocations_post_member -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." +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-24561781-c442-40c3-a25c-748f9bfd2987 +Openstack-Request-Id: req-ae67ed20-8183-4f0d-8d59-971c12971539 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"bios": [{"created_at": "2024-01-06T13:36:39.760586+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"}]}]} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:25.359560+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +driver +fake-driverz ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-24561781-c442-40c3-a25c-748f9bfd2987 +Openstack-Request-Id: req-ae67ed20-8183-4f0d-8d59-971c12971539 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"bios": [{"created_at": "2024-01-06T13:36:39.760586+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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:25.359560+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_006_nodes_get_node_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_006_nodes_get_node_member ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_invalid_state +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_invalid_state ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_003_nodes_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_003_nodes_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_062_owner_member_can_patch_node_instance_info +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_062_owner_member_can_patch_node_instance_info ... ok +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8fd4b58b-db02-48f0-9067-07ecd34c9fb2 +Openstack-Request-Id: req-075e676d-f0ef-4f10-b6a5-3009b0931392 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"FAKE_SETTING": {"created_at": "2024-01-06T13:36:40.559089+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"}]}} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:25.634995+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8fd4b58b-db02-48f0-9067-07ecd34c9fb2 +Openstack-Request-Id: req-075e676d-f0ef-4f10-b6a5-3009b0931392 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"FAKE_SETTING": {"created_at": "2024-01-06T13:36:40.559089+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"}]}} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:25.634995+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_007_nodes_get_node_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_007_nodes_get_node_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_063_owner_reader_can_patch_node_instance_info +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_063_owner_reader_can_patch_node_instance_info ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_004_nodes_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_004_nodes_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_008_nodes_get_node_other_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_008_nodes_get_node_other_admin ... skipped 'Not implemented yet' +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_005_nodes_get_node_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_005_nodes_get_node_admin ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_maintenance +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_maintenance ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-94aa6e91-bcbb-4568-8ab3-92c7084139c5 +Openstack-Request-Id: req-520c0407-9a92-496a-a2e6-d478b3a9b04d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"FAKE_SETTING": {"created_at": "2024-01-06T13:36:41.711933+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"}]}} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:25.983363+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +driver +fake-driverz ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-94aa6e91-bcbb-4568-8ab3-92c7084139c5 +Openstack-Request-Id: req-520c0407-9a92-496a-a2e6-d478b3a9b04d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"FAKE_SETTING": {"created_at": "2024-01-06T13:36:41.711933+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"}]}} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:25.983363+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-71f1c8a3-aeeb-4a28-ac00-9ab94ec43e74 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"FAKE_SETTING": {"created_at": "2024-01-06T13:36:42.766907+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"}]}} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-71f1c8a3-aeeb-4a28-ac00-9ab94ec43e74 +Openstack-Request-Id: req-52bf9316-10c3-4e67-b69c-82be5f3614a8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"FAKE_SETTING": {"created_at": "2024-01-06T13:36:42.766907+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"}]}} -API ACL Testing Path get /v1/conductors -GET: /v1/conductors {} -GOT:Response: 200 OK +{"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": "af5d8047-878a-479d-9fd2-69e309ee4a4a", "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"}]}]} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_009_nodes_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_009_nodes_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_010_nodes_get_other_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_010_nodes_get_other_admin ... skipped 'Not implemented yet' +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b805b1e9-ac3d-4218-8364-2d6298421e1d +Openstack-Request-Id: req-4bbcad24-6883-469b-829b-23e76e3e730a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:properties\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/network_data', 'value': {'links': [], 'networks': [], 'services': []}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b805b1e9-ac3d-4218-8364-2d6298421e1d +Openstack-Request-Id: req-64985ed7-e806-43c6-9325-bf654ef384cc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}]} -API ACL Testing Path get /v1/conductors -GET: /v1/conductors {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_240_conductors_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_240_conductors_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_103_nodes_vifs_node_vif_ident_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_103_nodes_vifs_node_vif_ident_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_248_allocations_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_248_allocations_post_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_241_conductors_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_241_conductors_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_104_nodes_vifs_node_vif_ident_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_104_nodes_vifs_node_vif_ident_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_249_allocations_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_249_allocations_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_242_conductors_hostname_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_242_conductors_hostname_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_105_nodes_vifs_node_vif_ident_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_105_nodes_vifs_node_vif_ident_delete_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_250_allocations_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_250_allocations_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_243_conductors_hostname_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_243_conductors_hostname_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_106_nodes_management_indicators_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_106_nodes_management_indicators_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_251_allocations_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_251_allocations_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_244_conductors_hostname_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_244_conductors_hostname_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_107_nodes_management_indicators_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_107_nodes_management_indicators_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_252_allocations_allocation_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_252_allocations_allocation_id_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_245_allocations_post_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_245_allocations_post_admin ... ok -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:network_data\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-cf297028-e62b-444f-a372-2c5d0ceb0ca6 +Openstack-Request-Id: req-64985ed7-e806-43c6-9325-bf654ef384cc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:network_data\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/name', 'value': 'meow-node-1'}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bcdbb9f1-9a7c-4674-a6e3-9edb33ae231b +Openstack-Request-Id: req-cd43cd54-e2b6-4e7a-9e9a-893a6d56190d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:name\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bcdbb9f1-9a7c-4674-a6e3-9edb33ae231b +Openstack-Request-Id: req-cd43cd54-e2b6-4e7a-9e9a-893a6d56190d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:name\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'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-8ea92669-6024-4435-a0e7-e592e2128387 +Openstack-Request-Id: req-ed3bf0f0-5696-4f9d-9630-d446f3a7dcca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:retired\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8ea92669-6024-4435-a0e7-e592e2128387 +Openstack-Request-Id: req-ed3bf0f0-5696-4f9d-9630-d446f3a7dcca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:retired\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d8a94341-edd7-459b-931e-0174b6966b3e +Openstack-Request-Id: req-d7d3ce45-ee5f-4ea8-92c1-b275bd7fdf7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d8a94341-edd7-459b-931e-0174b6966b3e +Openstack-Request-Id: req-d7d3ce45-ee5f-4ea8-92c1-b275bd7fdf7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -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-7b80de75-5878-468a-8591-1d38f2894de9 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-7b80de75-5878-468a-8591-1d38f2894de9 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -GOT:Response: 403 Forbidden +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0fdd3601-28e7-4872-bd70-d12b51f93b78 +Openstack-Request-Id: req-49cc3ce8-d856-4cb2-ab35-e44e4bb5854d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0fdd3601-28e7-4872-bd70-d12b51f93b78 +Openstack-Request-Id: req-49cc3ce8-d856-4cb2-ab35-e44e4bb5854d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-88ed176d-e3b7-49ca-aee4-67ef7dcee25e +Openstack-Request-Id: req-715e8a72-eee4-43f5-b3bd-a9203448d78a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-88ed176d-e3b7-49ca-aee4-67ef7dcee25e +Openstack-Request-Id: req-715e8a72-eee4-43f5-b3bd-a9203448d78a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} -GOT:Response: 404 Not Found +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ea771e98-ce6c-447e-a972-d4e5c236b134 +Openstack-Request-Id: req-1a1568b1-6b99-480c-855e-86d9caaf4fd2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ea771e98-ce6c-447e-a972-d4e5c236b134 +Openstack-Request-Id: req-1a1568b1-6b99-480c-855e-86d9caaf4fd2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_064_lessee_admin_can_patch_node_instance_info +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_064_lessee_admin_can_patch_node_instance_info ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_network_validate_fail +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_network_validate_fail ... ok +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-46f57326-285e-4495-b566-f27897cc824d +Openstack-Request-Id: req-061caddb-95e3-4c4b-9cca-c14ea048ba20 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_108_nodes_management_indicators_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_108_nodes_management_indicators_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_253_allocations_allocation_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_253_allocations_allocation_id_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_109_nodes_management_indicators_component_get_allow -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.' -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_246_allocations_post_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_246_allocations_post_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_110_nodes_management_indicators_component_ind_ident_get_allow -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.' -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_254_allocations_allocation_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_254_allocations_allocation_id_get_observer ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"role:member and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-5ff5d8c1-8c85-4470-b0c9-cb3357125b8c +Openstack-Request-Id: req-3a879807-1b07-4abe-95d2-3f741d00a380 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}]} -ACL Test GOT Response: 200 OK +{"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}"} +API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-5ff5d8c1-8c85-4470-b0c9-cb3357125b8c +Openstack-Request-Id: req-3a3ae793-47fe-41ce-8442-7218d38d5ed6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}]} -API ACL Testing Path get /v1/conductors -GET: /v1/conductors {} -GOT:Response: 200 OK +{"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}"} +API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-706ae165-065e-4b0d-b73d-f22c4afdbfdf +Openstack-Request-Id: req-5e721457-1a5f-4db0-a1c1-7595f88f5d6f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}]} -ACL Test GOT Response: 200 OK +{"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}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-706ae165-065e-4b0d-b73d-f22c4afdbfdf +Openstack-Request-Id: req-659cab17-e0eb-4cc4-8273-c9550701140c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}]} -API ACL Testing Path get /v1/conductors/test-conductor-node -GET: /v1/conductors/test-conductor-node {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6c59fa41-b286-4004-8b4a-460e05c99dfd +Openstack-Request-Id: req-5532ff72-eab8-4511-a838-5044266faa1c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"created_at": "2024-01-06T13:36:46.011962+00:00", "updated_at": "2024-01-06T13:36:46.019357+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} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6c59fa41-b286-4004-8b4a-460e05c99dfd +Openstack-Request-Id: req-091ea52e-5890-4d12-b616-db42fdbb7899 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"created_at": "2024-01-06T13:36:46.011962+00:00", "updated_at": "2024-01-06T13:36:46.019357+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} -API ACL Testing Path get /v1/conductors/test-conductor-node -GET: /v1/conductors/test-conductor-node {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/1fa3de56-8f4a-4e69-8ea8-9e12ef7eb546 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/1fa3de56-8f4a-4e69-8ea8-9e12ef7eb546 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-26a11e15-ca3b-4f71-a853-8fd549a6df98 +Openstack-Request-Id: req-c0754118-7b3b-406e-b8ea-1bb5187da21e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"created_at": "2024-01-06T13:36:46.957737+00:00", "updated_at": "2024-01-06T13:36:46.965150+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} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4c942114-3857-46b9-876d-4bba9c18a953 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4c942114-3857-46b9-876d-4bba9c18a953 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-26a11e15-ca3b-4f71-a853-8fd549a6df98 +Openstack-Request-Id: req-b682c8fa-0336-410e-81f4-23cb95e30d2a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"created_at": "2024-01-06T13:36:46.957737+00:00", "updated_at": "2024-01-06T13:36:46.965150+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} -API ACL Testing Path get /v1/conductors/test-conductor-node -GET: /v1/conductors/test-conductor-node {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/165f7186-d1dd-48af-b4e5-2fe866b40438 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/165f7186-d1dd-48af-b4e5-2fe866b40438 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b1d1dcd6-693a-4438-86e4-fe85e1ca7861 +Openstack-Request-Id: req-298bbd28-0172-409f-b347-73dd57b14218 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"created_at": "2024-01-06T13:36:47.689914+00:00", "updated_at": "2024-01-06T13:36:47.697660+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} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b1d1dcd6-693a-4438-86e4-fe85e1ca7861 +Openstack-Request-Id: req-72efe462-4151-498b-a178-214b55ae6a5c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"created_at": "2024-01-06T13:36:47.689914+00:00", "updated_at": "2024-01-06T13:36:47.697660+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} -API ACL Testing Path post /v1/allocations -POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bc59ada3-8521-45ef-9bcb-e0b84e97941c +Openstack-Request-Id: req-4b88042b-9186-4be1-bfbe-d37b8c9178d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes +POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bc59ada3-8521-45ef-9bcb-e0b84e97941c +Openstack-Request-Id: req-2f99e67b-d76b-4956-856d-8758244d6050 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/allocations -POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-61231037-7611-48b7-bb19-bd5acb5aa11e +Openstack-Request-Id: req-887638eb-228b-4d00-8e8e-59b846453e17 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_006_nodes_get_node_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_006_nodes_get_node_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_007_nodes_get_node_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_007_nodes_get_node_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_065_lessee_manager_can_patch_node_instance_info +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_065_lessee_manager_can_patch_node_instance_info ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_ok ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_008_nodes_get_node_other_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_008_nodes_get_node_other_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_066_lessee_member_cannot_patch_node_instance_info +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_066_lessee_member_cannot_patch_node_instance_info ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_009_nodes_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_009_nodes_get_admin ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_power_validate_fail +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_power_validate_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_067_lessee_reader_can_patch_node_instance_info +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_067_lessee_reader_can_patch_node_instance_info ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_010_nodes_get_other_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_010_nodes_get_other_admin ... ok +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_worker_pool_full +ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_worker_pool_full ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-61231037-7611-48b7-bb19-bd5acb5aa11e +Openstack-Request-Id: req-52bf9316-10c3-4e67-b69c-82be5f3614a8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/allocations -POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_247_allocations_post_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_247_allocations_post_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_111_nodes_management_indicators_component_ind_ident_put_allow -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.' -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_255_allocations_allocation_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_255_allocations_allocation_id_patch_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_248_allocations_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_248_allocations_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_112_portgroups_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_112_portgroups_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_256_allocations_allocation_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_256_allocations_allocation_id_patch_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_249_allocations_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_249_allocations_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_113_portgroups_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_113_portgroups_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_257_allocations_allocation_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_257_allocations_allocation_id_patch_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_114_portgroups_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_114_portgroups_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_250_allocations_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_250_allocations_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_258_allocations_allocation_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_258_allocations_allocation_id_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_115_portgroups_post_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_115_portgroups_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_259_allocations_allocation_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_259_allocations_allocation_id_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_251_allocations_allocation_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_251_allocations_allocation_id_get_admin ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncPostgres.test_models_sync -ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncPostgres.test_models_sync ... skipped "Backend 'postgresql+psycopg2' is unavailable: Could not connect" -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_116_portgroups_post_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_116_portgroups_post_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_260_allocations_allocation_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_260_allocations_allocation_id_delete_observer ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_migrate_up -ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_migrate_up ... ok -GOT:Response: 403 Forbidden +{"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": "af5d8047-878a-479d-9fd2-69e309ee4a4a", "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"}]}]} +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-29b508eb-8515-4312-a495-e3faa6cbdd6b +Openstack-Request-Id: req-099c0107-ed3d-4116-8d81-976aac684368 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:27.035551+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T14:12:27.057711+00:00", "updated_at": "2024-01-06T14:12:27.084502+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "4178bb43-b8ae-4740-b475-171dff94561c", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "4178bb43-b8ae-4740-b475-171dff94561c", "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": "2024-01-06T14:12:27.154613+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", "cpus": "8", "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/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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-29b508eb-8515-4312-a495-e3faa6cbdd6b +Openstack-Request-Id: req-099c0107-ed3d-4116-8d81-976aac684368 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations -GET: /v1/allocations {} +{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:27.035551+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T14:12:27.057711+00:00", "updated_at": "2024-01-06T14:12:27.084502+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "4178bb43-b8ae-4740-b475-171dff94561c", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "4178bb43-b8ae-4740-b475-171dff94561c", "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": "2024-01-06T14:12:27.154613+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", "cpus": "8", "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/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"}]}]}ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_011_nodes_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_011_nodes_detail_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_011_nodes_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_011_nodes_detail_get_admin ... ok +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_disappears_on_acquire +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_disappears_on_acquire ... ok + +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-59048a47-cd94-482c-b3ef-49b796d9e511 +Openstack-Request-Id: req-9ca7697b-fdb0-42a3-96c3-b38b7d419a05 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "c3deea32-1326-4736-83cf-afd7c7f604e1", "created_at": "2024-01-06T13:36:51.636499+00:00", "updated_at": "2024-01-06T13:36:51.685860+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/c3deea32-1326-4736-83cf-afd7c7f604e1", "rel": "self"}, {"href": "http://localhost/allocations/c3deea32-1326-4736-83cf-afd7c7f604e1", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} +{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:27.867188+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T14:12:27.876739+00:00", "updated_at": "2024-01-06T14:12:27.891546+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "a5d7c137-3170-4bd1-9f89-98b62bb166aa", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "a5d7c137-3170-4bd1-9f89-98b62bb166aa", "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": "2024-01-06T14:12:27.942104+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", "cpus": "8", "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/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"}]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-59048a47-cd94-482c-b3ef-49b796d9e511 +Openstack-Request-Id: req-9ca7697b-fdb0-42a3-96c3-b38b7d419a05 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "c3deea32-1326-4736-83cf-afd7c7f604e1", "created_at": "2024-01-06T13:36:51.636499+00:00", "updated_at": "2024-01-06T13:36:51.685860+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/c3deea32-1326-4736-83cf-afd7c7f604e1", "rel": "self"}, {"href": "http://localhost/allocations/c3deea32-1326-4736-83cf-afd7c7f604e1", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} -API ACL Testing Path get /v1/allocations -GET: /v1/allocations {} +{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:27.867188+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T14:12:27.876739+00:00", "updated_at": "2024-01-06T14:12:27.891546+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "a5d7c137-3170-4bd1-9f89-98b62bb166aa", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "a5d7c137-3170-4bd1-9f89-98b62bb166aa", "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": "2024-01-06T14:12:27.942104+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", "cpus": "8", "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/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"}]}]}ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_012_nodes_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_012_nodes_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_068_third_party_admin_cannot_patch_node_instance_info +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_068_third_party_admin_cannot_patch_node_instance_info ... ok +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_in_enroll_on_acquire +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_in_enroll_on_acquire ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_012_nodes_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_012_nodes_detail_get_member ... ok +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_in_power_transition_on_acquire +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_in_power_transition_on_acquire ... ok +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_locked_on_acquire +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_locked_on_acquire ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_069_owner_admin_cannot_delete_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_069_owner_admin_cannot_delete_nodes ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_013_nodes_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_013_nodes_detail_get_observer ... ok +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_not_in_maintenance_on_acquire +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_not_in_maintenance_on_acquire ... ok + +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ae6ecaaf-693e-40cf-b760-3de557cd694f +Openstack-Request-Id: req-bc29ffec-43c6-4442-81d4-fb3bfea3e532 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "02fc4734-c7f0-41b9-a1a8-63ca696001f0", "created_at": "2024-01-06T13:36:52.321226+00:00", "updated_at": "2024-01-06T13:36:52.375408+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/02fc4734-c7f0-41b9-a1a8-63ca696001f0", "rel": "self"}, {"href": "http://localhost/allocations/02fc4734-c7f0-41b9-a1a8-63ca696001f0", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} +{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:28.199940+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T14:12:28.209806+00:00", "updated_at": "2024-01-06T14:12:28.223716+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "984e8fe4-d8b1-4d46-b5dc-7de90906bddb", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "984e8fe4-d8b1-4d46-b5dc-7de90906bddb", "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": "2024-01-06T14:12:28.282928+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", "cpus": "8", "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/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"}]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ae6ecaaf-693e-40cf-b760-3de557cd694f +Openstack-Request-Id: req-bc29ffec-43c6-4442-81d4-fb3bfea3e532 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "02fc4734-c7f0-41b9-a1a8-63ca696001f0", "created_at": "2024-01-06T13:36:52.321226+00:00", "updated_at": "2024-01-06T13:36:52.375408+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/02fc4734-c7f0-41b9-a1a8-63ca696001f0", "rel": "self"}, {"href": "http://localhost/allocations/02fc4734-c7f0-41b9-a1a8-63ca696001f0", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} -API ACL Testing Path get /v1/allocations -GET: /v1/allocations {} +{"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:28.199940+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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": "2024-01-06T14:12:28.209806+00:00", "updated_at": "2024-01-06T14:12:28.223716+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "984e8fe4-d8b1-4d46-b5dc-7de90906bddb", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "984e8fe4-d8b1-4d46-b5dc-7de90906bddb", "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": "2024-01-06T14:12:28.282928+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", "cpus": "8", "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/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"}]}]}ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_013_nodes_detail_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_013_nodes_detail_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_014_nodes_node_ident_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_014_nodes_node_ident_get_admin ... ok +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_not_mapped +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_not_mapped ... ok +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_recovery_failed +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_recovery_failed ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_014_nodes_node_ident_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_014_nodes_node_ident_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_070_owner_admin_can_delete_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_070_owner_admin_can_delete_nodes ... ok + +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1aae58f5-a087-462e-ba87-9d8e3f43b42c +Openstack-Request-Id: req-19434845-e935-4ba0-bf4d-012deb47b3c7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "1903a8b1-556d-45fc-8d85-322e49a0d8a5", "created_at": "2024-01-06T13:36:53.328569+00:00", "updated_at": "2024-01-06T13:36:53.376958+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/1903a8b1-556d-45fc-8d85-322e49a0d8a5", "rel": "self"}, {"href": "http://localhost/allocations/1903a8b1-556d-45fc-8d85-322e49a0d8a5", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:28.535776+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1aae58f5-a087-462e-ba87-9d8e3f43b42c +Openstack-Request-Id: req-19434845-e935-4ba0-bf4d-012deb47b3c7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "1903a8b1-556d-45fc-8d85-322e49a0d8a5", "created_at": "2024-01-06T13:36:53.328569+00:00", "updated_at": "2024-01-06T13:36:53.376958+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/1903a8b1-556d-45fc-8d85-322e49a0d8a5", "rel": "self"}, {"href": "http://localhost/allocations/1903a8b1-556d-45fc-8d85-322e49a0d8a5", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} -API ACL Testing Path get /v1/allocations/5f79b475-a6fe-40fb-a91f-7bff40f9a842 -GET: /v1/allocations/5f79b475-a6fe-40fb-a91f-7bff40f9a842 {} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:28.535776+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_015_nodes_node_ident_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_015_nodes_node_ident_get_member ... ok +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_recovery_success +ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_recovery_success ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_015_nodes_node_ident_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_015_nodes_node_ident_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_071_owner_manager_cannot_delete_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_071_owner_manager_cannot_delete_nodes ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b6274d0f-3000-4f27-95e0-c6569d97eb25 +Openstack-Request-Id: req-ba703348-1331-4273-bba0-b336c834167f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5f79b475-a6fe-40fb-a91f-7bff40f9a842", "created_at": "2024-01-06T13:36:54.932287+00:00", "updated_at": "2024-01-06T13:36:54.981832+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/5f79b475-a6fe-40fb-a91f-7bff40f9a842", "rel": "self"}, {"href": "http://localhost/allocations/5f79b475-a6fe-40fb-a91f-7bff40f9a842", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:28.821334+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b6274d0f-3000-4f27-95e0-c6569d97eb25 +Openstack-Request-Id: req-ba703348-1331-4273-bba0-b336c834167f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5f79b475-a6fe-40fb-a91f-7bff40f9a842", "created_at": "2024-01-06T13:36:54.932287+00:00", "updated_at": "2024-01-06T13:36:54.981832+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/5f79b475-a6fe-40fb-a91f-7bff40f9a842", "rel": "self"}, {"href": "http://localhost/allocations/5f79b475-a6fe-40fb-a91f-7bff40f9a842", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -API ACL Testing Path get /v1/allocations/e8b4f9b8-c49d-4c84-9e7b-79129210dc37 -GET: /v1/allocations/e8b4f9b8-c49d-4c84-9e7b-79129210dc37 {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_252_allocations_allocation_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_252_allocations_allocation_id_get_member ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_migrate_up_with_data -ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_migrate_up_with_data ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_253_allocations_allocation_id_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_253_allocations_allocation_id_get_reader ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_walk_versions_all_default -ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_walk_versions_all_default ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_117_portgroups_post_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_117_portgroups_post_observer ... ok -GOT:Response: 500 Internal Server Error +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:28.821334+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_016_nodes_node_ident_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_016_nodes_node_ident_get_reader ... ok +ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_fail +ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_016_nodes_node_ident_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_016_nodes_node_ident_get_observer ... ok +ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_ilo +ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_ilo ... ok +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0129e869-0e16-4c7c-afd9-15fcf2bc72aa +Openstack-Request-Id: req-e43a56e5-688b-49c6-b17f-3c3f506bbc25 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/allocations -POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e4ae30ed-293e-40f7-95ec-9d7316cbd00d +Openstack-Request-Id: req-e43a56e5-688b-49c6-b17f-3c3f506bbc25 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/allocations -POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-18a55c91-bdd7-4192-9f3e-af00e14197c5 +Openstack-Request-Id: req-47e6aaa1-b4d4-4259-b5ee-7b79ba96c2e5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations -GET: /v1/allocations {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1881324f-ed2c-4ecc-b003-9471dedb5116 +Openstack-Request-Id: req-47e6aaa1-b4d4-4259-b5ee-7b79ba96c2e5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations -GET: /v1/allocations {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-655b3a5f-58a2-4ef5-b872-59506fcacd13 +Openstack-Request-Id: req-e6f0598a-2d55-40ef-9710-90eac34ea746 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations -GET: /v1/allocations {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-09dfe0d3-a8cb-4c0b-a204-9ef2a2a7fabb +Openstack-Request-Id: req-e6f0598a-2d55-40ef-9710-90eac34ea746 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations/e8581a5e-ea21-4a4d-975a-cbc104dd093e -GET: /v1/allocations/e8581a5e-ea21-4a4d-975a-cbc104dd093e {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-74bfb81a-c737-43fe-943b-1afb7c1e83c3 +Openstack-Request-Id: req-a7efe980-799e-43dd-8085-f56ee9f6857a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation e8581a5e-ea21-4a4d-975a-cbc104dd093e could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations/8c53abc8-88f4-4cf6-b871-97d3519e2534 -GET: /v1/allocations/8c53abc8-88f4-4cf6-b871-97d3519e2534 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-06ee5b10-f28e-40f1-959a-f20438d1d840 +Openstack-Request-Id: req-a7efe980-799e-43dd-8085-f56ee9f6857a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 8c53abc8-88f4-4cf6-b871-97d3519e2534 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations/1d94ebcb-f724-4485-9dce-a81781307c8e -GET: /v1/allocations/1d94ebcb-f724-4485-9dce-a81781307c8e {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f68962de-3d10-40f6-9e00-9b69bc17415b +Openstack-Request-Id: req-e8e01f88-b7e2-4610-a7c0-fc8ea3fbb74c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 1d94ebcb-f724-4485-9dce-a81781307c8e could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/allocations/1bb70942-364f-460b-99fa-3ca1bca7ea81 -PATCH: /v1/allocations/1bb70942-364f-460b-99fa-3ca1bca7ea81 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-2f5f7aa3-9c41-46de-bc14-c2ebb0855bb6 +Openstack-Request-Id: req-e8e01f88-b7e2-4610-a7c0-fc8ea3fbb74c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 1bb70942-364f-460b-99fa-3ca1bca7ea81 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/allocations/9fab107c-f39e-4f0d-9f4f-e59f2ac57353 -PATCH: /v1/allocations/9fab107c-f39e-4f0d-9f4f-e59f2ac57353 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-72db59e2-487a-4c1b-8f34-39b01ff16175 +Openstack-Request-Id: req-51b89d26-337d-472f-897c-bb73b4bb825b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 9fab107c-f39e-4f0d-9f4f-e59f2ac57353 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/allocations/d36bb017-4a6a-4d41-aef1-bb234e4d2df0 -PATCH: /v1/allocations/d36bb017-4a6a-4d41-aef1-bb234e4d2df0 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f7a2ef9f-0bef-4633-bb0b-84eaf00b88c9 +Openstack-Request-Id: req-51b89d26-337d-472f-897c-bb73b4bb825b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation d36bb017-4a6a-4d41-aef1-bb234e4d2df0 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/fa77ed5c-285c-4bbd-9d50-160665215a6e -DELETE: /v1/allocations/fa77ed5c-285c-4bbd-9d50-160665215a6e -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4fdb1fca-f207-41c6-99d5-a9b37012a21f +Openstack-Request-Id: req-d047420c-d87f-4f5b-a2aa-ad1555929921 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation fa77ed5c-285c-4bbd-9d50-160665215a6e could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/9e04f08a-2ea1-4b02-9f07-2f2ecb8aa65a -DELETE: /v1/allocations/9e04f08a-2ea1-4b02-9f07-2f2ecb8aa65a -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-eab58b13-aec1-4e02-9550-e814a38e656e +Openstack-Request-Id: req-d047420c-d87f-4f5b-a2aa-ad1555929921 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 9e04f08a-2ea1-4b02-9f07-2f2ecb8aa65a could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/5e512be2-6da5-4411-8d64-604d2438abd5 -DELETE: /v1/allocations/5e512be2-6da5-4411-8d64-604d2438abd5 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-08513242-0188-4b2c-85b3-d62bbffa357d +Openstack-Request-Id: req-27477ead-c53c-4347-a539-30915152d50e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 5e512be2-6da5-4411-8d64-604d2438abd5 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_261_nodes_allocation_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_261_nodes_allocation_get_admin ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_walk_versions_all_false -ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_walk_versions_all_false ... ok -ironic.tests.unit.db.sqlalchemy.test_models.TestGetClass.test_get_class -ironic.tests.unit.db.sqlalchemy.test_models.TestGetClass.test_get_class ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_254_allocations_allocation_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_254_allocations_allocation_id_patch_admin ... ok -ironic.tests.unit.db.sqlalchemy.test_models.TestGetClass.test_get_class_bad -ironic.tests.unit.db.sqlalchemy.test_models.TestGetClass.test_get_class_bad ... ok -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-46f57326-285e-4495-b566-f27897cc824d +Openstack-Request-Id: req-27477ead-c53c-4347-a539-30915152d50e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_072_lessee_admin_cannot_delete_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_072_lessee_admin_cannot_delete_nodes ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_017_nodes_node_ident_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_017_nodes_node_ident_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_017_nodes_node_ident_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_017_nodes_node_ident_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_073_lessee_manager_cannot_delete_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_073_lessee_manager_cannot_delete_nodes ... ok +ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_ipmi +ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_ipmi ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_018_nodes_node_ident_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_018_nodes_node_ident_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_074_third_party_admin_cannot_delete_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_074_third_party_admin_cannot_delete_nodes ... ok +ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_manual_management +ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_manual_management ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_018_system_admin_can_patch_chassis +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_018_system_admin_can_patch_chassis ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_019_nodes_node_ident_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_019_nodes_node_ident_patch_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_075_owner_admin_can_validate_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_075_owner_admin_can_validate_node ... ok +ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_snmp +ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_snmp ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_020_nodes_node_ident_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_020_nodes_node_ident_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_076_owner_manager_can_validate_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_076_owner_manager_can_validate_node ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-68cca638-9c6d-4380-ba0f-7c582c3c4cbf +Openstack-Request-Id: req-d0546e42-e4e7-44f5-85f9-14fd787efa8c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:29.091404+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-68cca638-9c6d-4380-ba0f-7c582c3c4cbf +Openstack-Request-Id: req-d0546e42-e4e7-44f5-85f9-14fd787efa8c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2024-01-06T14:12:29.091404+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, "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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": ["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"}]} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-912a682f-44ea-4d7c-8edc-2c73207fcdad +Openstack-Request-Id: req-3b905835-d772-4057-9be6-41e0b982af07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-912a682f-44ea-4d7c-8edc-2c73207fcdad +Openstack-Request-Id: req-3b905835-d772-4057-9be6-41e0b982af07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/chassis_uuid', 'value': 'e74c40e0-d825-11e2-a28f-0800200c9a66'}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-94d03bfa-4142-4af3-9cdf-ae4257687973 +Openstack-Request-Id: req-25e8ccbe-0398-40a5-9e20-c0cc4b467eeb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-94d03bfa-4142-4af3-9cdf-ae4257687973 +Openstack-Request-Id: req-25e8ccbe-0398-40a5-9e20-c0cc4b467eeb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/conductor_group', 'value': 'DC04-ROW39'}] +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_019_system_member_can_patch_conductor_group +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_019_system_member_can_patch_conductor_group ... ok +ironic.tests.unit.conductor.test_manager.MiscTestCase.test__mapped_to_this_conductor +ironic.tests.unit.conductor.test_manager.MiscTestCase.test__mapped_to_this_conductor ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_077_lessee_admin_can_validate_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_077_lessee_admin_can_validate_node ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/portgroups/263b994d-f582-4a4c-8085-43bf59c5ecb6 -Openstack-Request-Id: req-66f757f1-e0ce-4160-944e-b695598081b0 +Openstack-Request-Id: req-b945012e-116b-467f-94b5-feb322cbc23c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "263b994d-f582-4a4c-8085-43bf59c5ecb6", "created_at": "2024-01-06T13:36:54.995984+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/263b994d-f582-4a4c-8085-43bf59c5ecb6", "rel": "self"}, {"href": "http://localhost/portgroups/263b994d-f582-4a4c-8085-43bf59c5ecb6", "rel": "bookmark"}], "node_uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "ports": [{"href": "http://localhost/v1/portgroups/263b994d-f582-4a4c-8085-43bf59c5ecb6/ports", "rel": "self"}, {"href": "http://localhost/portgroups/263b994d-f582-4a4c-8085-43bf59c5ecb6/ports", "rel": "bookmark"}]} -ACL Test GOT Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/portgroups/263b994d-f582-4a4c-8085-43bf59c5ecb6 -Openstack-Request-Id: req-66f757f1-e0ce-4160-944e-b695598081b0 +Openstack-Request-Id: req-67a27789-e919-4ab9-8b3a-fd62578d2ace X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "263b994d-f582-4a4c-8085-43bf59c5ecb6", "created_at": "2024-01-06T13:36:54.995984+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/263b994d-f582-4a4c-8085-43bf59c5ecb6", "rel": "self"}, {"href": "http://localhost/portgroups/263b994d-f582-4a4c-8085-43bf59c5ecb6", "rel": "bookmark"}], "node_uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "ports": [{"href": "http://localhost/v1/portgroups/263b994d-f582-4a4c-8085-43bf59c5ecb6/ports", "rel": "self"}, {"href": "http://localhost/portgroups/263b994d-f582-4a4c-8085-43bf59c5ecb6/ports", "rel": "bookmark"}]} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-65fa6436-5d5e-42a9-a248-e76bb4ffa410 +Openstack-Request-Id: req-984b2011-0154-4150-a820-81cb55046aca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-65fa6436-5d5e-42a9-a248-e76bb4ffa410 +Openstack-Request-Id: req-43caaf4d-55b4-4763-9ed3-f89a898a832e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes +GET: /v1/nodes {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ced9bb03-594f-4a4a-adf3-83af66340fd0 +Openstack-Request-Id: req-d7d651e3-a9c0-4d8f-a100-c435887f6b69 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"nodes": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ced9bb03-594f-4a4a-adf3-83af66340fd0 +Openstack-Request-Id: req-d7d651e3-a9c0-4d8f-a100-c435887f6b69 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/detail -GET: /v1/portgroups/detail {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_118_portgroups_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_118_portgroups_detail_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_262_nodes_allocation_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_262_nodes_allocation_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_255_allocations_allocation_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_255_allocations_allocation_id_patch_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_119_portgroups_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_119_portgroups_detail_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_263_nodes_allocation_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_263_nodes_allocation_get_observer ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_clear_node_reservations_for_conductor -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_clear_node_reservations_for_conductor ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_256_allocations_allocation_id_patch_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_256_allocations_allocation_id_patch_reader ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_clear_node_target_power_state -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_clear_node_target_power_state ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_120_portgroups_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_120_portgroups_detail_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_264_nodes_allocation_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_264_nodes_allocation_delete_admin ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_many_host_many_ht -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_many_host_many_ht ... ok -GOT:Response: 200 OK +{"nodes": []} +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9ea7beb7-91b7-40d9-a5f3-6f038bc606ad +Openstack-Request-Id: req-710ec10b-6eeb-4a4d-ab7d-4def8fbcad46 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e8b4f9b8-c49d-4c84-9e7b-79129210dc37", "created_at": "2024-01-06T13:36:55.544732+00:00", "updated_at": "2024-01-06T13:36:55.582731+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/e8b4f9b8-c49d-4c84-9e7b-79129210dc37", "rel": "self"}, {"href": "http://localhost/allocations/e8b4f9b8-c49d-4c84-9e7b-79129210dc37", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9ea7beb7-91b7-40d9-a5f3-6f038bc606ad +Openstack-Request-Id: req-647e79ea-f14a-4495-b6c5-edacc2cc2f5a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e8b4f9b8-c49d-4c84-9e7b-79129210dc37", "created_at": "2024-01-06T13:36:55.544732+00:00", "updated_at": "2024-01-06T13:36:55.582731+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/e8b4f9b8-c49d-4c84-9e7b-79129210dc37", "rel": "self"}, {"href": "http://localhost/allocations/e8b4f9b8-c49d-4c84-9e7b-79129210dc37", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -API ACL Testing Path get /v1/allocations/a9723ade-33da-4319-a3c4-c1c1f6e406f8 -GET: /v1/allocations/a9723ade-33da-4319-a3c4-c1c1f6e406f8 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/detail +GET: /v1/nodes/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-de028749-0a85-4c71-b068-dcca37b7043d +Openstack-Request-Id: req-f23d3c6f-8632-418c-bda2-42ab8dddd0ce X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "a9723ade-33da-4319-a3c4-c1c1f6e406f8", "created_at": "2024-01-06T13:36:55.973140+00:00", "updated_at": "2024-01-06T13:36:56.024157+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/a9723ade-33da-4319-a3c4-c1c1f6e406f8", "rel": "self"}, {"href": "http://localhost/allocations/a9723ade-33da-4319-a3c4-c1c1f6e406f8", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-de028749-0a85-4c71-b068-dcca37b7043d +Openstack-Request-Id: req-d06b2667-26c1-4cc8-8d43-ac784ea07a7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "a9723ade-33da-4319-a3c4-c1c1f6e406f8", "created_at": "2024-01-06T13:36:55.973140+00:00", "updated_at": "2024-01-06T13:36:56.024157+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/a9723ade-33da-4319-a3c4-c1c1f6e406f8", "rel": "self"}, {"href": "http://localhost/allocations/a9723ade-33da-4319-a3c4-c1c1f6e406f8", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -API ACL Testing Path patch /v1/allocations/c8aa1ba9-7a43-48c4-b0da-78c26e2cf5bb -PATCH: /v1/allocations/c8aa1ba9-7a43-48c4-b0da-78c26e2cf5bb [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9bdca22b-38b1-493b-925f-a32a7689412d +Openstack-Request-Id: req-c9847885-60bd-4764-a07a-fdcf881e80e7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "c8aa1ba9-7a43-48c4-b0da-78c26e2cf5bb", "created_at": "2024-01-06T13:36:56.440827+00:00", "updated_at": "2024-01-06T13:36:56.811610+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/c8aa1ba9-7a43-48c4-b0da-78c26e2cf5bb", "rel": "self"}, {"href": "http://localhost/allocations/c8aa1ba9-7a43-48c4-b0da-78c26e2cf5bb", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9bdca22b-38b1-493b-925f-a32a7689412d +Openstack-Request-Id: req-f014f993-b765-4e77-99ca-167ddee6e975 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "c8aa1ba9-7a43-48c4-b0da-78c26e2cf5bb", "created_at": "2024-01-06T13:36:56.440827+00:00", "updated_at": "2024-01-06T13:36:56.811610+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/c8aa1ba9-7a43-48c4-b0da-78c26e2cf5bb", "rel": "self"}, {"href": "http://localhost/allocations/c8aa1ba9-7a43-48c4-b0da-78c26e2cf5bb", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -API ACL Testing Path patch /v1/allocations/18dba2fb-5a86-400d-8e49-c010d4962ce3 -PATCH: /v1/allocations/18dba2fb-5a86-400d-8e49-c010d4962ce3 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a8715d29-1d4a-4480-98cb-62ceb171a789 +Openstack-Request-Id: req-9f23f14b-ce63-44e6-8777-beb579bb9978 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "18dba2fb-5a86-400d-8e49-c010d4962ce3", "created_at": "2024-01-06T13:36:57.172655+00:00", "updated_at": "2024-01-06T13:36:57.541519+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/18dba2fb-5a86-400d-8e49-c010d4962ce3", "rel": "self"}, {"href": "http://localhost/allocations/18dba2fb-5a86-400d-8e49-c010d4962ce3", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a8715d29-1d4a-4480-98cb-62ceb171a789 +Openstack-Request-Id: req-5715d884-d3a3-4e95-8f4c-6178c81be613 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "18dba2fb-5a86-400d-8e49-c010d4962ce3", "created_at": "2024-01-06T13:36:57.172655+00:00", "updated_at": "2024-01-06T13:36:57.541519+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/18dba2fb-5a86-400d-8e49-c010d4962ce3", "rel": "self"}, {"href": "http://localhost/allocations/18dba2fb-5a86-400d-8e49-c010d4962ce3", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -API ACL Testing Path patch /v1/allocations/e9bea9f3-9994-4d0e-8a9a-50b7df4bd73a -PATCH: /v1/allocations/e9bea9f3-9994-4d0e-8a9a-50b7df4bd73a [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ac534984-2774-49c8-a822-e93f8edf0221 +Openstack-Request-Id: req-e782f5e5-ab9b-4966-9c91-37997c563202 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:update\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ac534984-2774-49c8-a822-e93f8edf0221 +Openstack-Request-Id: req-e7c8950a-5be0-4414-9f9f-7b74c68db484 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:update\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_257_allocations_allocation_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_257_allocations_allocation_id_delete_admin ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_many_host_one_ht -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_many_host_one_ht ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_121_portgroups_portgroup_ident_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_121_portgroups_portgroup_ident_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_265_nodes_allocation_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_265_nodes_allocation_delete_member ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_many_ht -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_many_ht ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_no_ht -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_no_ht ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_258_allocations_allocation_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_258_allocations_allocation_id_delete_member ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_one_ht -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_one_ht ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_266_nodes_allocation_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_266_nodes_allocation_delete_observer ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_one_ht_groups -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_one_ht_groups ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_021_nodes_node_ident_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_021_nodes_node_ident_delete_member ... ok +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_iter_nodes +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_iter_nodes ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_020_nodes_node_ident_patch_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_020_nodes_node_ident_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_078_lessee_manager_can_validate_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_078_lessee_manager_can_validate_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_022_nodes_node_ident_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_022_nodes_node_ident_delete_observer ... ok +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_iter_nodes_shutdown +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_iter_nodes_shutdown ... ok +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_079_owner_member_can_validate_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_079_owner_member_can_validate_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_023_nodes_validate_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_023_nodes_validate_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_021_nodes_node_ident_patch_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_021_nodes_node_ident_patch_reader ... ok +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_deploy_templates +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_deploy_templates ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_024_nodes_validate_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_024_nodes_validate_get_member ... ok +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_instance_traits +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_instance_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_022_nodes_node_ident_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_022_nodes_node_ident_delete_admin ... ok +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_unexpected +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_unexpected ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_025_nodes_validate_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_025_nodes_validate_get_observer ... ok +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_dynamic_driver_interfaces +ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_dynamic_driver_interfaces ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_023_nodes_node_ident_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_023_nodes_node_ident_delete_member ... ok +ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_1_nodes_8_workers +ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_1_nodes_8_workers ... ok +ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_6_nodes_8_workers +ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_6_nodes_8_workers ... ok +ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_9_nodes_1_worker +ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_9_nodes_1_worker ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d4445321-33f9-4163-9430-fa9a6fb25509 +Openstack-Request-Id: req-93fba829-cc4d-4108-9c18-cc95c24533f9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:36:56.745719+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d4445321-33f9-4163-9430-fa9a6fb25509 +Openstack-Request-Id: req-93fba829-cc4d-4108-9c18-cc95c24533f9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:36:56.745719+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -API ACL Testing Path get /v1/portgroups/detail -GET: /v1/portgroups/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-289f05b4-3d7f-45de-934d-850bd0bcfd08 +Openstack-Request-Id: req-fee9925a-358b-4adb-ad67-8508eee84709 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-289f05b4-3d7f-45de-934d-850bd0bcfd08 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/detail -GET: /v1/portgroups/detail {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-a7d78f01-8ecb-42c9-a4c1-350402655f48 +Openstack-Request-Id: req-fee9925a-358b-4adb-ad67-8508eee84709 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:36:58.140003+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a7d78f01-8ecb-42c9-a4c1-350402655f48 +Openstack-Request-Id: req-90997fde-4de2-4b49-bd84-611645f4feea X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:36:58.140003+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-0f33301e-caf9-406a-b6ac-4a96db31e3b4 +Openstack-Request-Id: req-90997fde-4de2-4b49-bd84-611645f4feea X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:36:58.912181+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0f33301e-caf9-406a-b6ac-4a96db31e3b4 +Openstack-Request-Id: req-c800c40b-d69e-45da-9110-17ad630f111f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:36:58.912181+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0645b864-6905-4bc0-a86b-2507f459fd50 +Openstack-Request-Id: req-c800c40b-d69e-45da-9110-17ad630f111f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_122_portgroups_portgroup_ident_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_122_portgroups_portgroup_ident_get_member ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_with_old_conductor -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_with_old_conductor ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_259_allocations_allocation_id_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_259_allocations_allocation_id_delete_reader ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_conductor -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_conductor ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_conductor_not_found -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_conductor_not_found ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_123_portgroups_portgroup_ident_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_123_portgroups_portgroup_ident_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_267_deploy_templates_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_267_deploy_templates_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_260_nodes_allocation_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_260_nodes_allocation_get_admin ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_inactive_conductor_ignore_online -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_inactive_conductor_ignore_online ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_inactive_conductor_with_online_true -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_inactive_conductor_with_online_true ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_offline_conductors -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_offline_conductors ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_261_nodes_allocation_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_261_nodes_allocation_get_member ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_online_conductors -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_online_conductors ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_124_portgroups_portgroup_ident_patch_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_124_portgroups_portgroup_ident_patch_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_268_deploy_templates_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_268_deploy_templates_post_member ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_list_hardware_type_interfaces -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_list_hardware_type_interfaces ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_262_nodes_allocation_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_262_nodes_allocation_get_reader ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_existing_fails -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_existing_fails ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_125_portgroups_portgroup_ident_patch_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_125_portgroups_portgroup_ident_patch_member ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_hardware_interfaces -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_hardware_interfaces ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_269_deploy_templates_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_269_deploy_templates_post_observer ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_hardware_interfaces_duplicate -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_hardware_interfaces_duplicate ... ok -API ACL Testing Path delete /v1/allocations/35663b54-55f4-47e9-b242-5fa21bff356a -DELETE: /v1/allocations/35663b54-55f4-47e9-b242-5fa21bff356a +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate {} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-acf80385-d41f-4471-96b4-72cf4193a950 +Openstack-Request-Id: req-cae3f324-31e3-4092-b349-12c01724d621 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-acf80385-d41f-4471-96b4-72cf4193a950 +Openstack-Request-Id: req-cae3f324-31e3-4092-b349-12c01724d621 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/5e5b210e-3f9e-4189-882f-93fc7cc9b7cc -DELETE: /v1/allocations/5e5b210e-3f9e-4189-882f-93fc7cc9b7cc +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate {} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-bc08c423-890a-480b-9690-4af6f366db17 +Openstack-Request-Id: req-e86441c1-3932-435b-93e9-907ca1666744 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-bc08c423-890a-480b-9690-4af6f366db17 +Openstack-Request-Id: req-e86441c1-3932-435b-93e9-907ca1666744 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/497c57d4-ce65-482e-8629-0e88384085b6 -DELETE: /v1/allocations/497c57d4-ce65-482e-8629-0e88384085b6 -GOT:Response: 403 Forbidden +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-56944f0c-eb6c-4f63-9e05-86fb35874fd6 +Openstack-Request-Id: req-d87b704c-5f34-42b5-8bb1-5bcb2b4133f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-56944f0c-eb6c-4f63-9e05-86fb35874fd6 +Openstack-Request-Id: req-d87b704c-5f34-42b5-8bb1-5bcb2b4133f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2f1adb1f-efbe-45db-8234-ed9d18b5e335 +Openstack-Request-Id: req-e8990f34-57a0-4e5b-a8f1-e2159d5836e1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "33f7864a-5dcf-46db-a58d-a98c591166b8", "created_at": "2024-01-06T13:37:00.664447+00:00", "updated_at": "2024-01-06T13:37:00.712014+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/33f7864a-5dcf-46db-a58d-a98c591166b8", "rel": "self"}, {"href": "http://localhost/allocations/33f7864a-5dcf-46db-a58d-a98c591166b8", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2f1adb1f-efbe-45db-8234-ed9d18b5e335 +Openstack-Request-Id: req-e8990f34-57a0-4e5b-a8f1-e2159d5836e1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "33f7864a-5dcf-46db-a58d-a98c591166b8", "created_at": "2024-01-06T13:37:00.664447+00:00", "updated_at": "2024-01-06T13:37:00.712014+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/33f7864a-5dcf-46db-a58d-a98c591166b8", "rel": "self"}, {"href": "http://localhost/allocations/33f7864a-5dcf-46db-a58d-a98c591166b8", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b27de86b-b9fa-4c43-8a9b-f3811da15d14 +Openstack-Request-Id: req-caaab02f-5183-459b-9c64-2d8be51489f0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "83f840a8-45e3-4cf8-b143-6180eafc0fc5", "created_at": "2024-01-06T13:37:01.632532+00:00", "updated_at": "2024-01-06T13:37:01.680718+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/83f840a8-45e3-4cf8-b143-6180eafc0fc5", "rel": "self"}, {"href": "http://localhost/allocations/83f840a8-45e3-4cf8-b143-6180eafc0fc5", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_080_lessee_member_cannot_validate_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_080_lessee_member_cannot_validate_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_026_nodes_maintenance_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_026_nodes_maintenance_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_024_nodes_node_ident_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_024_nodes_node_ident_delete_reader ... ok +ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_9_nodes_8_workers +ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_9_nodes_8_workers ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_081_third_party_admin_cannot_validate_node +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_081_third_party_admin_cannot_validate_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_027_nodes_maintenance_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_027_nodes_maintenance_put_member ... ok +ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_node_prioritization +ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_node_prioritization ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_025_nodes_validate_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_025_nodes_validate_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_082_owner_admin_can_set_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_082_owner_admin_can_set_maintenance ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_028_nodes_maintenance_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_028_nodes_maintenance_put_observer ... ok +ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_get_raid_logical_disk_properties +ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_get_raid_logical_disk_properties ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_026_nodes_validate_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_026_nodes_validate_get_member ... ok +ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_get_raid_logical_disk_properties_iface_not_supported +ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_get_raid_logical_disk_properties_iface_not_supported ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_083_owner_manager_can_set_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_083_owner_manager_can_set_maintenance ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_029_nodes_maintenance_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_029_nodes_maintenance_delete_admin ... ok +ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config +ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_030_nodes_maintenance_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_030_nodes_maintenance_delete_member ... ok +ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_empty +ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_empty ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_084_lessee_admin_can_set_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_084_lessee_admin_can_set_maintenance ... ok +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b27de86b-b9fa-4c43-8a9b-f3811da15d14 +Openstack-Request-Id: req-fc7e1bba-ef10-4bed-a43b-c2cb8e582d92 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "83f840a8-45e3-4cf8-b143-6180eafc0fc5", "created_at": "2024-01-06T13:37:01.632532+00:00", "updated_at": "2024-01-06T13:37:01.680718+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/83f840a8-45e3-4cf8-b143-6180eafc0fc5", "rel": "self"}, {"href": "http://localhost/allocations/83f840a8-45e3-4cf8-b143-6180eafc0fc5", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2d043367-f532-4730-acca-fad1cc9df641 +Openstack-Request-Id: req-fc7e1bba-ef10-4bed-a43b-c2cb8e582d92 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "23d23540-c4e1-4240-8969-8fda3f7ad0a2", "created_at": "2024-01-06T13:37:02.380760+00:00", "updated_at": "2024-01-06T13:37:02.432663+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/23d23540-c4e1-4240-8969-8fda3f7ad0a2", "rel": "self"}, {"href": "http://localhost/allocations/23d23540-c4e1-4240-8969-8fda3f7ad0a2", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2d043367-f532-4730-acca-fad1cc9df641 +Openstack-Request-Id: req-4bf8a289-c7d6-4b92-aec8-5b854c296f27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "23d23540-c4e1-4240-8969-8fda3f7ad0a2", "created_at": "2024-01-06T13:37:02.380760+00:00", "updated_at": "2024-01-06T13:37:02.432663+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/23d23540-c4e1-4240-8969-8fda3f7ad0a2", "rel": "self"}, {"href": "http://localhost/allocations/23d23540-c4e1-4240-8969-8fda3f7ad0a2", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_263_nodes_allocation_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_263_nodes_allocation_delete_admin ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_override -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_override ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_126_portgroups_portgroup_ident_patch_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_126_portgroups_portgroup_ident_patch_observer ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_270_deploy_templates_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_270_deploy_templates_get_admin ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor_deadlock -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor_deadlock ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_264_nodes_allocation_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_264_nodes_allocation_delete_member ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor_not_found -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor_not_found ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_127_portgroups_portgroup_ident_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_127_portgroups_portgroup_ident_delete_admin ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_offline_conductor -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_offline_conductor ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_271_deploy_templates_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_271_deploy_templates_get_member ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_unregister_conductor -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_unregister_conductor ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_265_nodes_allocation_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_265_nodes_allocation_delete_reader ... ok -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_unregister_conductor_hardware_interfaces -ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_unregister_conductor_hardware_interfaces ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_272_deploy_templates_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_272_deploy_templates_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_128_portgroups_portgroup_ident_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_128_portgroups_portgroup_ident_delete_member ... ok -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_destroy_node_history_by_uuid -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_destroy_node_history_by_uuid ... ok -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_id -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_id ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_266_deploy_templates_post_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_266_deploy_templates_post_admin ... ok -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_id_not_found -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_id_not_found ... ok -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_node_id -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_node_id ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_273_deploy_templates_deploy_template_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_273_deploy_templates_deploy_template_id_get_admin ... ok -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0645b864-6905-4bc0-a86b-2507f459fd50 +Openstack-Request-Id: req-4bf8a289-c7d6-4b92-aec8-5b854c296f27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-742d2aac-a320-4889-ad4d-983ec94335d8 +Openstack-Request-Id: req-a347976b-a6b0-4670-a9e6-86fef57c7e39 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:37:00.542168+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-742d2aac-a320-4889-ad4d-983ec94335d8 +Openstack-Request-Id: req-a347976b-a6b0-4670-a9e6-86fef57c7e39 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:37:00.542168+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d6267431-2b66-497a-bbf1-c45c35c74771 +Openstack-Request-Id: req-7f6c52ec-1d2a-4987-b4e4-39a6050a9f55 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d6267431-2b66-497a-bbf1-c45c35c74771 +Openstack-Request-Id: req-7f6c52ec-1d2a-4987-b4e4-39a6050a9f55 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ea2e9f6e-d551-4768-9b0e-937f43f9b745 +Openstack-Request-Id: req-58f40462-8455-40f4-a361-fc92b8f5e273 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ea2e9f6e-d551-4768-9b0e-937f43f9b745 +Openstack-Request-Id: req-58f40462-8455-40f4-a361-fc92b8f5e273 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2736b075-9b78-45cc-badf-b3553fd11fed +Openstack-Request-Id: req-d4b98063-b544-4de7-ab88-a32a56144df4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2736b075-9b78-45cc-badf-b3553fd11fed +Openstack-Request-Id: req-d4b98063-b544-4de7-ab88-a32a56144df4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-29ea3896-f569-456a-84d1-7c81bfa70f54 +Openstack-Request-Id: req-1b379608-9ab4-4b38-bfad-c0ba3a12f74f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-29ea3896-f569-456a-84d1-7c81bfa70f54 +Openstack-Request-Id: req-1b379608-9ab4-4b38-bfad-c0ba3a12f74f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 404 Not Found +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2a34021b-a3a2-40d9-80fb-f1f553723f7b +Openstack-Request-Id: req-1bb5b880-95cf-4452-929d-348541bcc956 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2a34021b-a3a2-40d9-80fb-f1f553723f7b +Openstack-Request-Id: req-1bb5b880-95cf-4452-929d-348541bcc956 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_027_nodes_validate_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_027_nodes_validate_get_reader ... ok +ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_iface_not_supported +ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_iface_not_supported ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_028_nodes_maintenance_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_028_nodes_maintenance_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_031_nodes_maintenance_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_031_nodes_maintenance_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_085_lessee_manager_can_set_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_085_lessee_manager_can_set_maintenance ... ok +ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_invalid_parameter_value +ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_invalid_parameter_value ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_029_nodes_maintenance_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_029_nodes_maintenance_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_032_nodes_management_boot_device_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_032_nodes_management_boot_device_put_admin ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_086_owner_member_can_set_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_086_owner_member_can_set_maintenance ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_address_active_node +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_address_active_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_030_nodes_maintenance_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_030_nodes_maintenance_put_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_033_nodes_management_boot_device_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_033_nodes_management_boot_device_put_member ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_address_maintenance +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_address_maintenance ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_087_lessee_member_cannot_set_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_087_lessee_member_cannot_set_maintenance ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_active_state_and_maintenance +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_active_state_and_maintenance ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_034_nodes_management_boot_device_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_034_nodes_management_boot_device_put_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_031_nodes_maintenance_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_031_nodes_maintenance_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_088_third_party_admin_cannot_set_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_088_third_party_admin_cannot_set_maintenance ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_deleting_state +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_deleting_state ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_locked +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_locked ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_032_nodes_maintenance_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_032_nodes_maintenance_delete_member ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9df3a486-c856-43b2-bfbf-e79c1defecc9 +Openstack-Request-Id: req-b1c7af3e-7352-4435-8cff-cb18e29f5c1b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_129_portgroups_portgroup_ident_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_129_portgroups_portgroup_ident_delete_observer ... ok -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_node_id_empty -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_node_id_empty ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_267_deploy_templates_post_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_267_deploy_templates_post_member ... ok -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_uuid -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_uuid ... ok -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_uuid_not_found -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_uuid_not_found ... ok -GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b3fb90b6-0699-48d3-a4e8-5bca4181e3d2 +Openstack-Request-Id: req-9d30c6cc-7f7f-400b-8323-56d88c1b6ab5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-94958b32-720f-4547-a03a-728ca1642e59 +Openstack-Request-Id: req-7ef04744-f620-4766-8f23-6f953473c55e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ede2e2af-309f-4161-878f-a4a93f3537ec +Openstack-Request-Id: req-0da069e3-59ac-4d1e-a027-c3a115d3b759 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d102f34d-89f0-4c8c-b8a3-e9546c8dac74 +Openstack-Request-Id: req-cb5fb070-307f-4bb8-be49-2503cb09cf3d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6211389d-7942-4b1e-a3dd-d1423291551d +Openstack-Request-Id: req-7229f21d-bdde-440f-9e4d-98ac9eaf10a1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1bdf0087-a4ab-46a3-bb8b-d34a76549430 +Openstack-Request-Id: req-2d17ef22-7b21-479e-ae7d-c3ad2028575b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/deploy_templates -POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-702e6dd8-4770-4b80-a324-75952a54ea7a +Openstack-Request-Id: req-b0f7254c-47cf-44b2-a331-81e3e0d288b3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/deploy_templates -POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5c823a91-8e14-4045-9a99-208c6f90f3b0 +Openstack-Request-Id: req-7c1ef4d4-17d4-4fca-912a-cdf0d5879068 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/deploy_templates -POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-dc38a740-7492-4cd0-9506-fa9078390fbd +Openstack-Request-Id: req-8a16ae81-0f05-4284-8f3d-764852aeaccb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates -GET: /v1/deploy_templates {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7fea5c83-f4fe-4877-a55d-7e51f651ae04 +Openstack-Request-Id: req-e50f20a5-dc38-4772-bb1e-fff5731c0104 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates -GET: /v1/deploy_templates {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-60b176e9-30a6-4043-bded-d3c0d1c90160 +Openstack-Request-Id: req-edd8ecd5-63e1-414b-8d24-a63a5a4ddfd3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates -GET: /v1/deploy_templates {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-41eb0156-434e-4fb0-94b7-d5ed85bbe65c +Openstack-Request-Id: req-8405c48e-0698-49cc-abee-11bf1ed97eda X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates/85cee21b-a401-4fc6-bd55-07bcb3eb6406 -GET: /v1/deploy_templates/85cee21b-a401-4fc6-bd55-07bcb3eb6406 {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e4cb9ac4-48a5-4bca-86c1-f3b4db887e7c +Openstack-Request-Id: req-daabd85f-d0f8-4a8b-b469-95f08deff0f3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates/52d1d2d2-39de-4886-8946-124f7d4909bf -GET: /v1/deploy_templates/52d1d2d2-39de-4886-8946-124f7d4909bf {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_274_deploy_templates_deploy_template_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_274_deploy_templates_deploy_template_id_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_130_nodes_portgroups_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_130_nodes_portgroups_get_admin ... ok -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_node_history_list -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_node_history_list ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_268_deploy_templates_post_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_268_deploy_templates_post_reader ... ok -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_node_history_list_sorted -ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_node_history_list_sorted ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_275_deploy_templates_deploy_template_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_275_deploy_templates_deploy_template_id_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_131_nodes_portgroups_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_131_nodes_portgroups_get_member ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_269_deploy_templates_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_269_deploy_templates_get_admin ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag_duplicate -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag_duplicate ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_276_deploy_templates_deploy_template_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_276_deploy_templates_deploy_template_id_patch_admin ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag_node_not_exist -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag_node_not_exist ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_132_nodes_portgroups_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_132_nodes_portgroups_get_observer ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_277_deploy_templates_deploy_template_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_277_deploy_templates_deploy_template_id_patch_member ... ok -API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_035_nodes_management_boot_device_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_035_nodes_management_boot_device_get_admin ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_manageable_state +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_manageable_state ... ok +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6bd993ef-4f56-4258-b43a-75a545aa6292 +Openstack-Request-Id: req-caaab02f-5183-459b-9c64-2d8be51489f0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6bd993ef-4f56-4258-b43a-75a545aa6292 +Openstack-Request-Id: req-cc450761-7956-40ca-aff9-a3e998ba0470 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9c569b74-67e7-457e-9071-759e420dbf5f +Openstack-Request-Id: req-cc450761-7956-40ca-aff9-a3e998ba0470 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-9c569b74-67e7-457e-9071-759e420dbf5f +Openstack-Request-Id: req-a0da843d-705d-4939-8d79-f542659aef4e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GOT:Response: 403 Forbidden +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-5f9392b8-e069-436d-9b00-f4efa469ed60 +Openstack-Request-Id: req-a0da843d-705d-4939-8d79-f542659aef4e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-5f9392b8-e069-436d-9b00-f4efa469ed60 +Openstack-Request-Id: req-3b77a45b-d694-4237-bd62-e30c7ede0f84 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/deploy_templates -POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Location: http://localhost/v1/deploy_templates/9e9a2d9a-0eb8-4d1a-b518-88177649586a -Openstack-Request-Id: req-12eab5ae-7609-42c8-affd-37ba91335151 +Openstack-Request-Id: req-3b77a45b-d694-4237-bd62-e30c7ede0f84 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "9e9a2d9a-0eb8-4d1a-b518-88177649586a", "created_at": "2024-01-06T13:37:05.959805+00:00", "updated_at": null, "name": "CUSTOM_TEST_TEMPLATE", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/9e9a2d9a-0eb8-4d1a-b518-88177649586a", "rel": "self"}, {"href": "http://localhost/deploy_templates/9e9a2d9a-0eb8-4d1a-b518-88177649586a", "rel": "bookmark"}], "steps": [{"interface": "deploy", "step": "noop", "args": {}, "priority": 0}]} -ACL Test GOT Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Location: http://localhost/v1/deploy_templates/9e9a2d9a-0eb8-4d1a-b518-88177649586a -Openstack-Request-Id: req-12eab5ae-7609-42c8-affd-37ba91335151 +Openstack-Request-Id: req-57a88a58-8f48-4d52-a03c-ad244fb51551 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "9e9a2d9a-0eb8-4d1a-b518-88177649586a", "created_at": "2024-01-06T13:37:05.959805+00:00", "updated_at": null, "name": "CUSTOM_TEST_TEMPLATE", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/9e9a2d9a-0eb8-4d1a-b518-88177649586a", "rel": "self"}, {"href": "http://localhost/deploy_templates/9e9a2d9a-0eb8-4d1a-b518-88177649586a", "rel": "bookmark"}], "steps": [{"interface": "deploy", "step": "noop", "args": {}, "priority": 0}]} -API ACL Testing Path post /v1/deploy_templates -POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-33327cdc-5aab-4552-bb1a-c9e012ddf326 +Openstack-Request-Id: req-57a88a58-8f48-4d52-a03c-ad244fb51551 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-33327cdc-5aab-4552-bb1a-c9e012ddf326 +Openstack-Request-Id: req-30775ee7-cc10-47a0-aa24-98c86393cf07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/deploy_templates -POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-151e396c-1e90-49df-9826-6569cca518bb +Openstack-Request-Id: req-30775ee7-cc10-47a0-aa24-98c86393cf07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-151e396c-1e90-49df-9826-6569cca518bb +Openstack-Request-Id: req-3e08442a-09cd-4b69-8777-105e4869bcaa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates -GET: /v1/deploy_templates {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6403b28f-90b9-4113-b192-7dafabf04f94 +Openstack-Request-Id: req-3e08442a-09cd-4b69-8777-105e4869bcaa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"deploy_templates": [{"uuid": "4052e244-6725-47ec-8eec-516557d9797a", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/4052e244-6725-47ec-8eec-516557d9797a", "rel": "self"}, {"href": "http://localhost/deploy_templates/4052e244-6725-47ec-8eec-516557d9797a", "rel": "bookmark"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6403b28f-90b9-4113-b192-7dafabf04f94 +Openstack-Request-Id: req-510c7fd9-9b52-40e3-8973-9566941f9db6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"deploy_templates": [{"uuid": "4052e244-6725-47ec-8eec-516557d9797a", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/4052e244-6725-47ec-8eec-516557d9797a", "rel": "self"}, {"href": "http://localhost/deploy_templates/4052e244-6725-47ec-8eec-516557d9797a", "rel": "bookmark"}]}]} -API ACL Testing Path get /v1/deploy_templates -GET: /v1/deploy_templates {} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_270_deploy_templates_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_270_deploy_templates_get_member ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag_node_not_found -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag_node_not_found ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_271_deploy_templates_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_271_deploy_templates_get_reader ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag_not_found -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag_not_found ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_278_deploy_templates_deploy_template_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_278_deploy_templates_deploy_template_id_patch_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_133_nodes_portgroups_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_133_nodes_portgroups_detail_get_admin ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_by_node_id -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_by_node_id ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_empty -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_empty ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_272_deploy_templates_deploy_template_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_272_deploy_templates_deploy_template_id_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_279_deploy_templates_deploy_template_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_279_deploy_templates_deploy_template_id_delete_admin ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_node_not_exist -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_node_not_exist ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_134_nodes_portgroups_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_134_nodes_portgroups_detail_get_member ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_exists -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_exists ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_273_deploy_templates_deploy_template_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_273_deploy_templates_deploy_template_id_get_member ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_node_not_exist -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_node_not_exist ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_280_deploy_templates_deploy_template_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_280_deploy_templates_deploy_template_id_delete_member ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9df3a486-c856-43b2-bfbf-e79c1defecc9 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-e28b7291-c5dd-4097-aec7-22bf84c94484 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-e28b7291-c5dd-4097-aec7-22bf84c94484 +Openstack-Request-Id: req-510c7fd9-9b52-40e3-8973-9566941f9db6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance None GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f2c5630b-f676-45e8-b8bb-51190cb14c03 +Openstack-Request-Id: req-2d9942e0-ccb4-4b77-bec2-8d2585f46d63 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f2c5630b-f676-45e8-b8bb-51190cb14c03 +Openstack-Request-Id: req-2d9942e0-ccb4-4b77-bec2-8d2585f46d63 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_089_owner_admin_can_unset_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_089_owner_admin_can_unset_maintenance ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_036_nodes_management_boot_device_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_036_nodes_management_boot_device_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_090_owner_manager_can_unset_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_090_owner_manager_can_unset_maintenance ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_033_nodes_maintenance_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_033_nodes_maintenance_delete_reader ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_maintenance +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_maintenance ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_node_deleting_state +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_node_deleting_state ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_037_nodes_management_boot_device_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_037_nodes_management_boot_device_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_091_lessee_admin_can_unset_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_091_lessee_admin_can_unset_maintenance ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_034_nodes_management_boot_device_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_034_nodes_management_boot_device_put_admin ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_validation_failure_conflict +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_validation_failure_conflict ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_validation_failure_inconsistent +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_validation_failure_inconsistent ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_038_nodes_management_boot_device_supported_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_038_nodes_management_boot_device_supported_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_092_lessee_manager_can_unset_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_092_lessee_manager_can_unset_maintenance ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-866799c5-a3ea-44a9-a832-4c82dde72727 +Openstack-Request-Id: req-331e6bc3-d2dc-4cf0-a9f0-dec34ef557c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-866799c5-a3ea-44a9-a832-4c82dde72727 +Openstack-Request-Id: req-331e6bc3-d2dc-4cf0-a9f0-dec34ef557c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-dcf77cb4-d8c9-4969-aa63-a9e06908a18c +Openstack-Request-Id: req-6b08feb1-5c74-479e-987e-3220425ca0a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:37:09.480872+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-dcf77cb4-d8c9-4969-aa63-a9e06908a18c +Openstack-Request-Id: req-6b08feb1-5c74-479e-987e-3220425ca0a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:37:09.480872+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-958e40b6-9028-4236-8137-fff48c456bcb +Openstack-Request-Id: req-472fc995-1a2c-47b7-affb-9887274fb28f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-958e40b6-9028-4236-8137-fff48c456bcb +Openstack-Request-Id: req-472fc995-1a2c-47b7-affb-9887274fb28f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_135_nodes_portgroups_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_135_nodes_portgroups_detail_get_observer ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_not_exists -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_not_exists ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_274_deploy_templates_deploy_template_id_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_274_deploy_templates_deploy_template_id_get_reader ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags_duplicate -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags_duplicate ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_281_deploy_templates_deploy_template_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_281_deploy_templates_deploy_template_id_delete_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_136_ports_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_136_ports_get_admin ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags_node_not_exist -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags_node_not_exist ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_empty_node_tags -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_empty_node_tags ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_137_ports_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_137_ports_get_member ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7fd0fd93-3095-45e8-9e4c-21ad46ca9f1c +Openstack-Request-Id: req-3f250e2e-b292-4601-bb67-6dd3878ea511 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"deploy_templates": [{"uuid": "06f796e2-fcc6-4dcf-aaf2-082f11bb16e7", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/06f796e2-fcc6-4dcf-aaf2-082f11bb16e7", "rel": "self"}, {"href": "http://localhost/deploy_templates/06f796e2-fcc6-4dcf-aaf2-082f11bb16e7", "rel": "bookmark"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7fd0fd93-3095-45e8-9e4c-21ad46ca9f1c +Openstack-Request-Id: req-3f250e2e-b292-4601-bb67-6dd3878ea511 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"deploy_templates": [{"uuid": "06f796e2-fcc6-4dcf-aaf2-082f11bb16e7", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/06f796e2-fcc6-4dcf-aaf2-082f11bb16e7", "rel": "self"}, {"href": "http://localhost/deploy_templates/06f796e2-fcc6-4dcf-aaf2-082f11bb16e7", "rel": "bookmark"}]}]} -API ACL Testing Path get /v1/deploy_templates -GET: /v1/deploy_templates {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c9c37954-e95a-4c5e-bf92-758edec8319a +Openstack-Request-Id: req-d3806f04-8ec7-45fe-913f-70aef50603d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"deploy_templates": [{"uuid": "c6068afc-7c74-4c00-ac94-b88b9365d8b1", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/c6068afc-7c74-4c00-ac94-b88b9365d8b1", "rel": "self"}, {"href": "http://localhost/deploy_templates/c6068afc-7c74-4c00-ac94-b88b9365d8b1", "rel": "bookmark"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c9c37954-e95a-4c5e-bf92-758edec8319a +Openstack-Request-Id: req-d3806f04-8ec7-45fe-913f-70aef50603d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"deploy_templates": [{"uuid": "c6068afc-7c74-4c00-ac94-b88b9365d8b1", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/c6068afc-7c74-4c00-ac94-b88b9365d8b1", "rel": "self"}, {"href": "http://localhost/deploy_templates/c6068afc-7c74-4c00-ac94-b88b9365d8b1", "rel": "bookmark"}]}]} -API ACL Testing Path get /v1/deploy_templates/c32dcdc5-6101-4206-ab54-51dad6584bc1 -GET: /v1/deploy_templates/c32dcdc5-6101-4206-ab54-51dad6584bc1 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-253c2669-2b38-4dea-8024-367ec20354f0 +Openstack-Request-Id: req-710d9df7-9936-4a23-b65d-0b00de1c8b4d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "c32dcdc5-6101-4206-ab54-51dad6584bc1", "created_at": "2024-01-06T13:37:09.979544+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/c32dcdc5-6101-4206-ab54-51dad6584bc1", "rel": "self"}, {"href": "http://localhost/deploy_templates/c32dcdc5-6101-4206-ab54-51dad6584bc1", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-253c2669-2b38-4dea-8024-367ec20354f0 +Openstack-Request-Id: req-710d9df7-9936-4a23-b65d-0b00de1c8b4d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "c32dcdc5-6101-4206-ab54-51dad6584bc1", "created_at": "2024-01-06T13:37:09.979544+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/c32dcdc5-6101-4206-ab54-51dad6584bc1", "rel": "self"}, {"href": "http://localhost/deploy_templates/c32dcdc5-6101-4206-ab54-51dad6584bc1", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -API ACL Testing Path get /v1/deploy_templates/f8035774-eaa1-4c81-ad8f-cdd3ac293294 -GET: /v1/deploy_templates/f8035774-eaa1-4c81-ad8f-cdd3ac293294 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-15b0639a-375b-4e38-9f3f-643baf1e0065 +Openstack-Request-Id: req-3a5f92d5-b3b5-43d1-85aa-b74da67fae5c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f8035774-eaa1-4c81-ad8f-cdd3ac293294", "created_at": "2024-01-06T13:37:10.549680+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/f8035774-eaa1-4c81-ad8f-cdd3ac293294", "rel": "self"}, {"href": "http://localhost/deploy_templates/f8035774-eaa1-4c81-ad8f-cdd3ac293294", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-15b0639a-375b-4e38-9f3f-643baf1e0065 +Openstack-Request-Id: req-3a5f92d5-b3b5-43d1-85aa-b74da67fae5c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f8035774-eaa1-4c81-ad8f-cdd3ac293294", "created_at": "2024-01-06T13:37:10.549680+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/f8035774-eaa1-4c81-ad8f-cdd3ac293294", "rel": "self"}, {"href": "http://localhost/deploy_templates/f8035774-eaa1-4c81-ad8f-cdd3ac293294", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -API ACL Testing Path get /v1/deploy_templates/dd8841be-46cd-4d57-8edc-578c8f2ec721 -GET: /v1/deploy_templates/dd8841be-46cd-4d57-8edc-578c8f2ec721 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-408ac4fd-80a0-4bbf-acfe-192057d88475 +Openstack-Request-Id: req-6d2c0181-cb29-4daf-b4ca-0e5ebb6e8372 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "dd8841be-46cd-4d57-8edc-578c8f2ec721", "created_at": "2024-01-06T13:37:11.358223+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/dd8841be-46cd-4d57-8edc-578c8f2ec721", "rel": "self"}, {"href": "http://localhost/deploy_templates/dd8841be-46cd-4d57-8edc-578c8f2ec721", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-408ac4fd-80a0-4bbf-acfe-192057d88475 +Openstack-Request-Id: req-6d2c0181-cb29-4daf-b4ca-0e5ebb6e8372 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "dd8841be-46cd-4d57-8edc-578c8f2ec721", "created_at": "2024-01-06T13:37:11.358223+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/dd8841be-46cd-4d57-8edc-578c8f2ec721", "rel": "self"}, {"href": "http://localhost/deploy_templates/dd8841be-46cd-4d57-8edc-578c8f2ec721", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -API ACL Testing Path patch /v1/deploy_templates/42dccf1e-e545-4b8a-a2d5-818897a96f97 -PATCH: /v1/deploy_templates/42dccf1e-e545-4b8a-a2d5-818897a96f97 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_035_nodes_management_boot_device_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_035_nodes_management_boot_device_put_member ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_port_changed_failure +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_port_changed_failure ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_039_nodes_management_boot_device_supported_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_039_nodes_management_boot_device_supported_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_093_owner_member_can_unset_maintnenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_093_owner_member_can_unset_maintnenance ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_portgroup_active_node +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_portgroup_active_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_036_nodes_management_boot_device_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_036_nodes_management_boot_device_put_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_040_nodes_management_boot_device_supported_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_040_nodes_management_boot_device_supported_get_observer ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_portgroup_enroll_node +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_portgroup_enroll_node ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_094_lessee_member_cannot_unset_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_094_lessee_member_cannot_unset_maintenance ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_037_nodes_management_boot_device_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_037_nodes_management_boot_device_get_admin ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_to_node_in_inspect_wait_state +ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_to_node_in_inspect_wait_state ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_041_nodes_management_inject_nmi_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_041_nodes_management_inject_nmi_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_095_third_party_admin_cannot_unset_maintenance +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_095_third_party_admin_cannot_unset_maintenance ... ok +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_038_nodes_management_boot_device_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_038_nodes_management_boot_device_get_member ... ok +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_duplicate +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_duplicate ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_096_owner_admin_can_set_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_096_owner_admin_can_set_boot_device ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_042_nodes_management_inject_nmi_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_042_nodes_management_inject_nmi_put_member ... ok +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_locked +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_locked ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_039_nodes_management_boot_device_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_039_nodes_management_boot_device_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_043_nodes_management_inject_nmi_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_043_nodes_management_inject_nmi_put_observer ... ok +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_not_found +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_not_found ... ok +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0f229ec2-67e7-44ff-8cf6-16fac0699633 +Openstack-Request-Id: req-513fef74-de79-4675-b0ba-a7bb4fbec49a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "42dccf1e-e545-4b8a-a2d5-818897a96f97", "created_at": "2024-01-06T13:37:11.896577+00:00", "updated_at": "2024-01-06T13:37:12.219726+00:00", "name": "CUSTOM_MAGIC", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/42dccf1e-e545-4b8a-a2d5-818897a96f97", "rel": "self"}, {"href": "http://localhost/deploy_templates/42dccf1e-e545-4b8a-a2d5-818897a96f97", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_275_deploy_templates_deploy_template_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_275_deploy_templates_deploy_template_id_patch_admin ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_node_tags -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_node_tags ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_282_chassis_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_282_chassis_post_admin ... ok -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_node_tags_node_not_exist -ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_node_tags_node_not_exist ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_276_deploy_templates_deploy_template_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_276_deploy_templates_deploy_template_id_patch_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_138_ports_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_138_ports_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_283_chassis_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_283_chassis_post_member ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_last_system_inventory_changed_different_inventory_time -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_last_system_inventory_changed_different_inventory_time ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_277_deploy_templates_deploy_template_id_patch_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_277_deploy_templates_deploy_template_id_patch_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_139_ports_post_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_139_ports_post_admin ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_last_system_inventory_changed_same_inventory_time -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_last_system_inventory_changed_same_inventory_time ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_284_chassis_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_284_chassis_post_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_278_deploy_templates_deploy_template_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_278_deploy_templates_deploy_template_id_delete_admin ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_last_system_inventory_changed_same_inventory_time_timeout -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_last_system_inventory_changed_same_inventory_time_timeout ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_140_ports_post_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_140_ports_post_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_285_chassis_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_285_chassis_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_279_deploy_templates_deploy_template_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_279_deploy_templates_deploy_template_id_delete_member ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs_completed_with_errors -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs_completed_with_errors ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_280_deploy_templates_deploy_template_id_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_280_deploy_templates_deploy_template_id_delete_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_286_chassis_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_286_chassis_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_141_ports_post_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_141_ports_post_observer ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs_failed -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs_failed ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_281_chassis_post_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_281_chassis_post_admin ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs_still_running -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs_still_running ... ok -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-78be2e65-f4c6-4f6d-ba6c-8c26896ad61b +Openstack-Request-Id: req-513fef74-de79-4675-b0ba-a7bb4fbec49a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates/5e7b922f-144c-404e-a951-fc44a4d36f91 -GET: /v1/deploy_templates/5e7b922f-144c-404e-a951-fc44a4d36f91 {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e80d9da9-8a6f-4b94-a9e7-3d059fc77e33 +Openstack-Request-Id: req-63dfe9f9-a0e3-4286-99d8-fb7144307229 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/deploy_templates/885fa11a-b64a-485a-81a7-de0ac9bd0d37 -PATCH: /v1/deploy_templates/885fa11a-b64a-485a-81a7-de0ac9bd0d37 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2d60835b-e7c8-4f44-8651-67fc0da37965 +Openstack-Request-Id: req-63dfe9f9-a0e3-4286-99d8-fb7144307229 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:update\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/deploy_templates/0667faf0-37f5-4664-ae8e-b3b2b72b2b05 -PATCH: /v1/deploy_templates/0667faf0-37f5-4664-ae8e-b3b2b72b2b05 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-37cba139-f761-4596-b7ed-2fc69e4bdec5 +Openstack-Request-Id: req-c04e9481-3585-4bdf-b3b7-e71111018d3b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:update\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/deploy_templates/b033236d-5270-453e-871f-bda4e7b88e14 -PATCH: /v1/deploy_templates/b033236d-5270-453e-871f-bda4e7b88e14 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-eb337eb0-9128-4c7e-b386-57cb4f2c9c5e +Openstack-Request-Id: req-c04e9481-3585-4bdf-b3b7-e71111018d3b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:update\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/deploy_templates/0b56f7a9-b274-4d83-8515-a36fdb953d34 -DELETE: /v1/deploy_templates/0b56f7a9-b274-4d83-8515-a36fdb953d34 -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-fb699378-73d0-4fcb-b673-601fa4998ca0 +Openstack-Request-Id: req-63e3f551-b50e-440e-a13d-964546c60d63 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/deploy_templates/2799e0bd-cbdd-4b79-8622-b103c5fdaaaf -DELETE: /v1/deploy_templates/2799e0bd-cbdd-4b79-8622-b103c5fdaaaf -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-389e705a-b3d2-4aca-ac4e-bf8f48093f5f +Openstack-Request-Id: req-63e3f551-b50e-440e-a13d-964546c60d63 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/deploy_templates/f10916bd-9b28-42b4-ad40-81b553d1ffa0 -DELETE: /v1/deploy_templates/f10916bd-9b28-42b4-ad40-81b553d1ffa0 -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-824778b6-37e3-4b88-a705-26bbd1413560 +Openstack-Request-Id: req-65a560ee-aa40-473b-93ee-668c7d0dad8f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/chassis -POST: /v1/chassis {'description': 'test-chassis'} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-5c9ddb6b-6162-4e90-90f9-95b6c5b5e59e +Openstack-Request-Id: req-65a560ee-aa40-473b-93ee-668c7d0dad8f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path post /v1/chassis -POST: /v1/chassis {'description': 'test-chassis'} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-40aee4ea-6ee1-457b-9345-0aeafb25ffc9 +Openstack-Request-Id: req-6c8607ed-0b10-46e8-81f6-9d153b3b6f49 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path post /v1/chassis -POST: /v1/chassis {'description': 'test-chassis'} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0a7ad2ee-dddb-4428-bc4b-e1ed7db06ad5 +Openstack-Request-Id: req-6c8607ed-0b10-46e8-81f6-9d153b3b6f49 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/chassis -GET: /v1/chassis {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d585237d-dc04-4fe4-a32e-91bd98616324 +Openstack-Request-Id: req-12801ca8-ce92-42d6-9606-90de24806855 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis -GET: /v1/chassis {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-63b830ff-2462-4f25-800b-af52fd43c4ff +Openstack-Request-Id: req-12801ca8-ce92-42d6-9606-90de24806855 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis -GET: /v1/chassis {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_287_chassis_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_287_chassis_get_observer ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-481b3be8-b688-4a1c-ab5d-fb7b63b96d2c +Openstack-Request-Id: req-edd18055-cfb6-47f6-b3c4-6fab796d0e23 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:37:10.638225+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-481b3be8-b688-4a1c-ab5d-fb7b63b96d2c +Openstack-Request-Id: req-edd18055-cfb6-47f6-b3c4-6fab796d0e23 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:37:10.638225+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {'boot_device': 'pxe'} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_097_owner_manager_can_set_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_097_owner_manager_can_set_boot_device ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_098_lessee_admin_cannot_set_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_098_lessee_admin_cannot_set_boot_device ... ok +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_power_on +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_power_on ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_040_nodes_management_boot_device_supported_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_040_nodes_management_boot_device_supported_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_044_nodes_states_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_044_nodes_states_get_admin ... ok +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_not_found +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_099_lessee_manager_cannot_set_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_099_lessee_manager_cannot_set_boot_device ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_041_nodes_management_boot_device_supported_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_041_nodes_management_boot_device_supported_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_045_nodes_states_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_045_nodes_states_get_member ... ok +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_uuid +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_uuid ... ok +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_volume_type +ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_volume_type ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_100_owner_member_cannot_set_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_100_owner_member_cannot_set_boot_device ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_042_nodes_management_boot_device_supported_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_042_nodes_management_boot_device_supported_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_046_nodes_states_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_046_nodes_states_get_observer ... ok +ironic.tests.unit.conductor.test_notification_utils.ProvisionNotifyTestCase.test_emit_notification +ironic.tests.unit.conductor.test_notification_utils.ProvisionNotifyTestCase.test_emit_notification ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_101_lessee_member_cannot_set_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_101_lessee_member_cannot_set_boot_device ... ok +ironic.tests.unit.conductor.test_notification_utils.ProvisionNotifyTestCase.test_mask_secrets +ironic.tests.unit.conductor.test_notification_utils.ProvisionNotifyTestCase.test_mask_secrets ... ok +ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_version_cap +ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_version_cap ... ok +ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_version_capped +ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_version_capped ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_047_nodes_states_power_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_047_nodes_states_power_put_admin ... ok +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-22c02ff4-42c9-483e-ae47-84954096a270 +Openstack-Request-Id: req-c7de054e-e964-48e9-8bea-eb3bdda1f4ab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-22c02ff4-42c9-483e-ae47-84954096a270 +Openstack-Request-Id: req-c7de054e-e964-48e9-8bea-eb3bdda1f4ab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-801e6155-6bba-4e7d-83f6-414bd6b649f4 +Openstack-Request-Id: req-e34c2a53-b89e-4dda-9856-168a25f58a45 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-801e6155-6bba-4e7d-83f6-414bd6b649f4 +Openstack-Request-Id: req-e34c2a53-b89e-4dda-9856-168a25f58a45 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-18989c6e-aee6-410f-aeae-6cb3fa7cc528 +Openstack-Request-Id: req-73001532-a315-4a1b-b714-26c3012b2013 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-18989c6e-aee6-410f-aeae-6cb3fa7cc528 +Openstack-Request-Id: req-73001532-a315-4a1b-b714-26c3012b2013 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-fc498c0b-9b69-4845-a675-bb8d384c0c7d +Openstack-Request-Id: req-430fbf2b-9e8b-4225-893a-67e48a9e30ca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 68a552fb-dcd2-43bf-9302-e4c93287be16 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-fc498c0b-9b69-4845-a675-bb8d384c0c7d +Openstack-Request-Id: req-430fbf2b-9e8b-4225-893a-67e48a9e30ca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 68a552fb-dcd2-43bf-9302-e4c93287be16 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2709250c-a961-4401-b3ba-c75f5d717299 +Openstack-Request-Id: req-d5b1e758-e861-4a7b-b453-d82d7d34d4c2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2709250c-a961-4401-b3ba-c75f5d717299 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'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-525f23c9-5f7c-4342-aeca-374cc219c27c +Openstack-Request-Id: req-d5b1e758-e861-4a7b-b453-d82d7d34d4c2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-525f23c9-5f7c-4342-aeca-374cc219c27c +Openstack-Request-Id: req-76c2eccb-2628-492d-aea5-d556fa568934 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/detail -GET: /v1/ports/detail {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_142_ports_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_142_ports_detail_get_admin ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__query_bios_config_job_status -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__query_bios_config_job_status ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__query_bios_config_job_status_no_config_jobs -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__query_bios_config_job_status_no_config_jobs ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_143_ports_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_143_ports_detail_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_288_chassis_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_288_chassis_detail_get_admin ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__query_bios_config_job_status_no_driver -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__query_bios_config_job_status_no_driver ... ok -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0f229ec2-67e7-44ff-8cf6-16fac0699633 +Openstack-Request-Id: req-76c2eccb-2628-492d-aea5-d556fa568934 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "42dccf1e-e545-4b8a-a2d5-818897a96f97", "created_at": "2024-01-06T13:37:11.896577+00:00", "updated_at": "2024-01-06T13:37:12.219726+00:00", "name": "CUSTOM_MAGIC", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/42dccf1e-e545-4b8a-a2d5-818897a96f97", "rel": "self"}, {"href": "http://localhost/deploy_templates/42dccf1e-e545-4b8a-a2d5-818897a96f97", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -API ACL Testing Path patch /v1/deploy_templates/a27bc30a-2074-4d89-95c6-cd703e2872ca -PATCH: /v1/deploy_templates/a27bc30a-2074-4d89-95c6-cd703e2872ca [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-db114435-21e3-45fb-a125-48da511c3f13 +Openstack-Request-Id: req-5ac1421e-ed43-43b6-b202-a971a4e82b12 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-db114435-21e3-45fb-a125-48da511c3f13 +Openstack-Request-Id: req-5ac1421e-ed43-43b6-b202-a971a4e82b12 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/deploy_templates/b561973b-26a3-439c-a129-96004a4ac35a -PATCH: /v1/deploy_templates/b561973b-26a3-439c-a129-96004a4ac35a [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-96448f8b-b265-403f-b5d9-7ecf3e62dc49 +Openstack-Request-Id: req-29f50b3c-6537-4617-acd4-3f5dab9e7947 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-96448f8b-b265-403f-b5d9-7ecf3e62dc49 +Openstack-Request-Id: req-29f50b3c-6537-4617-acd4-3f5dab9e7947 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/deploy_templates/d3e038c6-ba09-422e-a11a-3175874eaf90 -DELETE: /v1/deploy_templates/d3e038c6-ba09-422e-a11a-3175874eaf90 -GOT:Response: 204 No Content -Openstack-Request-Id: req-38473ba0-180b-44e9-b523-a0ac5974ca22 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_043_nodes_management_inject_nmi_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_043_nodes_management_inject_nmi_put_admin ... ok +ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_versions_in_sync +ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_versions_in_sync ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_102_third_party_admin_cannot_set_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_102_third_party_admin_cannot_set_boot_device ... ok +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_error_on_template +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_error_on_template ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_044_nodes_management_inject_nmi_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_044_nodes_management_inject_nmi_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_048_nodes_states_power_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_048_nodes_states_power_put_member ... ok +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_error_on_usersteps +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_error_on_usersteps ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_103_owner_admin_can_get_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_103_owner_admin_can_get_boot_device ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_045_nodes_management_inject_nmi_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_045_nodes_management_inject_nmi_put_reader ... ok +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_ok +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_ok ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_104_owner_manager_can_get_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_104_owner_manager_can_get_boot_device ... ok +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-d6cfab8b-7d58-4101-8b92-fe011552f525 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -ACL Test GOT Response: 204 No Content -Openstack-Request-Id: req-38473ba0-180b-44e9-b523-a0ac5974ca22 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-894bd6a0-2358-474e-8aea-902ea98977a2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -API ACL Testing Path delete /v1/deploy_templates/f8b40553-6a7a-4166-9e82-ea81a0878aa0 -DELETE: /v1/deploy_templates/f8b40553-6a7a-4166-9e82-ea81a0878aa0 -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bc27089e-64ec-4bfa-a332-8f75bb93819f +Openstack-Request-Id: req-73ecc218-768a-4b83-9249-6c3117597777 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bc27089e-64ec-4bfa-a332-8f75bb93819f +Openstack-Request-Id: req-82969493-faad-47dc-9b8a-f49198912a1a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/deploy_templates/c7c2e920-68d9-455d-8dc5-d0f9d88fd9fa -DELETE: /v1/deploy_templates/c7c2e920-68d9-455d-8dc5-d0f9d88fd9fa -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-50e63a4f-d45a-4547-b43b-0d2ec5e19cc7 +Openstack-Request-Id: req-c228989a-9309-4cdc-99bd-4be4fcc89f34 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-50e63a4f-d45a-4547-b43b-0d2ec5e19cc7 +Openstack-Request-Id: req-a79a4672-3460-4864-aa6e-6f1bd346363f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/chassis -POST: /v1/chassis {'description': 'test-chassis'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/chassis/c3ed1633-2e4b-4dbe-8d8e-7d2b610a4fc4 -Openstack-Request-Id: req-6f5c13e1-7969-4b7f-ad42-ae83e99ae6a0 +Openstack-Request-Id: req-395be2d4-5af4-424b-8464-567654763672 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "c3ed1633-2e4b-4dbe-8d8e-7d2b610a4fc4", "created_at": "2024-01-06T13:37:15.886890+00:00", "updated_at": null, "description": "test-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/c3ed1633-2e4b-4dbe-8d8e-7d2b610a4fc4", "rel": "self"}, {"href": "http://localhost/chassis/c3ed1633-2e4b-4dbe-8d8e-7d2b610a4fc4", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/c3ed1633-2e4b-4dbe-8d8e-7d2b610a4fc4/nodes", "rel": "self"}, {"href": "http://localhost/chassis/c3ed1633-2e4b-4dbe-8d8e-7d2b610a4fc4/nodes", "rel": "bookmark"}]]} -ACL Test GOT Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/chassis/c3ed1633-2e4b-4dbe-8d8e-7d2b610a4fc4 -Openstack-Request-Id: req-6f5c13e1-7969-4b7f-ad42-ae83e99ae6a0 +Openstack-Request-Id: req-cbba1d3e-760b-48bc-af64-a22ce829fc53 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "c3ed1633-2e4b-4dbe-8d8e-7d2b610a4fc4", "created_at": "2024-01-06T13:37:15.886890+00:00", "updated_at": null, "description": "test-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/c3ed1633-2e4b-4dbe-8d8e-7d2b610a4fc4", "rel": "self"}, {"href": "http://localhost/chassis/c3ed1633-2e4b-4dbe-8d8e-7d2b610a4fc4", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/c3ed1633-2e4b-4dbe-8d8e-7d2b610a4fc4/nodes", "rel": "self"}, {"href": "http://localhost/chassis/c3ed1633-2e4b-4dbe-8d8e-7d2b610a4fc4/nodes", "rel": "bookmark"}]]} -API ACL Testing Path post /v1/chassis -POST: /v1/chassis {'description': 'test-chassis'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-22c482e2-f0c1-4e49-8c61-15fbe34f8364 +Openstack-Request-Id: req-b10bfc2b-c04d-46e3-a462-62e0cbd89608 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_282_chassis_post_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_282_chassis_post_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_283_chassis_post_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_283_chassis_post_reader ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_conf_commit_fail -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_conf_commit_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_144_ports_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_144_ports_detail_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_289_chassis_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_289_chassis_detail_get_member ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_conf_set_fail -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_conf_set_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_284_chassis_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_284_chassis_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_145_ports_port_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_145_ports_port_id_get_admin ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_configuration_clean -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_configuration_clean ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_290_chassis_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_290_chassis_detail_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_285_chassis_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_285_chassis_get_member ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_configuration_deploy -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_configuration_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_146_ports_port_id_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_146_ports_port_id_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_291_chassis_chassis_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_291_chassis_chassis_id_get_admin ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_cache_bios_settings_fail -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_cache_bios_settings_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_286_chassis_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_286_chassis_get_reader ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7f56a832-537f-43ef-9397-80b4de1a7930 +Openstack-Request-Id: req-edb5e248-5e0d-4d13-9408-ad415e41b8ed X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:15.751824+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7f56a832-537f-43ef-9397-80b4de1a7930 +Openstack-Request-Id: req-a7e23687-f68b-431f-b314-0f0bbef1cc8b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:15.751824+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -API ACL Testing Path get /v1/ports/detail -GET: /v1/ports/detail {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e6d253c8-03f8-4c21-b822-5c23b19a2676 +Openstack-Request-Id: req-d383430c-70a0-4b25-a123-3d030d7f1054 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e6d253c8-03f8-4c21-b822-5c23b19a2676 +Openstack-Request-Id: req-029c836f-2716-4183-8cd1-5ea715011be3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/detail -GET: /v1/ports/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ab8b9b09-e8c5-46fb-8237-442bad5010e1 +Openstack-Request-Id: req-bce6530b-078a-4c65-b92f-9a4c3bf4f94d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:16.978881+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_049_nodes_states_power_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_049_nodes_states_power_put_observer ... ok +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_skip_missing +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_skip_missing ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_050_nodes_states_boot_mode_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_050_nodes_states_boot_mode_put_admin ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_callback_stable_state +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_callback_stable_state ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_046_nodes_states_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_046_nodes_states_get_admin ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_fsm_raises +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_fsm_raises ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_no_callback_notify +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_no_callback_notify ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_051_nodes_states_boot_mode_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_051_nodes_states_boot_mode_put_member ... ok +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ab8b9b09-e8c5-46fb-8237-442bad5010e1 +Openstack-Request-Id: req-b8d8cdb0-dff0-436a-b6fa-cc2a3fcb711a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:16.978881+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c624d3d9-89ce-451d-a091-0184461ac613 +Openstack-Request-Id: req-b8d8cdb0-dff0-436a-b6fa-cc2a3fcb711a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:17.866440+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c624d3d9-89ce-451d-a091-0184461ac613 +Openstack-Request-Id: req-f83a0396-c5ed-443f-b0aa-6afa47f660c8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:17.866440+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1d006692-a994-4ce7-97fa-6ee4f9cac7d8 +Openstack-Request-Id: req-f83a0396-c5ed-443f-b0aa-6afa47f660c8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1d006692-a994-4ce7-97fa-6ee4f9cac7d8 +Openstack-Request-Id: req-1bc07129-d05d-445e-ab0b-4bf7fdca56d5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_147_ports_port_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_147_ports_port_id_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_292_chassis_chassis_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_292_chassis_chassis_id_get_member ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_cache_bios_settings_noop -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_cache_bios_settings_noop ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_287_chassis_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_287_chassis_detail_get_admin ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_clean -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_clean ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_148_ports_port_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_148_ports_port_id_patch_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_293_chassis_chassis_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_293_chassis_chassis_id_get_observer ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-22c482e2-f0c1-4e49-8c61-15fbe34f8364 +Openstack-Request-Id: req-1bc07129-d05d-445e-ab0b-4bf7fdca56d5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/chassis -POST: /v1/chassis {'description': 'test-chassis'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {'boot_device': 'pxe'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a3ce779f-7db3-40d2-86ff-704ddbe9c742 +Openstack-Request-Id: req-9ed50dcc-81ee-40b3-9d99-2f6fc36a3f5c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a3ce779f-7db3-40d2-86ff-704ddbe9c742 +Openstack-Request-Id: req-9ed50dcc-81ee-40b3-9d99-2f6fc36a3f5c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis -GET: /v1/chassis {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-36b68d99-e67d-4282-91f5-dcfb789d88be +Openstack-Request-Id: req-d9518c34-d598-4dcd-8bf6-e8502a79af84 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-36b68d99-e67d-4282-91f5-dcfb789d88be +Openstack-Request-Id: req-d9518c34-d598-4dcd-8bf6-e8502a79af84 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/chassis -GET: /v1/chassis {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {'boot_device': 'pxe'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-886fde0a-354e-479c-b696-2d17235dd0e6 +Openstack-Request-Id: req-bc3973eb-ac3d-4000-8836-fbc3fd95982f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-886fde0a-354e-479c-b696-2d17235dd0e6 +Openstack-Request-Id: req-bc3973eb-ac3d-4000-8836-fbc3fd95982f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/chassis -GET: /v1/chassis {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e95f7600-2511-413d-9123-bde4eebefc05 +Openstack-Request-Id: req-8996358b-2673-4590-8add-5c95bcb80c7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e95f7600-2511-413d-9123-bde4eebefc05 +Openstack-Request-Id: req-8996358b-2673-4590-8add-5c95bcb80c7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/chassis/detail -GET: /v1/chassis/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-56195020-80c8-4176-a156-9eb348469950 +Openstack-Request-Id: req-c477a0b4-c112-4a58-8d4d-c25cb10f8a35 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:19.892467+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"}]]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-56195020-80c8-4176-a156-9eb348469950 +Openstack-Request-Id: req-c477a0b4-c112-4a58-8d4d-c25cb10f8a35 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:19.892467+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"}]]}]} -API ACL Testing Path get /v1/chassis/detail -GET: /v1/chassis/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device {} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_105_lessee_admin_cannot_get_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_105_lessee_admin_cannot_get_boot_device ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_no_callback_stable_state +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_no_callback_stable_state ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_106_owner_member_cannot_get_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_106_owner_member_cannot_get_boot_device ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_callback +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_callback ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_047_nodes_states_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_047_nodes_states_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_052_nodes_states_boot_mode_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_052_nodes_states_boot_mode_put_observer ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_callback_and_error_handler +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_callback_and_error_handler ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_target_state +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_target_state ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_release_clears_resources +ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_release_clears_resources ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_107_lessee_member_cannot_get_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_107_lessee_member_cannot_get_boot_device ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_048_nodes_states_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_048_nodes_states_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_053_nodes_states_secure_boot_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_053_nodes_states_secure_boot_put_admin ... ok +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_already_present +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_already_present ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_049_nodes_states_power_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_049_nodes_states_power_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_108_owner_reader_cannot_get_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_108_owner_reader_cannot_get_boot_device ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_054_nodes_states_secure_boot_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_054_nodes_states_secure_boot_put_member ... ok +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_change_secure_off +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_change_secure_off ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_055_nodes_states_secure_boot_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_055_nodes_states_secure_boot_put_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_109_lessee_reader_cannot_get_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_109_lessee_reader_cannot_get_boot_device ... ok +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_change_secure_off_to_none +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_change_secure_off_to_none ... ok +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-055954a7-065b-456a-ae2d-ef7851454f92 +Openstack-Request-Id: req-4b2668b8-8b9a-41c2-b891-9b6fdf1139ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:20.516616+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"}]]}]} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_288_chassis_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_288_chassis_detail_get_member ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_commit_fail -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_commit_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_294_chassis_chassis_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_294_chassis_chassis_id_patch_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_149_ports_port_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_149_ports_port_id_patch_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_289_chassis_detail_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_289_chassis_detail_get_reader ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_deploy -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_deploy ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_set_fail -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_set_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_290_chassis_chassis_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_290_chassis_chassis_id_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_295_chassis_chassis_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_295_chassis_chassis_id_patch_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_150_ports_port_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_150_ports_port_id_patch_observer ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_get_properties -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_get_properties ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_validate -ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_validate ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_291_chassis_chassis_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_291_chassis_chassis_id_get_member ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_mac_address_with_ethernet_interfaces -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_mac_address_with_ethernet_interfaces ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_296_chassis_chassis_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_296_chassis_chassis_id_patch_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_151_ports_port_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_151_ports_port_id_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_292_chassis_chassis_id_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_292_chassis_chassis_id_get_reader ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_mac_address_without_ethernet_interfaces -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_mac_address_without_ethernet_interfaces ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_152_ports_port_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_152_ports_port_id_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_297_chassis_chassis_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_297_chassis_chassis_id_delete_admin ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_with_BIOS_boot_mode -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_with_BIOS_boot_mode ... ok -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-055954a7-065b-456a-ae2d-ef7851454f92 +Openstack-Request-Id: req-4b2668b8-8b9a-41c2-b891-9b6fdf1139ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:20.516616+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"}]]}]} -API ACL Testing Path get /v1/chassis/detail -GET: /v1/chassis/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-726d7a46-aa64-48a1-a999-a8cc4acff55f +Openstack-Request-Id: req-39134012-af51-40d2-a480-459247b4a93f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:21.221802+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"}]]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-726d7a46-aa64-48a1-a999-a8cc4acff55f +Openstack-Request-Id: req-39134012-af51-40d2-a480-459247b4a93f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:21.221802+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"}]]}]} -API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-343d839d-6f4b-4aad-8ecb-5141c50cc5fc +Openstack-Request-Id: req-ff2d732b-4610-4b22-8a5b-971643a335f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:21.832423+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"}]]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-343d839d-6f4b-4aad-8ecb-5141c50cc5fc +Openstack-Request-Id: req-ff2d732b-4610-4b22-8a5b-971643a335f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:21.832423+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"}]]} -API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-078552ed-27ad-4c0b-8a8a-14262cfd66ec +Openstack-Request-Id: req-fde68ab1-0771-4313-bd93-15cddfbb0795 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:22.656799+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"}]]} +{"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} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-078552ed-27ad-4c0b-8a8a-14262cfd66ec +Openstack-Request-Id: req-fde68ab1-0771-4313-bd93-15cddfbb0795 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:22.656799+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"}]]} -API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +{"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} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-47af5524-ed56-4c0a-ba82-3e97c8d915ae +Openstack-Request-Id: req-12d89a38-e3bf-487a-90c4-2916f3409733 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:23.056147+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"}]]} +{"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} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-47af5524-ed56-4c0a-ba82-3e97c8d915ae +Openstack-Request-Id: req-12d89a38-e3bf-487a-90c4-2916f3409733 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:23.056147+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"}]]} -API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_293_chassis_chassis_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_293_chassis_chassis_id_patch_admin ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_with_UEFI_boot_mode -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_with_UEFI_boot_mode ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_153_ports_port_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_153_ports_port_id_delete_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_298_chassis_chassis_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_298_chassis_chassis_id_delete_member ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_without_boot_mode -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_without_boot_mode ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_294_chassis_chassis_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_294_chassis_chassis_id_patch_member ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test_get_properties -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test_get_properties ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_299_chassis_chassis_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_299_chassis_chassis_id_delete_observer ... ok +{"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} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-fb8097bd-d10b-4574-8b5b-683ef95396f6 +Openstack-Request-Id: req-038a09f6-9f3b-47cf-aef4-64b924cc2514 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:19.376604+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +{"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} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-fb8097bd-d10b-4574-8b5b-683ef95396f6 +Openstack-Request-Id: req-038a09f6-9f3b-47cf-aef4-64b924cc2514 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:19.376604+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"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} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e6739cc5-d2d6-4a97-97ce-e6d3eb46c42c +Openstack-Request-Id: req-8fb274c6-b3db-43e8-bc21-d22001ce9e26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e6739cc5-d2d6-4a97-97ce-e6d3eb46c42c +Openstack-Request-Id: req-8fb274c6-b3db-43e8-bc21-d22001ce9e26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-7648da46-84cf-480a-b863-86bfd7898199 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7648da46-84cf-480a-b863-86bfd7898199 +Openstack-Request-Id: req-533f72b6-7982-494f-a4da-968bea0b252d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_050_nodes_states_power_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_050_nodes_states_power_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_056_nodes_states_provision_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_056_nodes_states_provision_put_admin ... ok +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_failed_boot_mode +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_failed_boot_mode ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_051_nodes_states_power_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_051_nodes_states_power_put_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_110_third_party_admin_cannot_get_boot_device +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_110_third_party_admin_cannot_get_boot_device ... ok +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_failed_secure +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_failed_secure ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_057_nodes_states_provision_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_057_nodes_states_provision_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_052_nodes_states_boot_mode_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_052_nodes_states_boot_mode_put_admin ... ok +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_noneness +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_noneness ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_111_owner_admin_can_get_supported_boot_devices +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_111_owner_admin_can_get_supported_boot_devices ... ok +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_retreive_and_set +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_retreive_and_set ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_058_nodes_states_provision_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_058_nodes_states_provision_put_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_053_nodes_states_boot_mode_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_053_nodes_states_boot_mode_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_112_owner_manager_can_get_supported_boot_devices +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_112_owner_manager_can_get_supported_boot_devices ... ok +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_unsupported +ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_unsupported ... ok +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_cleanup_after_timeout +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_cleanup_after_timeout ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_059_nodes_states_raid_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_059_nodes_states_raid_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_054_nodes_states_boot_mode_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_054_nodes_states_boot_mode_put_reader ... ok +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_cleanup_after_timeout_shared_lock +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_cleanup_after_timeout_shared_lock ... ok +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_060_nodes_states_raid_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_060_nodes_states_raid_put_member ... ok GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-debb0d08-e556-4060-a374-80e7d0968cac +Openstack-Request-Id: req-6b5cb053-7967-4a1f-a90c-82ab581d075a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-debb0d08-e556-4060-a374-80e7d0968cac +Openstack-Request-Id: req-6b5cb053-7967-4a1f-a90c-82ab581d075a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7e6c2518-d148-4e94-8716-4a9e5d8b1cfd +Openstack-Request-Id: req-2acc5615-34f0-4aaf-b1c1-9e1d3eeff4fc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7e6c2518-d148-4e94-8716-4a9e5d8b1cfd +Openstack-Request-Id: req-2acc5615-34f0-4aaf-b1c1-9e1d3eeff4fc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7bba9e90-a947-413a-9a03-119e832f2243 +Openstack-Request-Id: req-90532a03-dcc9-41e4-b5e9-b073de20fc78 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7bba9e90-a947-413a-9a03-119e832f2243 +Openstack-Request-Id: req-90532a03-dcc9-41e4-b5e9-b073de20fc78 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-846cddde-99c5-4314-8f9f-7ba530062f29 +Openstack-Request-Id: req-640ba58f-cf37-4002-aebe-2b6f6be87d2b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-846cddde-99c5-4314-8f9f-7ba530062f29 +Openstack-Request-Id: req-640ba58f-cf37-4002-aebe-2b6f6be87d2b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_154_nodes_ports_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_154_nodes_ports_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_295_chassis_chassis_id_patch_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_295_chassis_chassis_id_patch_reader ... ok -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9e1be943-325e-49a3-bdb7-e1135a200cf0 +Openstack-Request-Id: req-4bbd8fa2-7254-46cd-a93a-3b17a2cc8347 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/detail -GET: /v1/chassis/detail {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3d0fbe1c-4b87-4cb6-83d1-5492ab4f4d53 +Openstack-Request-Id: req-4bbd8fa2-7254-46cd-a93a-3b17a2cc8347 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/detail -GET: /v1/chassis/detail {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-56c67375-6556-4cd1-b001-62ac618907bb +Openstack-Request-Id: req-c7382441-59d9-4a16-84f2-54065d67e731 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/detail -GET: /v1/chassis/detail {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3f3a89ce-a325-40ad-8d5d-5f53290001f9 +Openstack-Request-Id: req-c7382441-59d9-4a16-84f2-54065d67e731 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1f08950a-ffca-4bd6-b2c8-144fca49427d +Openstack-Request-Id: req-bd3d3f5b-78d2-411f-8a72-7753503c7b15 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0caf1fd5-c0d5-4d9e-a376-61bba3c46593 +Openstack-Request-Id: req-bd3d3f5b-78d2-411f-8a72-7753503c7b15 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-93c349b6-2d2f-4836-9312-bade884658e7 +Openstack-Request-Id: req-9db53266-8099-494c-a6cc-68a2b8d466ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-48d85bca-4b3c-4f1f-8844-79768f2dbd19 +Openstack-Request-Id: req-9db53266-8099-494c-a6cc-68a2b8d466ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"role:member and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported {} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_113_owner_member_cannot_get_supported_boot_devices +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_113_owner_member_cannot_get_supported_boot_devices ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_055_nodes_states_secure_boot_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_055_nodes_states_secure_boot_put_admin ... ok +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_cleanup_ironic_exception +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_cleanup_ironic_exception ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_061_nodes_states_raid_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_061_nodes_states_raid_put_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_114_lessee_admin_cannot_get_supported_boot_devices +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_114_lessee_admin_cannot_get_supported_boot_devices ... ok +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_cleanup_random_exception +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_cleanup_random_exception ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_056_nodes_states_secure_boot_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_056_nodes_states_secure_boot_put_member ... ok +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_no_cleanup +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_no_cleanup ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_062_nodes_states_console_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_062_nodes_states_console_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_115_lessee_manager_cannot_get_supported_boot_devices +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_115_lessee_manager_cannot_get_supported_boot_devices ... ok +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_not_deploy +ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_not_deploy ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_057_nodes_states_secure_boot_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_057_nodes_states_secure_boot_put_reader ... ok +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_116_third_party_admin_cannot_get_supported_boot_devices +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_116_third_party_admin_cannot_get_supported_boot_devices ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1cef936f-8951-466c-8758-4d5eb86f591a +Openstack-Request-Id: req-d240b43c-41d3-471d-8f93-e1f2419cf91c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"role:member and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7a156ac7-8721-40bd-93cf-06304b1efcb9 +Openstack-Request-Id: req-df80bfaf-7e67-45fb-b4d5-a0c7ced118e4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"role:member and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-586ab3a6-7097-465a-888b-09068ba85a9e +Openstack-Request-Id: req-98166346-c0e5-419d-b4fc-5c5ade7c3819 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a0e77d92-94a2-476f-acac-acb4a57052c9 +Openstack-Request-Id: req-d6b57bdd-8587-45f0-817c-981697442cc6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-92e7b06a-50d2-4589-a201-aab8742f7b86 +Openstack-Request-Id: req-a3c068f1-16fb-48dd-b02e-7b4bcd21f5e3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_300_node_history_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_300_node_history_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_155_nodes_ports_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_155_nodes_ports_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_296_chassis_chassis_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_296_chassis_chassis_id_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_301_node_history_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_301_node_history_get_member ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test_inspect_hardware_with_ethernet_interfaces_mac -ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test_inspect_hardware_with_ethernet_interfaces_mac ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_156_nodes_ports_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_156_nodes_ports_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_297_chassis_chassis_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_297_chassis_chassis_id_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_302_node_history_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_302_node_history_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_298_chassis_chassis_id_delete_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_298_chassis_chassis_id_delete_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_157_nodes_ports_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_157_nodes_ports_detail_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_303_node_history_get_entry_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_303_node_history_get_entry_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_158_nodes_ports_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_158_nodes_ports_detail_get_member ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3823ec5f-c19e-42e9-a1ed-af86ae0d3949 +Openstack-Request-Id: req-04891bd1-07d6-492a-94ff-7508d65daeb7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:23.729928+00:00", "updated_at": "2024-01-06T13:37:23.897510+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"}]]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3823ec5f-c19e-42e9-a1ed-af86ae0d3949 +Openstack-Request-Id: req-9335ce9a-96f5-4935-945c-804031ecd138 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:23.729928+00:00", "updated_at": "2024-01-06T13:37:23.897510+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"}]]} -API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-45ba0092-3ff1-4b97-ac0c-c1bce91b64ba +Openstack-Request-Id: req-63e61555-81ae-476b-9056-8e1909676b9b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:24.417283+00:00", "updated_at": "2024-01-06T13:37:24.633251+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"}]]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-45ba0092-3ff1-4b97-ac0c-c1bce91b64ba +Openstack-Request-Id: req-ca3ace27-e619-4f2e-8374-2de8ef063fdd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:37:24.417283+00:00", "updated_at": "2024-01-06T13:37:24.633251+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"}]]} -API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3cadb52c-1591-4797-9fb9-040539097fc0 +Openstack-Request-Id: req-8a3437d3-0d60-43cc-94db-bcbfb6f153af X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'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-3cadb52c-1591-4797-9fb9-040539097fc0 +Openstack-Request-Id: req-29840118-a16c-42c0-99a2-b9038b422b46 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GOT:Response: 204 No Content -Openstack-Request-Id: req-17d58f77-8141-404c-89ef-144a54fe921f +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'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-55e0cd99-0afb-45c0-9427-641b82768b1b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -ACL Test GOT Response: 204 No Content -Openstack-Request-Id: req-17d58f77-8141-404c-89ef-144a54fe921f +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'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-ab34e56d-2081-4292-9508-e29ea53e5e19 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e5b5e572-5344-4051-8d19-febc980d5e81 +Openstack-Request-Id: req-c095fd69-6a98-4a2a-91f0-cf6d728aa2f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_063_nodes_states_console_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_063_nodes_states_console_get_member ... ok +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps_no_skip +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps_no_skip ... ok +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps_unset_clean_step +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps_unset_clean_step ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_064_nodes_states_console_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_064_nodes_states_console_put_admin ... ok +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps ... ok +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e5b5e572-5344-4051-8d19-febc980d5e81 +Openstack-Request-Id: req-533f72b6-7982-494f-a4da-968bea0b252d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1b743910-0e4e-47b6-8d10-ef79299ffcd8 +Openstack-Request-Id: req-4b5e90bf-2f12-40ef-8106-b1166dcb2ed9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1b743910-0e4e-47b6-8d10-ef79299ffcd8 +Openstack-Request-Id: req-4b5e90bf-2f12-40ef-8106-b1166dcb2ed9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-db3f99c8-241a-43d9-95a8-47d232203389 +Openstack-Request-Id: req-fdfd273f-434c-48ac-a009-8302d04d0e75 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "73487df7-46ed-4a56-8d34-b97415925bcd", "created_at": "2024-01-06T13:37:27.435433+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/73487df7-46ed-4a56-8d34-b97415925bcd", "rel": "self"}]}]} -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_299_node_history_get_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_299_node_history_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_304_node_history_get_entry_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_304_node_history_get_entry_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_300_node_history_get_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_300_node_history_get_member ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-69fb4736-2d84-4f6f-9ce3-70b9210006a9 +Openstack-Request-Id: req-fdfd273f-434c-48ac-a009-8302d04d0e75 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-69fb4736-2d84-4f6f-9ce3-70b9210006a9 +Openstack-Request-Id: req-a30611d2-3551-40a8-bf17-4c0ce116898c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-a5e5fd7e-281f-425c-a2db-a5447b564949 +Openstack-Request-Id: req-a30611d2-3551-40a8-bf17-4c0ce116898c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a5e5fd7e-281f-425c-a2db-a5447b564949 +Openstack-Request-Id: req-a8a8324e-2f93-4855-8c2d-28d0f7549554 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ba0c09c4-74b9-49cd-8919-c9fde47be095 +Openstack-Request-Id: req-a8a8324e-2f93-4855-8c2d-28d0f7549554 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ba0c09c4-74b9-49cd-8919-c9fde47be095 +Openstack-Request-Id: req-82f04e80-ed7b-49c0-ba4e-9a74ca1934c4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3a969844-cd1f-40a6-8c68-d3863f1445ca +Openstack-Request-Id: req-82f04e80-ed7b-49c0-ba4e-9a74ca1934c4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:26.966603+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3a969844-cd1f-40a6-8c68-d3863f1445ca +Openstack-Request-Id: req-5580e32e-22e2-4bf8-8c69-958964074cb2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:26.966603+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-78c0c80d-a4ed-4b7a-8a46-c8675e956390 +Openstack-Request-Id: req-5580e32e-22e2-4bf8-8c69-958964074cb2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-78c0c80d-a4ed-4b7a-8a46-c8675e956390 +Openstack-Request-Id: req-4bcb81e1-21d2-4789-bb5d-191fbfd130f3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-223912ec-9dda-4ec2-80a9-fdb6168eee90 +Openstack-Request-Id: req-4bcb81e1-21d2-4789-bb5d-191fbfd130f3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:28.040374+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_159_nodes_ports_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_159_nodes_ports_detail_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_305_node_history_get_entry_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_305_node_history_get_entry_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_301_node_history_get_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_301_node_history_get_reader ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_001_values -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_001_values ... skipped 'These are fake reference values for YAML templating' -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_160_portgroups_ports_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_160_portgroups_ports_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_002_nodes_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_002_nodes_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_302_node_history_get_entry_admin -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_302_node_history_get_entry_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_161_portgroups_ports_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_161_portgroups_ports_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_303_node_history_get_entry_member -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_303_node_history_get_entry_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_003_nodes_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_003_nodes_post_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_162_portgroups_ports_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_162_portgroups_ports_get_observer ... ok -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_handle_ibmc_exception_retry -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_handle_ibmc_exception_retry ... ok -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info ... ok -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_304_node_history_get_entry_reader -ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_304_node_history_get_entry_reader ... ok -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_default_scheme -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_default_scheme ... ok -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_exception_success -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_exception_success ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_163_portgroups_ports_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_163_portgroups_ports_detail_get_admin ... ok -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_default_scheme_with_port -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_default_scheme_with_port ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_004_nodes_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_004_nodes_post_observer ... ok -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault ... ok -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_invalid_address -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_invalid_address ... ok -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault_debug -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault_debug ... ok -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_invalid_string_value_verify_ca -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_invalid_string_value_verify_ca ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_005_nodes_get_node_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_005_nodes_get_node_admin ... ok -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_invalid_value_verify_ca -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_invalid_value_verify_ca ... ok -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-db3f99c8-241a-43d9-95a8-47d232203389 +Openstack-Request-Id: req-2e1bf35d-306f-4077-ac4a-39bc091e9584 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "73487df7-46ed-4a56-8d34-b97415925bcd", "created_at": "2024-01-06T13:37:27.435433+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/73487df7-46ed-4a56-8d34-b97415925bcd", "rel": "self"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_058_nodes_states_provision_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_058_nodes_states_provision_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_117_owner_admin_can_send_non_masking_interrupt +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_117_owner_admin_can_send_non_masking_interrupt ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_065_nodes_states_console_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_065_nodes_states_console_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_059_nodes_states_provision_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_059_nodes_states_provision_put_member ... ok +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps_no_skip +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps_no_skip ... ok +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps_unset_deploy_step +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps_unset_deploy_step ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_118_owner_manager_can_send_non_masking_interrupt +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_118_owner_manager_can_send_non_masking_interrupt ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_066_nodes_states_console_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_066_nodes_states_console_put_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_060_nodes_states_provision_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_060_nodes_states_provision_put_reader ... ok +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_steps_exception +ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_steps_exception ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_067_nodes_vendor_passthru_methods_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_067_nodes_vendor_passthru_methods_get_admin ... ok +ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history +ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_119_lessee_admin_cannot_send_non_masking_interrupt +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_119_lessee_admin_cannot_send_non_masking_interrupt ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_061_nodes_states_raid_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_061_nodes_states_raid_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_068_nodes_vendor_passthru_methods_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_068_nodes_vendor_passthru_methods_get_member ... ok +ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_disaled +ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_disaled ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_120_lessee_manager_cannot_send_non_masking_interrupt +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_120_lessee_manager_cannot_send_non_masking_interrupt ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_062_nodes_states_raid_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_062_nodes_states_raid_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_069_nodes_vendor_passthru_methods_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_069_nodes_vendor_passthru_methods_get_observer ... ok +ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_noop +ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_noop ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_070_nodes_vendor_passthru_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_070_nodes_vendor_passthru_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_063_nodes_states_raid_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_063_nodes_states_raid_put_reader ... ok +ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_with_error_severity +ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_with_error_severity ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-228aaa3e-b623-4b85-a958-e7a4caacfed0 +Openstack-Request-Id: req-14dae15a-3db0-4a18-957d-c3dd9ed23091 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "22c14712-2167-4897-96a7-d43156f567f4", "created_at": "2024-01-06T13:37:28.047449+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/22c14712-2167-4897-96a7-d43156f567f4", "rel": "self"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-228aaa3e-b623-4b85-a958-e7a4caacfed0 +Openstack-Request-Id: req-14dae15a-3db0-4a18-957d-c3dd9ed23091 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "22c14712-2167-4897-96a7-d43156f567f4", "created_at": "2024-01-06T13:37:28.047449+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/22c14712-2167-4897-96a7-d43156f567f4", "rel": "self"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device/supported +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device/supported {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6e8b55d8-7d2c-42bc-bbf0-6791abcd9548 +Openstack-Request-Id: req-9480d73c-2c19-4068-a5a0-9bc152a65f2b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "217ede9f-c408-4395-9aa8-8b9a4e556b16", "created_at": "2024-01-06T13:37:28.645665+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/217ede9f-c408-4395-9aa8-8b9a4e556b16", "rel": "self"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6e8b55d8-7d2c-42bc-bbf0-6791abcd9548 +Openstack-Request-Id: req-9480d73c-2c19-4068-a5a0-9bc152a65f2b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "217ede9f-c408-4395-9aa8-8b9a4e556b16", "created_at": "2024-01-06T13:37:28.645665+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/217ede9f-c408-4395-9aa8-8b9a4e556b16", "rel": "self"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/29352572-da66-4a44-a3a1-64f5d491f1f9 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/29352572-da66-4a44-a3a1-64f5d491f1f9 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device/supported +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device/supported {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8e89718e-c9ac-4cbb-97a7-76b610a228bf +Openstack-Request-Id: req-f1635e8b-cb07-4f3b-b1b2-313b054987a2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "29352572-da66-4a44-a3a1-64f5d491f1f9", "created_at": "2024-01-06T13:37:29.302789+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/29352572-da66-4a44-a3a1-64f5d491f1f9", "rel": "self"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8e89718e-c9ac-4cbb-97a7-76b610a228bf +Openstack-Request-Id: req-f1635e8b-cb07-4f3b-b1b2-313b054987a2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "29352572-da66-4a44-a3a1-64f5d491f1f9", "created_at": "2024-01-06T13:37:29.302789+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/29352572-da66-4a44-a3a1-64f5d491f1f9", "rel": "self"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/223dced3-529a-4ca1-9114-0b58aa21c3e5 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/223dced3-529a-4ca1-9114-0b58aa21c3e5 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c5393cfd-fc1f-40fe-9fe0-e6a7349dd888 +Openstack-Request-Id: req-ef802cfb-8ad1-474c-9c36-10bfcbf6976c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "223dced3-529a-4ca1-9114-0b58aa21c3e5", "created_at": "2024-01-06T13:37:30.132654+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/223dced3-529a-4ca1-9114-0b58aa21c3e5", "rel": "self"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c5393cfd-fc1f-40fe-9fe0-e6a7349dd888 +Openstack-Request-Id: req-ef802cfb-8ad1-474c-9c36-10bfcbf6976c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "223dced3-529a-4ca1-9114-0b58aa21c3e5", "created_at": "2024-01-06T13:37:30.132654+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/223dced3-529a-4ca1-9114-0b58aa21c3e5", "rel": "self"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4647e042-bb66-45ff-8879-4cb412a07c6b -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4647e042-bb66-45ff-8879-4cb412a07c6b {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/inject_nmi +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/inject_nmi {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d5e9ebab-283d-4155-b26a-a086ef12c54c +Openstack-Request-Id: req-fc15a6e4-a934-48e4-aac7-95a0a8583022 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "4647e042-bb66-45ff-8879-4cb412a07c6b", "created_at": "2024-01-06T13:37:30.697187+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/4647e042-bb66-45ff-8879-4cb412a07c6b", "rel": "self"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d5e9ebab-283d-4155-b26a-a086ef12c54c +Openstack-Request-Id: req-fc15a6e4-a934-48e4-aac7-95a0a8583022 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "4647e042-bb66-45ff-8879-4cb412a07c6b", "created_at": "2024-01-06T13:37:30.697187+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/4647e042-bb66-45ff-8879-4cb412a07c6b", "rel": "self"}]} -GET: / {} -GOT:Response: 500 Internal Server Error -Content-Type: application/json -Openstack-Request-Id: req-683fbf1e-57fb-4595-93e5-73d62254912f -{"error_message": "{\"faultcode\":\"Server\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} -GET: / {} -GOT:Response: 400 Bad Request +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/inject_nmi +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/inject_nmi {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3fbadb43-675c-4660-b111-a987d52ffb2c -{"error_message": "{\"faultcode\":\"Client\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} -GET: / {} -GOT:Response: 400 Bad Request +Openstack-Request-Id: req-838a61e6-794b-43e1-aaac-9eb46aa9cb1b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-a8d54f72-69c3-4d54-9b03-bb6a1f011c7d -{"error_message": "{\"faultcode\":\"Client\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault_debug_tracebacks -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault_debug_tracebacks ... ok -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault ... ok -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault_debug -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault_debug ... ok -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_missing_info -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_missing_info ... ok -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault_debug_tracebacks -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault_debug_tracebacks ... ok -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_path_verify_ca -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_path_verify_ca ... ok -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_valid_capath -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_valid_capath ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_006_nodes_get_node_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_006_nodes_get_node_member ... ok -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_remote_error_success -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_remote_error_success ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_164_portgroups_ports_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_164_portgroups_ports_detail_get_member ... ok -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_valid_string_value_verify_ca -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_valid_string_value_verify_ca ... ok -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_revert_dictionary -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_revert_dictionary ... ok -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_007_nodes_get_node_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_007_nodes_get_node_observer ... ok -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback_debug -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback_debug ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_error_cleaning -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_error_cleaning ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_165_portgroups_ports_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_165_portgroups_ports_detail_get_observer ... ok -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback_debug_tracebacks -ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback_debug_tracebacks ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_008_nodes_get_node_other_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_008_nodes_get_node_other_admin ... ok -ironic.tests.unit.api.test_hooks.TestPublicUrlHook.test_before_host_url -ironic.tests.unit.api.test_hooks.TestPublicUrlHook.test_before_host_url ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_error_deploying -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_error_deploying ... ok -ironic.tests.unit.api.test_hooks.TestPublicUrlHook.test_before_public_endpoint -ironic.tests.unit.api.test_hooks.TestPublicUrlHook.test_before_public_endpoint ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_166_volume_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_166_volume_get_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_failed_cleaning -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_failed_cleaning ... ok -ironic.tests.unit.api.test_ospmiddleware.TestOsprofilerWsgiMiddleware.test_disable_osp_wsgi_request -ironic.tests.unit.api.test_ospmiddleware.TestOsprofilerWsgiMiddleware.test_disable_osp_wsgi_request ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_009_nodes_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_009_nodes_get_admin ... ok -ironic.tests.unit.api.test_ospmiddleware.TestOsprofilerWsgiMiddleware.test_enable_osp_wsgi_request -ironic.tests.unit.api.test_ospmiddleware.TestOsprofilerWsgiMiddleware.test_enable_osp_wsgi_request ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_failed_deploying -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_failed_deploying ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_167_volume_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_167_volume_get_member ... ok -ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_defaults -ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_defaults ... ok -ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_produces_a_warning -ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_produces_a_warning ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_apply_configuration -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_apply_configuration ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_010_nodes_get_other_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_010_nodes_get_other_admin ... ok -ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_random_no_zeros -ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_random_no_zeros ... ok -ACL Test GOT Response: 200 OK +Openstack-Request-Id: req-838a61e6-794b-43e1-aaac-9eb46aa9cb1b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/inject_nmi +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/inject_nmi {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-223912ec-9dda-4ec2-80a9-fdb6168eee90 +Openstack-Request-Id: req-475c0e05-20f1-4a5d-a881-0921b043538b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:28.040374+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d1102af0-3560-4f79-8daa-1e5cde7a95f7 +Openstack-Request-Id: req-475c0e05-20f1-4a5d-a881-0921b043538b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/inject_nmi +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/inject_nmi {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d1102af0-3560-4f79-8daa-1e5cde7a95f7 +Openstack-Request-Id: req-8e6ae40e-ae71-48ca-888a-3b845f3f2964 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-12771b9c-4f38-476c-a122-4d6f3ef2448c +Openstack-Request-Id: req-8e6ae40e-ae71-48ca-888a-3b845f3f2964 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_121_third_party_admin_cannot_send_non_masking_interrupt +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_121_third_party_admin_cannot_send_non_masking_interrupt ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_122_owner_reader_get_states +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_122_owner_reader_get_states ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_071_nodes_vendor_passthru_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_071_nodes_vendor_passthru_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_064_nodes_states_console_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_064_nodes_states_console_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_072_nodes_vendor_passthru_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_072_nodes_vendor_passthru_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_123_lessee_reader_get_states +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_123_lessee_reader_get_states ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_065_nodes_states_console_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_065_nodes_states_console_get_member ... ok +ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_with_user +ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_with_user ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_073_nodes_vendor_passthru_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_073_nodes_vendor_passthru_post_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_124_third_part_admin_cannot_get_states +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_124_third_part_admin_cannot_get_states ... ok +ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios +ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_074_nodes_vendor_passthru_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_074_nodes_vendor_passthru_post_member ... ok +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-12771b9c-4f38-476c-a122-4d6f3ef2448c +Openstack-Request-Id: req-2e1bf35d-306f-4077-ac4a-39bc091e9584 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1a3d230a-b4ca-4b0d-8e2c-8d86896bc2f8 +Openstack-Request-Id: req-b966a03b-c525-44c8-9d1d-079ed20fe376 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1a3d230a-b4ca-4b0d-8e2c-8d86896bc2f8 +Openstack-Request-Id: req-b966a03b-c525-44c8-9d1d-079ed20fe376 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-35c3587f-a5e9-47e3-90fa-e8409c777b67 +Openstack-Request-Id: req-75791672-9565-4daa-bbfb-36e04ed6432d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-35c3587f-a5e9-47e3-90fa-e8409c777b67 +Openstack-Request-Id: req-75791672-9565-4daa-bbfb-36e04ed6432d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'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-58082c93-a56e-43e8-8035-6a8e635e807c +Openstack-Request-Id: req-2305d495-50b1-4a38-87f1-8ad8845b321a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-58082c93-a56e-43e8-8035-6a8e635e807c +Openstack-Request-Id: req-2305d495-50b1-4a38-87f1-8ad8845b321a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'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-b1e5810d-8691-4c4e-bbf3-d6be497f9658 +Openstack-Request-Id: req-84b6ac1f-b910-4f21-9a28-0430ac6680f0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b1e5810d-8691-4c4e-bbf3-d6be497f9658 +Openstack-Request-Id: req-84b6ac1f-b910-4f21-9a28-0430ac6680f0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/volume -GET: /v1/volume {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'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-52544d42-0c43-49a4-880b-74272d31348e +Openstack-Request-Id: req-647f4fd4-dd99-443a-a628-b4a1760caa1d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-52544d42-0c43-49a4-880b-74272d31348e +Openstack-Request-Id: req-647f4fd4-dd99-443a-a628-b4a1760caa1d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/volume -GET: /v1/volume {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-257884a5-1962-4d37-9a33-37536888bc6b +Openstack-Request-Id: req-4e20225d-d551-40fe-901c-10a829b8716d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-257884a5-1962-4d37-9a33-37536888bc6b +Openstack-Request-Id: req-4e20225d-d551-40fe-901c-10a829b8716d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume -GET: /v1/volume {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_168_volume_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_168_volume_get_observer ... ok -ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_zeros -ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_zeros ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_factory_reset -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_factory_reset ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_and -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_and ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_boolean -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_boolean ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_169_volume_connectors_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_169_volume_connectors_get_admin ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-d1ed017e-3286-4030-8f96-7cab73e80d77 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-d1ed017e-3286-4030-8f96-7cab73e80d77 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-82ccd1c9-66b7-4be4-891a-c1e3a5e710ec +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_066_nodes_states_console_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_066_nodes_states_console_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_125_owner_admin_can_put_power_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_125_owner_admin_can_put_power_state_change ... ok +ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios_exception +ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios_exception ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_075_nodes_vendor_passthru_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_075_nodes_vendor_passthru_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_067_nodes_states_console_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_067_nodes_states_console_put_member ... ok +ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios_unsupported +ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios_unsupported ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_126_owner_manager_can_put_power_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_126_owner_manager_can_put_power_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_076_nodes_vendor_passthru_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_076_nodes_vendor_passthru_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_068_nodes_states_console_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_068_nodes_states_console_put_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_127_lessee_admin_can_put_power_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_127_lessee_admin_can_put_power_state_change ... ok +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9d0ea451-bfc0-4b10-97d5-bcb10a65971f +Openstack-Request-Id: req-5a810ff4-5ec7-4d29-8f03-026b10f8512b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e60ab8b6-0fa9-4bd3-a0d7-e02ff0c9bfa4 +Openstack-Request-Id: req-e5146faf-d58f-44a7-9aa4-04d64e9c1c43 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9cee57ab-3070-4e90-8359-210c75e8934a +Openstack-Request-Id: req-902964a4-347f-4656-a96c-1431523daea4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/3cd224fc-2797-47ac-88b4-09e58abf47f2 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/3cd224fc-2797-47ac-88b4-09e58abf47f2 {} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-187c7cdb-61b4-4d9c-aed2-e134b4530207 +Openstack-Request-Id: req-18601489-fbfe-45ac-a986-c07998684970 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/67f57035-5693-454c-9555-7d55bbae536e -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/67f57035-5693-454c-9555-7d55bbae536e {} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-44e3cd76-f1b0-42ad-bd83-c3543a48d5a8 +Openstack-Request-Id: req-3c1f3c83-376b-4bab-a950-7f7eb1a9f6cb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/3be385f3-bdef-421b-ab8e-3d9623f96ade -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/3be385f3-bdef-421b-ab8e-3d9623f96ade {} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8c1a6163-48c0-4242-838d-cb8ede8df8f3 +Openstack-Request-Id: req-98e8f720-c25c-4251-970e-6058dcf3e858 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 403 Forbidden +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c3ec9821-69f6-427e-8ff1-4fd74a838df6 +Openstack-Request-Id: req-2762a60a-8bc2-4706-ac82-0c6a315cfc6d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-33fb838e-fb35-4675-9eb3-617043145947 +Openstack-Request-Id: req-c315acf8-5ad5-4269-b332-dadaa2398542 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-03edd0f7-93b3-4033-bfc1-82faccd7877a +Openstack-Request-Id: req-bcc6a7a5-4091-4ef6-ae46-5501cdeb0ce5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e140d10a-dd6f-4e32-ae94-a94707469c36 +Openstack-Request-Id: req-0eef5a7c-5113-46b6-9fbd-ffc36ad38061 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ed48d403-caea-4e9b-8aec-aaf404ea6ddd +Openstack-Request-Id: req-835891c8-94a4-44b4-aa84-29198faea4a4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a1a869f7-45de-46cd-96b8-9154fffb94b7 +Openstack-Request-Id: req-ec221909-bbe0-4ac1-83a0-2b6064c0a272 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d5d2b0ad-a006-410b-9347-c2b59865f205 +Openstack-Request-Id: req-32a142c8-105c-4ba7-a60d-91d9206f88e8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} -GOT:Response: 403 Forbidden +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-790cef50-f873-4954-b25e-3a3bd89d4f03 +Openstack-Request-Id: req-6bbd106d-855c-456f-bcd8-72c626e3a744 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_077_nodes_vendor_passthru_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_077_nodes_vendor_passthru_put_member ... ok +ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify +ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_078_nodes_vendor_passthru_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_078_nodes_vendor_passthru_put_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_069_nodes_vendor_passthru_methods_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_069_nodes_vendor_passthru_methods_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_128_lessee_manager_can_put_power_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_128_lessee_manager_can_put_power_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_070_nodes_vendor_passthru_methods_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_070_nodes_vendor_passthru_methods_get_member ... ok +ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify_get_state_fails +ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify_get_state_fails ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9913f148-9fcd-4b2a-a18d-7b40626c9645 +Openstack-Request-Id: req-51476523-de6c-4f43-8c86-9ed87b4ecd4a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9913f148-9fcd-4b2a-a18d-7b40626c9645 +Openstack-Request-Id: req-51476523-de6c-4f43-8c86-9ed87b4ecd4a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": []} -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_011_nodes_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_011_nodes_detail_get_admin ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_args -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_args ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_iloobj_failed_cleaning -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_iloobj_failed_cleaning ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_args_kwargs -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_args_kwargs ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_function -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_function ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_iloobj_failed_deploy -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_iloobj_failed_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_012_nodes_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_012_nodes_detail_get_member ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_kwargs -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_kwargs ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_170_volume_connectors_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_170_volume_connectors_get_member ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_integer -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_integer ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mac_address -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mac_address ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_invalid_cleaning -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_invalid_cleaning ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mandatory -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mandatory ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_013_nodes_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_013_nodes_detail_get_observer ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mixed_unvalidated -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mixed_unvalidated ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_name -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_name ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_171_volume_connectors_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_171_volume_connectors_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_invalid_deploy -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_invalid_deploy ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_or -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_or ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_string -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_string ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_014_nodes_node_ident_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_014_nodes_node_ident_get_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_conf_cleaning -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_conf_cleaning ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_string_list -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_string_list ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_172_volume_connectors_post_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_172_volume_connectors_post_admin ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_unexpected_args -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_unexpected_args ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_conf_deploying -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_conf_deploying ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_uuid -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_uuid ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_015_nodes_node_ident_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_015_nodes_node_ident_get_member ... ok -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_uuid_or_name -ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_uuid_or_name ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_configuration -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_configuration ... ok -ironic.tests.unit.common.test_args.ValidateDictTest.test_dict_valid -ironic.tests.unit.common.test_args.ValidateDictTest.test_dict_valid ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_173_volume_connectors_post_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_173_volume_connectors_post_member ... ok -ironic.tests.unit.common.test_args.ValidateDictTest.test_dict_valid_colon_key_name -ironic.tests.unit.common.test_args.ValidateDictTest.test_dict_valid_colon_key_name ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_016_nodes_node_ident_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_016_nodes_node_ident_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_factory_reset_cleaning -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_factory_reset_cleaning ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_factory_reset_deploying -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_factory_reset_deploying ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-cad0c126-d367-4d9b-a4c8-ae5324eba031 +Openstack-Request-Id: req-eebd8ffb-391f-4f0f-b41e-c814a4f35ccb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"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} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-cad0c126-d367-4d9b-a4c8-ae5324eba031 +Openstack-Request-Id: req-eebd8ffb-391f-4f0f-b41e-c814a4f35ccb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} +{"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} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-25287c71-95cd-4329-a7be-2b73739db493 +Openstack-Request-Id: req-8c072d27-07d5-4266-b5e9-0ff55e69fa52 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"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} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-25287c71-95cd-4329-a7be-2b73739db493 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-42a8cb43-4dac-4b87-96a7-9aea51195029 +Openstack-Request-Id: req-8c072d27-07d5-4266-b5e9-0ff55e69fa52 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"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} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-42a8cb43-4dac-4b87-96a7-9aea51195029 +Openstack-Request-Id: req-4946d661-25d0-4029-8408-9d4e2e62d742 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-298b2441-a234-4e44-ae57-adaf594144ec +Openstack-Request-Id: req-4946d661-25d0-4029-8408-9d4e2e62d742 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power {'target': 'power on'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-298b2441-a234-4e44-ae57-adaf594144ec +Openstack-Request-Id: req-7c379220-a46f-4ecd-9082-3299ee62e2ae X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Location: http://localhost/v1/volume/connectors/6ef8f1d4-18af-49f3-ac87-bd422e1780f8 -Openstack-Request-Id: req-9398b1f3-4afb-4ec7-8a0a-0f2d8600703c +Openstack-Request-Id: req-7c379220-a46f-4ecd-9082-3299ee62e2ae X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6ef8f1d4-18af-49f3-ac87-bd422e1780f8", "created_at": "2024-01-06T13:37:38.871018+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/6ef8f1d4-18af-49f3-ac87-bd422e1780f8", "rel": "self"}, {"href": "http://localhost/volume/connectors/6ef8f1d4-18af-49f3-ac87-bd422e1780f8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -ACL Test GOT Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power {'target': 'power on'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Location: http://localhost/v1/volume/connectors/6ef8f1d4-18af-49f3-ac87-bd422e1780f8 -Openstack-Request-Id: req-9398b1f3-4afb-4ec7-8a0a-0f2d8600703c +Openstack-Request-Id: req-846b4de1-e3f4-4ec6-ad69-714b0a839afd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6ef8f1d4-18af-49f3-ac87-bd422e1780f8", "created_at": "2024-01-06T13:37:38.871018+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/6ef8f1d4-18af-49f3-ac87-bd422e1780f8", "rel": "self"}, {"href": "http://localhost/volume/connectors/6ef8f1d4-18af-49f3-ac87-bd422e1780f8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b3310176-59b9-4d84-8c13-d5f78694f26b +Openstack-Request-Id: req-846b4de1-e3f4-4ec6-ad69-714b0a839afd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power {'target': 'power on'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b3310176-59b9-4d84-8c13-d5f78694f26b +Openstack-Request-Id: req-8419d6bd-d9dc-4269-8440-c52c654032a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_174_volume_connectors_post_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_174_volume_connectors_post_observer ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_attach_record_failure -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_attach_record_failure ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_017_nodes_node_ident_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_017_nodes_node_ident_patch_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_iloobj_failed_cleaning -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_iloobj_failed_cleaning ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_attach_set_meta_failure -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_attach_set_meta_failure ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_175_volume_volume_connector_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_175_volume_volume_connector_id_get_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_iloobj_failed_deploying -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_iloobj_failed_deploying ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_018_nodes_node_ident_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_018_nodes_node_ident_patch_member ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_client_init_failure -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_client_init_failure ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_invalid_cleaning -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_invalid_cleaning ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_176_volume_volume_connector_id_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_176_volume_volume_connector_id_get_member ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_initialize_connection_failure -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_initialize_connection_failure ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_invalid_deploying -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_invalid_deploying ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_019_nodes_node_ident_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_019_nodes_node_ident_patch_observer ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_one_attached -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_one_attached ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_reset_bios_failed_cleaning -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_reset_bios_failed_cleaning ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_177_volume_volume_connector_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_177_volume_volume_connector_id_get_observer ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_reserve_failure -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_reserve_failure ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_reset_bios_failed_deploying -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_reset_bios_failed_deploying ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_vol_not_found -ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_vol_not_found ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_set_bios_failed_cleaning -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_set_bios_failed_cleaning ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_178_volume_volume_connector_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_178_volume_volume_connector_id_patch_admin ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_set_bios_failed_deploying -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_set_bios_failed_deploying ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_begin_detaching_failure -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_begin_detaching_failure ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_020_nodes_node_ident_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_020_nodes_node_ident_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_179_volume_volume_connector_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_179_volume_volume_connector_id_patch_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_apply_configuration_post_boot -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_apply_configuration_post_boot ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_apply_configuration_pre_boot -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_apply_configuration_pre_boot ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_021_nodes_node_ident_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_021_nodes_node_ident_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_180_volume_volume_connector_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_180_volume_volume_connector_id_patch_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_invalid_parameter -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_invalid_parameter ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_client_init_failure_bad_request -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_client_init_failure_bad_request ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_022_nodes_node_ident_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_022_nodes_node_ident_delete_observer ... ok -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-71407c16-2dd3-49d2-ae3c-6b59a64d7383 +Openstack-Request-Id: req-8419d6bd-d9dc-4269-8440-c52c654032a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power {'target': 'power on'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-71407c16-2dd3-49d2-ae3c-6b59a64d7383 +Openstack-Request-Id: req-355cd09d-682d-49b6-bce1-290e4c7e9ac5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b4748d3e-8bf5-4d81-ba5a-b005b3eef275 +Openstack-Request-Id: req-355cd09d-682d-49b6-bce1-290e4c7e9ac5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:40.892250+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"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_129_owner_member_can_put_power_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_129_owner_member_can_put_power_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_071_nodes_vendor_passthru_methods_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_071_nodes_vendor_passthru_methods_get_reader ... ok +ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify_validation_fails +ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify_validation_fails ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_079_nodes_vendor_passthru_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_079_nodes_vendor_passthru_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_130_lessee_member_can_put_power_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_130_lessee_member_can_put_power_state_change ... ok +ironic.tests.unit.conf.test_auth.AuthConfTestCase.test_add_auth_opts +ironic.tests.unit.conf.test_auth.AuthConfTestCase.test_add_auth_opts ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_080_nodes_vendor_passthru_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_080_nodes_vendor_passthru_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_072_nodes_vendor_passthru_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_072_nodes_vendor_passthru_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_131_owner_reader_cannot_put_power_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_131_owner_reader_cannot_put_power_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_081_nodes_vendor_passthru_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_081_nodes_vendor_passthru_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_073_nodes_vendor_passthru_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_073_nodes_vendor_passthru_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_132_lessee_reader_cannot_put_power_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_132_lessee_reader_cannot_put_power_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_082_nodes_traits_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_082_nodes_traits_get_admin ... ok +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b4748d3e-8bf5-4d81-ba5a-b005b3eef275 +Openstack-Request-Id: req-82ccd1c9-66b7-4be4-891a-c1e3a5e710ec X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:40.892250+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"} -API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ea432e35-bf7e-4ef5-8b16-e7eb61b53a8b +Openstack-Request-Id: req-ef03156e-b1dc-4015-b731-9f35e28aca0d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ea432e35-bf7e-4ef5-8b16-e7eb61b53a8b +Openstack-Request-Id: req-ef03156e-b1dc-4015-b731-9f35e28aca0d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-78afeeff-1da5-4a1f-802b-43c7d589de70 +Openstack-Request-Id: req-84cde820-acd4-44ea-83dc-c0e124bae51b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:42.312890+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"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-78afeeff-1da5-4a1f-802b-43c7d589de70 +Openstack-Request-Id: req-84cde820-acd4-44ea-83dc-c0e124bae51b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:42.312890+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"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-469821a4-d440-4b20-adc4-05914265d09c +Openstack-Request-Id: req-f96b1656-9388-473e-8688-5679ffb3ea89 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-469821a4-d440-4b20-adc4-05914265d09c +Openstack-Request-Id: req-f96b1656-9388-473e-8688-5679ffb3ea89 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d5a1e382-2a7a-4be2-9aed-041a4cda543a +Openstack-Request-Id: req-922f9472-0d9c-4526-bb41-4ca7e252a34f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d5a1e382-2a7a-4be2-9aed-041a4cda543a +Openstack-Request-Id: req-922f9472-0d9c-4526-bb41-4ca7e252a34f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9f571e40-14d0-4f6f-88db-5ca9999bb538 +Openstack-Request-Id: req-1ea65d26-f082-4799-bb9e-e1e290c45e7f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9f571e40-14d0-4f6f-88db-5ca9999bb538 +Openstack-Request-Id: req-1ea65d26-f082-4799-bb9e-e1e290c45e7f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_181_volume_volume_connector_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_181_volume_volume_connector_id_delete_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_missing_parameter -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_missing_parameter ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_with_ilo_error -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_with_ilo_error ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_client_init_failure_invalid_parameter_value -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_client_init_failure_invalid_parameter_value ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_182_volume_volume_connector_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_182_volume_volume_connector_id_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_023_nodes_validate_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_023_nodes_validate_get_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_with_unknown_error -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_with_unknown_error ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_failure_errors_allowed -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_failure_errors_allowed ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_get_properties -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_get_properties ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_183_volume_volume_connector_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_183_volume_volume_connector_id_delete_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_024_nodes_validate_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_024_nodes_validate_get_member ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_failure_errors_not_allowed -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_failure_errors_not_allowed ... ok -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_validate -ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_validate ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_bootloader_none -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_bootloader_none ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_meta_failure_errors_not_allowed -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_meta_failure_errors_not_allowed ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_184_volume_targets_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_184_volume_targets_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_025_nodes_validate_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_025_nodes_validate_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_config -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_config ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_one_detached -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_one_detached ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_185_volume_targets_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_185_volume_targets_get_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_deprecated -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_deprecated ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_term_failure -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_term_failure ... ok -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0adfd5ee-3596-483c-9c8f-96354a886d3a +Openstack-Request-Id: req-b068d54b-0033-40b5-8400-41bf4957d1d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0f4e82a0-d0f6-4d5b-bd72-060524963190 +Openstack-Request-Id: req-b068d54b-0033-40b5-8400-41bf4957d1d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a3622662-2602-409c-9c4b-cca684843dac +Openstack-Request-Id: req-c353d97b-f567-4404-bc12-92974aa3d03d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ac53fdb1-1fe1-4a4b-9780-a70f73f403bd +Openstack-Request-Id: req-c353d97b-f567-4404-bc12-92974aa3d03d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-cc7b85a7-e94a-40d0-8498-f5c589e45e28 +Openstack-Request-Id: req-264dfd00-1f85-4ed2-ae33-420dcceab918 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_074_nodes_vendor_passthru_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_074_nodes_vendor_passthru_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_083_nodes_traits_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_083_nodes_traits_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_133_third_party_admin_cannot_put_power_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_133_third_party_admin_cannot_put_power_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_075_nodes_vendor_passthru_post_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_075_nodes_vendor_passthru_post_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_084_nodes_traits_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_084_nodes_traits_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_134_owner_admin_can_put_boot_mode_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_134_owner_admin_can_put_boot_mode_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_076_nodes_vendor_passthru_post_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_076_nodes_vendor_passthru_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_085_nodes_traits_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_085_nodes_traits_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_135_owner_manager_can_put_boot_mode_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_135_owner_manager_can_put_boot_mode_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_077_nodes_vendor_passthru_post_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_077_nodes_vendor_passthru_post_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_086_nodes_traits_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_086_nodes_traits_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_136_lessee_admin_can_put_boot_mode_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_136_lessee_admin_can_put_boot_mode_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_078_nodes_vendor_passthru_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_078_nodes_vendor_passthru_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_087_nodes_traits_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_087_nodes_traits_put_observer ... ok +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power {'target': 'power on'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-755cc9ce-a80d-42d2-8526-136952bf6a2a +Openstack-Request-Id: req-4bf9fd1f-1d0a-47ad-917e-322ce03f2b46 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e5888f52-097e-4717-991a-3d93ba2d63f4 +Openstack-Request-Id: req-4bf9fd1f-1d0a-47ad-917e-322ce03f2b46 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power {'target': 'power on'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-530dd94d-2678-42fb-b2ea-eeb2d80bca5b +Openstack-Request-Id: req-8974b8b9-eb81-4b7b-8ac4-5ebe514e53c4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -PATCH: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-97f01906-36de-49a7-bb9c-04c15b849430 +Openstack-Request-Id: req-8974b8b9-eb81-4b7b-8ac4-5ebe514e53c4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power {'target': 'power on'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d33e3b00-7b9b-4bcb-9d14-f4358f78dd1c +Openstack-Request-Id: req-86991aa4-afab-4f8e-bc09-93742bf038f8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d5273153-38c0-4448-8cab-fe20c74def4d +Openstack-Request-Id: req-86991aa4-afab-4f8e-bc09-93742bf038f8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power {'target': 'power on'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c71c4fe3-775a-4561-a272-20d9328f316e +Openstack-Request-Id: req-5fa9d978-359f-4897-a849-2ee7bed6e11a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-61dac2cf-3c85-458f-ab54-4093c33e2d6b +Openstack-Request-Id: req-5fa9d978-359f-4897-a849-2ee7bed6e11a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-0a408ad2-14f8-4e78-b1d1-85462bc5d712 +Openstack-Request-Id: req-b2790375-c41e-4c26-9a03-01a73856b681 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate {} -GOT:Response: 404 Not Found +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7e9d3132-ff48-442d-80e1-3a5ed0137d31 +Openstack-Request-Id: req-b2790375-c41e-4c26-9a03-01a73856b681 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_026_nodes_maintenance_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_026_nodes_maintenance_put_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_iso -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_iso ... ok -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_vol_not_found -ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_vol_not_found ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_iso_deprecated -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_iso_deprecated ... ok -ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_duplicated_entry -ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_duplicated_entry ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_186_volume_targets_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_186_volume_targets_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_exc -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_exc ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_027_nodes_maintenance_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_027_nodes_maintenance_put_member ... ok -ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_empty_entry -ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_empty_entry ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue ... ok -ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_init_checks_unsupported -ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_init_checks_unsupported ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue_config -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue_config ... ok -ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_load_error_if_driver_enabled -ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_load_error_if_driver_enabled ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue_iso -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue_iso ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_028_nodes_maintenance_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_028_nodes_maintenance_put_observer ... ok -API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode {'target': 'uefi'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ff28c2f9-585d-4e86-bc91-374b013c1293 +Openstack-Request-Id: req-ba14cf77-d29d-428a-b483-e8c90f0feb89 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ff28c2f9-585d-4e86-bc91-374b013c1293 +Openstack-Request-Id: req-ba14cf77-d29d-428a-b483-e8c90f0feb89 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode {'target': 'uefi'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-03dfb894-44da-446a-9bc7-1b8573764426 +Openstack-Request-Id: req-c4185eff-e3f5-4f2d-829b-f5b73e607472 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-03dfb894-44da-446a-9bc7-1b8573764426 +Openstack-Request-Id: req-c4185eff-e3f5-4f2d-829b-f5b73e607472 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode {'target': 'uefi'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ae557e96-a300-4584-95cc-cd05295ad56e +Openstack-Request-Id: req-60aa2199-1247-45b6-8361-cb740ce60be3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ae557e96-a300-4584-95cc-cd05295ad56e +Openstack-Request-Id: req-60aa2199-1247-45b6-8361-cb740ce60be3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets -GET: /v1/volume/targets {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode {'target': 'uefi'} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_137_lessee_manager_can_put_boot_mode_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_137_lessee_manager_can_put_boot_mode_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_088_nodes_traits_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_088_nodes_traits_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_079_nodes_vendor_passthru_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_079_nodes_vendor_passthru_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_138_owner_member_can_put_boot_mode_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_138_owner_member_can_put_boot_mode_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_089_nodes_traits_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_089_nodes_traits_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_080_nodes_vendor_passthru_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_080_nodes_vendor_passthru_put_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_139_lessee_member_can_put_boot_mode_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_139_lessee_member_can_put_boot_mode_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_090_nodes_traits_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_090_nodes_traits_delete_observer ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_create_schema_and_version +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_create_schema_and_version ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_081_nodes_vendor_passthru_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_081_nodes_vendor_passthru_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_140_owner_reader_cannot_put_boot_mode_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_140_owner_reader_cannot_put_boot_mode_state_change ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_upgrade_and_create_schema +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_upgrade_and_create_schema ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_upgrade_and_version +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_upgrade_and_version ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-24ee8771-784d-415a-924e-52db038b1c55 +Openstack-Request-Id: req-0b0cb182-ce20-49fd-bf1a-360abf99da49 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-24ee8771-784d-415a-924e-52db038b1c55 +Openstack-Request-Id: req-deceaa31-f7ad-45d7-949e-19e91ae112dc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/volume/targets -GET: /v1/volume/targets {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +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-34d668b1-9050-462d-9d9a-e79bd3f6d117 +Openstack-Request-Id: req-3802efba-fe0a-4d94-a0ed-ff04c9a0f94a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +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-34d668b1-9050-462d-9d9a-e79bd3f6d117 +Openstack-Request-Id: req-1e4f1536-20a1-480f-a956-7fc777b84c0b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets -GET: /v1/volume/targets {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +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-a966c2ba-f0c6-4636-bfa1-052d9379a327 +Openstack-Request-Id: req-fe7d1883-b24d-458a-8409-12fbb9e2020c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a966c2ba-f0c6-4636-bfa1-052d9379a327 +Openstack-Request-Id: req-3dfb1721-53f6-4f28-a312-57df7fde366b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path post /v1/volume/targets -POST: /v1/volume/targets {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/volume/targets/d7bfd4c5-972c-469d-b363-62479586c98c -Openstack-Request-Id: req-1afe8c97-e010-4941-b0ac-67473b900677 +Openstack-Request-Id: req-cdc88bbd-2e5b-4738-b5ab-bcb7a8ab3ee7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "d7bfd4c5-972c-469d-b363-62479586c98c", "created_at": "2024-01-06T13:37:49.129747+00:00", "updated_at": null, "boot_index": 4, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/d7bfd4c5-972c-469d-b363-62479586c98c", "rel": "self"}, {"href": "http://localhost/volume/targets/d7bfd4c5-972c-469d-b363-62479586c98c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_187_volume_targets_post_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_187_volume_targets_post_admin ... ok -ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_no_driver_load_error_if_driver_disabled -ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_no_driver_load_error_if_driver_disabled ... ok -ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_wrap_in_driver_load_error_if_driver_enabled -ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_wrap_in_driver_load_error_if_driver_enabled ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_ca_file_and_snmp_inspection_true -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_ca_file_and_snmp_inspection_true ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_cafile -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_cafile ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_bad_default -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_bad_default ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_029_nodes_maintenance_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_029_nodes_maintenance_delete_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_multiple_params -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_multiple_params ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_188_volume_targets_post_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_188_volume_targets_post_member ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_calculated_defaults -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_calculated_defaults ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_port -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_port ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_configured_defaults -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_configured_defaults ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_timeout -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_timeout ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_fake -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_fake ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_030_nodes_maintenance_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_030_nodes_maintenance_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_189_volume_targets_post_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_189_volume_targets_post_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_value_verify_ca -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_value_verify_ca ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_address -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_address ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_fallback_defaults -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_fallback_defaults ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_multiple_params -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_multiple_params ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_incorrect -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_incorrect ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_031_nodes_maintenance_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_031_nodes_maintenance_delete_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_password -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_password ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_190_volume_volume_target_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_190_volume_volume_target_id_get_admin ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_instance_info_override -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_instance_info_override ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_username -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_username ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_not_fake -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_not_fake ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_path_verify_ca_dir -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_path_verify_ca_dir ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_032_nodes_management_boot_device_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_032_nodes_management_boot_device_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_191_volume_volume_target_id_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_191_volume_volume_target_id_get_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_path_verify_ca_file -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_path_verify_ca_file ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_enabled_supported_interfaces -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_enabled_supported_interfaces ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_inspection_false -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_inspection_false ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_enabled_supported_interfaces_non_default -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_enabled_supported_interfaces_non_default ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_inspection_true_raises -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_inspection_true_raises ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_033_nodes_management_boot_device_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_033_nodes_management_boot_device_put_member ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_get_hardware_type_existing -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_get_hardware_type_existing ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_192_volume_volume_target_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_192_volume_volume_target_id_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_integer_auth_protocol -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_integer_auth_protocol ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_get_hardware_type_missing -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_get_hardware_type_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_invalid_auth_protocol -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_invalid_auth_protocol ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_invalid_rescue_interface -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_invalid_rescue_interface ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_034_nodes_management_boot_device_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_034_nodes_management_boot_device_put_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_invalid_priv_protocol -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_invalid_priv_protocol ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_invalid_storage_interface -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_invalid_storage_interface ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_no_auth_priv_protocols -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_no_auth_priv_protocols ... ok -ACL Test GOT Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +GOT:Response: 404 Not Found Content-Type: application/json -Location: http://localhost/v1/volume/targets/d7bfd4c5-972c-469d-b363-62479586c98c -Openstack-Request-Id: req-1afe8c97-e010-4941-b0ac-67473b900677 +Openstack-Request-Id: req-d980f3c5-7893-401a-a198-30c58892bd8c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "d7bfd4c5-972c-469d-b363-62479586c98c", "created_at": "2024-01-06T13:37:49.129747+00:00", "updated_at": null, "boot_index": 4, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/d7bfd4c5-972c-469d-b363-62479586c98c", "rel": "self"}, {"href": "http://localhost/volume/targets/d7bfd4c5-972c-469d-b363-62479586c98c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} -API ACL Testing Path post /v1/volume/targets -POST: /v1/volume/targets {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-903a16ba-5abf-4cb2-92d2-49847630325f +Openstack-Request-Id: req-d627f831-1255-47c4-8305-d49fd0b60b5a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-903a16ba-5abf-4cb2-92d2-49847630325f +Openstack-Request-Id: req-0a11b7c1-6e59-4240-8196-bfb8acea7831 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/targets -POST: /v1/volume/targets {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c71145ed-7939-4810-9eb1-8ab01998fd2a +Openstack-Request-Id: req-b82bebe8-af58-4b91-9f6d-3f1a7562e3f0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c71145ed-7939-4810-9eb1-8ab01998fd2a +Openstack-Request-Id: req-c8631a09-5421-465c-9e68-90084fe200b5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f073f1d0-3193-45e7-9483-a31c238b2119 +Openstack-Request-Id: req-5be5c947-40db-49cf-8deb-e717de320743 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:51.591692+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"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f073f1d0-3193-45e7-9483-a31c238b2119 +Openstack-Request-Id: req-2318ee4f-7c8b-4e3d-bda0-126e46d9ef6f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:51.591692+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"} -API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_091_nodes_traits_trait_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_091_nodes_traits_trait_put_admin ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_upgrade_twice +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_upgrade_twice ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_092_nodes_traits_trait_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_092_nodes_traits_trait_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_141_lessee_reader_cannot_put_boot_mode_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_141_lessee_reader_cannot_put_boot_mode_state_change ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_walk_versions +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_walk_versions ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9e09efd6-e5d5-4d72-82db-61462784d566 +Openstack-Request-Id: req-264dfd00-1f85-4ed2-ae33-420dcceab918 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-9e09efd6-e5d5-4d72-82db-61462784d566 +Openstack-Request-Id: req-0e718430-2896-48f6-ba7f-0e952933e5cf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-90a0abf6-6df3-4461-8186-33280b153789 +Openstack-Request-Id: req-0e718430-2896-48f6-ba7f-0e952933e5cf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:53.046600+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/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"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-90a0abf6-6df3-4461-8186-33280b153789 +Openstack-Request-Id: req-4c354ebd-1441-4bbe-88d3-74bbfac2a0b7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:37:53.046600+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/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"} -API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fac7e90f-1584-42c6-961e-7a8410946d26 +Openstack-Request-Id: req-4c354ebd-1441-4bbe-88d3-74bbfac2a0b7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_193_volume_volume_target_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_193_volume_volume_target_id_patch_admin ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_raid_interface_no_default -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_raid_interface_no_default ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_boolean_false -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_boolean_false ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_035_nodes_management_boot_device_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_035_nodes_management_boot_device_get_admin ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_rescue_interface_default_from_conf -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_rescue_interface_default_from_conf ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_boolean_true -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_boolean_true ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_storage_interface -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_storage_interface ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_194_volume_volume_target_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_194_volume_volume_target_id_patch_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_default_value -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_default_value ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_storage_interface_default_from_conf -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_storage_interface_default_from_conf ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_036_nodes_management_boot_device_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_036_nodes_management_boot_device_get_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_string_false -ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_string_false ... ok -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_none_storage_interface -ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_none_storage_interface ... ok -ironic.tests.unit.common.test_fsm.FSMTest.test__validate_target_state -ironic.tests.unit.common.test_fsm.FSMTest.test__validate_target_state ... ok -ironic.tests.unit.common.test_fsm.FSMTest.test_initialize -ironic.tests.unit.common.test_fsm.FSMTest.test_initialize ... ok -ironic.tests.unit.drivers.modules.ilo.test_console.IloConsoleInterfaceTestCase.test_validate -ironic.tests.unit.drivers.modules.ilo.test_console.IloConsoleInterfaceTestCase.test_validate ... ok -ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable -ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_195_volume_volume_target_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_195_volume_volume_target_id_patch_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_037_nodes_management_boot_device_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_037_nodes_management_boot_device_get_observer ... ok -ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable_invalid_state -ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable_invalid_state ... ok -ironic.tests.unit.drivers.modules.ilo.test_console.IloConsoleInterfaceTestCase.test_validate_exc -ironic.tests.unit.drivers.modules.ilo.test_console.IloConsoleInterfaceTestCase.test_validate_exc ... ok -ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable_not -ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable_not ... ok -ironic.tests.unit.common.test_fsm.FSMTest.test_process_event -ironic.tests.unit.common.test_fsm.FSMTest.test_process_event ... ok -ironic.tests.unit.common.test_fsm.FSMTest.test_target_state_stable -ironic.tests.unit.common.test_fsm.FSMTest.test_target_state_stable ... ok -ironic.tests.unit.common.test_glance_service.TestGlanceSerializer.test_serialize -ironic.tests.unit.common.test_glance_service.TestGlanceSerializer.test_serialize ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_196_volume_volume_target_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_196_volume_volume_target_id_delete_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_038_nodes_management_boot_device_supported_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_038_nodes_management_boot_device_supported_get_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_clear_flag -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_clear_flag ... ok -ironic.tests.unit.common.test_kickstart_utils.KSUtilsTestCase.test_prepare_config_drive -ironic.tests.unit.common.test_kickstart_utils.KSUtilsTestCase.test_prepare_config_drive ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_197_volume_volume_target_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_197_volume_volume_target_id_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_039_nodes_management_boot_device_supported_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_039_nodes_management_boot_device_supported_get_member ... ok -ironic.tests.unit.common.test_kickstart_utils.KSUtilsTestCase.test_prepare_config_drive_in_swift -ironic.tests.unit.common.test_kickstart_utils.KSUtilsTestCase.test_prepare_config_drive_in_swift ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_198_volume_volume_target_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_198_volume_volume_target_id_delete_observer ... ok -ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_empty -ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_empty ... ok -ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_exclude_port -ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_exclude_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_ilo_operation_error -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_ilo_operation_error ... ok -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-31424567-2f04-49de-be25-513ae18b5a97 +Openstack-Request-Id: req-cdc9a3c8-9b9f-496c-a903-4afffa582fb6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6886742a-8f2f-4f2c-8d88-c90ccfe65288 +Openstack-Request-Id: req-cdc9a3c8-9b9f-496c-a903-4afffa582fb6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-952378f3-3a8b-406f-8e64-c9d3bf87e5cb +Openstack-Request-Id: req-06233239-5c0a-431e-b920-7ce55ecdec17 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-66b3fcde-ccf7-4696-a2e1-8797352272fb +Openstack-Request-Id: req-06233239-5c0a-431e-b920-7ce55ecdec17 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9fdaf156-bc37-4707-a2b0-30d5905fb27c +Openstack-Request-Id: req-1796d3e0-b825-434a-81a3-efbfde808baf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d12fd6d9-6675-4626-a383-80bcdaa7be77 +Openstack-Request-Id: req-1796d3e0-b825-434a-81a3-efbfde808baf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-387bfc3a-e6fa-4588-b934-8b55bc477ecd +Openstack-Request-Id: req-e77c890e-b9f2-476b-acc1-689a9f3cce52 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4b4ef491-3e9a-457d-a881-f572177cfcf5 +Openstack-Request-Id: req-e77c890e-b9f2-476b-acc1-689a9f3cce52 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +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-687f9e47-60c9-45ce-9b4e-d87584518d84 +Openstack-Request-Id: req-81743b95-e172-4276-bbf7-10b9ea9243e3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-49cf07e1-836c-4d6d-8e9f-a1034c63daf7 +Openstack-Request-Id: req-81743b95-e172-4276-bbf7-10b9ea9243e3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3b044d38-570d-4fa6-a914-d113b5fa6766 +Openstack-Request-Id: req-3c0f573e-03ff-429b-b5f1-3742a4c36e39 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_082_nodes_vendor_passthru_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_082_nodes_vendor_passthru_delete_member ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_migrate_up +ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_migrate_up ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_093_nodes_traits_trait_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_093_nodes_traits_trait_put_observer ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_migrate_up_with_data +ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_migrate_up_with_data ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_083_nodes_vendor_passthru_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_083_nodes_vendor_passthru_delete_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_142_third_party_admin_cannot_put_boot_mode_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_142_third_party_admin_cannot_put_boot_mode_state_change ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_walk_versions_all_default +ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_walk_versions_all_default ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_094_nodes_traits_trait_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_094_nodes_traits_trait_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_084_nodes_traits_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_084_nodes_traits_get_admin ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_walk_versions_all_false +ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_walk_versions_all_false ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_143_owner_admin_can_put_secure_boot_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_143_owner_admin_can_put_secure_boot_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_095_nodes_traits_trait_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_095_nodes_traits_trait_delete_member ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create_allocation_duplicated_name +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create_allocation_duplicated_name ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_096_nodes_traits_trait_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_096_nodes_traits_trait_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_144_owner_manager_can_put_secure_boot_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_144_owner_manager_can_put_secure_boot_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_085_nodes_traits_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_085_nodes_traits_get_member ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create_allocation_duplicated_uuid +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create_allocation_duplicated_uuid ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_that_does_not_exist +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_that_does_not_exist ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_097_nodes_vifs_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_097_nodes_vifs_get_admin ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_uuid +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_086_nodes_traits_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_086_nodes_traits_get_reader ... ok +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e03890aa-d068-459d-a4cc-f9e20ba63a67 +Openstack-Request-Id: req-a222b9fa-3658-4f0c-834c-f385d9863c11 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-5242a165-5c98-451f-a567-5c1e4739b28c +Openstack-Request-Id: req-a222b9fa-3658-4f0c-834c-f385d9863c11 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode {'target': 'uefi'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-f8228d47-f155-4110-9d96-c43451007803 +Openstack-Request-Id: req-f51c6757-372f-4a55-9d31-644cc787fb07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_040_nodes_management_boot_device_supported_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_040_nodes_management_boot_device_supported_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_041_nodes_management_inject_nmi_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_041_nodes_management_inject_nmi_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_199_nodes_volume_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_199_nodes_volume_get_admin ... ok -ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_exclude_port_no_id -ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_exclude_port_no_id ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_ilo_operation_not_supported -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_ilo_operation_not_supported ... ok -ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_one_port -ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_one_port ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_042_nodes_management_inject_nmi_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_042_nodes_management_inject_nmi_put_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_completed -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_completed ... ok -ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_two_ports -ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_two_ports ... ok +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-fac7e90f-1584-42c6-961e-7a8410946d26 +Openstack-Request-Id: req-f51c6757-372f-4a55-9d31-644cc787fb07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode {'target': 'uefi'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-08703ad7-e49a-4513-9dbb-6d3b29715038 +Openstack-Request-Id: req-2a18d5c0-06be-49cc-b6c7-3b69c2976b9c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-08703ad7-e49a-4513-9dbb-6d3b29715038 +Openstack-Request-Id: req-2a18d5c0-06be-49cc-b6c7-3b69c2976b9c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode {'target': 'uefi'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fa0d2987-2957-46e5-a586-033ed3631a2c +Openstack-Request-Id: req-22f924a4-9495-412e-9f44-1540c8759116 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fa0d2987-2957-46e5-a586-033ed3631a2c +Openstack-Request-Id: req-22f924a4-9495-412e-9f44-1540c8759116 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode {'target': 'uefi'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fcf7710f-5609-4a0a-b05c-2b153099fec3 +Openstack-Request-Id: req-2457df66-c1fc-4b09-b79a-e02fe2b65814 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fcf7710f-5609-4a0a-b05c-2b153099fec3 +Openstack-Request-Id: req-2457df66-c1fc-4b09-b79a-e02fe2b65814 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-db308287-81cc-4b2f-bf0a-3e6c7f4257fb +Openstack-Request-Id: req-3c6173e6-0303-4a47-96f5-ab23b2e22840 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-db308287-81cc-4b2f-bf0a-3e6c7f4257fb +Openstack-Request-Id: req-3c6173e6-0303-4a47-96f5-ab23b2e22840 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot {'target': 'true'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4eed311b-2d90-4784-b288-f0b66647f491 +Openstack-Request-Id: req-4b9ad3ca-9b58-4b9f-bbb1-2e423a14f5a2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4eed311b-2d90-4784-b288-f0b66647f491 +Openstack-Request-Id: req-4b9ad3ca-9b58-4b9f-bbb1-2e423a14f5a2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot {'target': 'true'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-60b0d69a-fd53-4ae3-ae62-7cd564245554 +Openstack-Request-Id: req-504c365a-cc6b-4ce8-aa9c-644947fff5e2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-60b0d69a-fd53-4ae3-ae62-7cd564245554 +Openstack-Request-Id: req-504c365a-cc6b-4ce8-aa9c-644947fff5e2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot {'target': 'true'} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_145_lessee_admin_can_put_secure_boot_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_145_lessee_admin_can_put_secure_boot_state_change ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_with_node +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_with_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_098_nodes_vifs_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_098_nodes_vifs_get_member ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_id +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_id ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_146_lessee_manager_can_put_secure_boot_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_146_lessee_manager_can_put_secure_boot_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_087_nodes_traits_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_087_nodes_traits_put_admin ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_id_that_does_not_exist +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_id_that_does_not_exist ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_name +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_name ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_099_nodes_vifs_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_099_nodes_vifs_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_147_owner_member_can_put_secure_boot_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_147_owner_member_can_put_secure_boot_state_change ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_name_that_does_not_exist +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_name_that_does_not_exist ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_088_nodes_traits_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_088_nodes_traits_put_member ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_uuid +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_uuid ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_uuid_that_does_not_exist +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_uuid_that_does_not_exist ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_148_lessee_member_can_put_secure_boot_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_148_lessee_member_can_put_secure_boot_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_100_nodes_vifs_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_100_nodes_vifs_post_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_089_nodes_traits_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_089_nodes_traits_put_reader ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_conductor_affinity +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_conductor_affinity ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_149_owner_reader_cannot_put_secure_boot_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_149_owner_reader_cannot_put_secure_boot_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_101_nodes_vifs_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_101_nodes_vifs_post_member ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_node +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_node ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_rsc +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_rsc ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_150_lessee_reader_cannot_put_secure_boot_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_150_lessee_reader_cannot_put_secure_boot_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_102_nodes_vifs_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_102_nodes_vifs_post_observer ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_state +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_state ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_invalid_fields +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_invalid_fields ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_151_third_party_admin_cannot_put_secure_boot_state_change +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_151_third_party_admin_cannot_put_secure_boot_state_change ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_090_nodes_traits_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_090_nodes_traits_delete_admin ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_sorted +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_sorted ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_103_nodes_vifs_node_vif_ident_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_103_nodes_vifs_node_vif_ident_delete_admin ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_allocation_not_found +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_allocation_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_152_owner_admin_can_change_provision_state +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_152_owner_admin_can_change_provision_state ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_conflict +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_conflict ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_104_nodes_vifs_node_vif_ident_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_104_nodes_vifs_node_vif_ident_delete_member ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_success +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_success ... ok +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-3c0f573e-03ff-429b-b5f1-3742a4c36e39 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-cb422a3b-b92e-49aa-b7c5-7507bb301afa +Openstack-Request-Id: req-26d9836f-b278-46ee-98ce-86cca945aa4c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_200_nodes_volume_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_200_nodes_volume_get_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd ... ok -ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_two_ports_inconsistent -ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_two_ports_inconsistent ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_043_nodes_management_inject_nmi_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_043_nodes_management_inject_nmi_put_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_201_nodes_volume_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_201_nodes_volume_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_ilo_error -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_ilo_error ... ok -ironic.tests.unit.common.test_network.GetPortgroupByIdTestCase.test_portgroup_by_id -ironic.tests.unit.common.test_network.GetPortgroupByIdTestCase.test_portgroup_by_id ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_044_nodes_states_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_044_nodes_states_get_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_erase_pattern_zero -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_erase_pattern_zero ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_202_nodes_volume_connectors_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_202_nodes_volume_connectors_get_admin ... ok -ironic.tests.unit.common.test_network.GetPortgroupByIdTestCase.test_portgroup_by_id_no_such_portgroup -ironic.tests.unit.common.test_network.GetPortgroupByIdTestCase.test_portgroup_by_id_no_such_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_device_type_erase_pattern -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_device_type_erase_pattern ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_045_nodes_states_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_045_nodes_states_get_member ... ok -ironic.tests.unit.common.test_network.TestRemoveVifsTestCase.test_remove_vifs_from_node_failure -ironic.tests.unit.common.test_network.TestRemoveVifsTestCase.test_remove_vifs_from_node_failure ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_erase_pattern -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_erase_pattern ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_203_nodes_volume_connectors_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_203_nodes_volume_connectors_get_member ... ok -ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port -ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_046_nodes_states_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_046_nodes_states_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_format_erase_pattern -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_format_erase_pattern ... ok -ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_client_passed -ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_client_passed ... ok -ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_failure -ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_failure ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_204_nodes_volume_connectors_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_204_nodes_volume_connectors_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_ssd -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_ssd ... ok -ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_not_found -ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_not_found ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_047_nodes_states_power_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_047_nodes_states_power_put_admin ... ok -ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_not_reset_mac -ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_not_reset_mac ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_invalid_power_update -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_invalid_power_update ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_ssd_when_hdd_done -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_ssd_when_hdd_done ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_205_nodes_volume_targets_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_205_nodes_volume_targets_get_admin ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_1 -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_1 ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_048_nodes_states_power_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_048_nodes_states_power_put_member ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_2 -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_2 ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_when_no_drive_available -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_when_no_drive_available ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_3 -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_3 ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_4 -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_4 ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_one_button_secure_erase -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_one_button_secure_erase ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-cb422a3b-b92e-49aa-b7c5-7507bb301afa +Openstack-Request-Id: req-26d9836f-b278-46ee-98ce-86cca945aa4c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2c21b8fa-a772-45a0-af31-a88842f592f5 +Openstack-Request-Id: req-00437f2c-e1e2-4b2e-9246-7b538e0ed4b3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"traits": ["trait1"]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2c21b8fa-a772-45a0-af31-a88842f592f5 +Openstack-Request-Id: req-00437f2c-e1e2-4b2e-9246-7b538e0ed4b3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +{"traits": ["trait1"]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-eaed3fb1-8241-43cf-a3c3-dfe06c50901e +Openstack-Request-Id: req-f6fa6d93-4e6e-4ccd-ab26-f9e392658946 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} +{"traits": ["trait1"]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-eaed3fb1-8241-43cf-a3c3-dfe06c50901e +Openstack-Request-Id: req-f6fa6d93-4e6e-4ccd-ab26-f9e392658946 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} -GOT:Response: 404 Not Found +{"traits": ["trait1"]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-397036c0-47a5-4afd-ab3d-ade851e8e1e0 +Openstack-Request-Id: req-9e9a779c-9572-445c-b79c-3f89bee7c8be X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"traits": ["trait1"]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-397036c0-47a5-4afd-ab3d-ade851e8e1e0 +Openstack-Request-Id: req-9e9a779c-9572-445c-b79c-3f89bee7c8be X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} -GOT:Response: 200 OK +{"traits": ["trait1"]} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4d25d534-0279-4624-875b-356fe5844d56 +Openstack-Request-Id: req-8f218173-8f2e-46d0-ab69-9259e63f42c8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4d25d534-0279-4624-875b-356fe5844d56 +Openstack-Request-Id: req-8f218173-8f2e-46d0-ab69-9259e63f42c8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6bd199f4-c8b4-46ff-881e-1e80ce8c6091 +Openstack-Request-Id: req-005f53ac-486d-466f-a914-b99943d4d6e7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6bd199f4-c8b4-46ff-881e-1e80ce8c6091 +Openstack-Request-Id: req-005f53ac-486d-466f-a914-b99943d4d6e7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_206_nodes_volume_targets_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_206_nodes_volume_targets_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_049_nodes_states_power_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_049_nodes_states_power_put_observer ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_5 -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_5 ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_one_button_secure_erase_ilo_error -ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_one_button_secure_erase_ilo_error ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed_no_nova -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed_no_nova ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_207_nodes_volume_targets_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_207_nodes_volume_targets_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_fail_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_fail_clean ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_050_nodes_states_boot_mode_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_050_nodes_states_boot_mode_put_admin ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed_no_nova_auth_url -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed_no_nova_auth_url ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_fail_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_fail_deploy ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_1 -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_1 ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_208_drivers_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_208_drivers_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_051_nodes_states_boot_mode_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_051_nodes_states_boot_mode_put_member ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_2 -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_2 ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_not_supported -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_not_supported ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_3 -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_3 ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_209_drivers_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_209_drivers_get_member ... ok -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_4 -ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_4 ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_052_nodes_states_boot_mode_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_052_nodes_states_boot_mode_put_observer ... ok -ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_access_forbidden -ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_access_forbidden ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_environment_error_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_environment_error_clean ... ok -ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_passes -ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_passes ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_210_drivers_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_210_drivers_get_observer ... ok -ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_policy_not_registered -ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_policy_not_registered ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_053_nodes_states_secure_boot_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_053_nodes_states_secure_boot_put_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_environment_error_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_environment_error_deploy ... ok -ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_config_file -ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_config_file ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_211_drivers_driver_name_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_211_drivers_driver_name_get_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_swift_error_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_swift_error_clean ... ok -ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_namespace -ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_namespace ... ok -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3819106d-3647-4df1-b516-8fafc14f06e1 +Openstack-Request-Id: req-5c0473e1-e6e1-40e9-a82f-5a4b4975e73e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0d228779-e4a6-4854-9754-1746e6c36713 +Openstack-Request-Id: req-5c0473e1-e6e1-40e9-a82f-5a4b4975e73e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-82986215-566f-4ea8-8531-146ca4a1a846 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-82986215-566f-4ea8-8531-146ca4a1a846 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-63788f05-1d94-4512-95a8-a5b579c8afcc +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_091_nodes_traits_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_091_nodes_traits_delete_member ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_092_nodes_traits_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_092_nodes_traits_delete_reader ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_associated_with_another_node +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_associated_with_another_node ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_duplicated_name +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_duplicated_name ... ok GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-6e529ad8-708e-4d62-9154-92b717a0d6df +Openstack-Request-Id: req-f586f2a4-3ae5-4d36-967b-205877febd92 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9b899d2b-0493-4f1b-968a-1d22ba3f8e63 +Openstack-Request-Id: req-991c58da-588a-4670-93c5-b7d887477fec X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-15c4fdba-9dd2-4833-a703-3d1a49595e92 +Openstack-Request-Id: req-3d24d41f-de6c-454f-90c9-2ecd791fd0f1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5d90d0e6-f003-4b39-9e71-359aeb59911a +Openstack-Request-Id: req-b7662c86-1f0a-40d1-9a11-8023247f50ef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-85aa1347-8b5a-48ce-8f01-189056dfb5cb +Openstack-Request-Id: req-810589b2-4799-4dde-b2da-b2dbcbc1043c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-4cc8ba84-b7f6-42ef-ab3b-8d58db16084a +Openstack-Request-Id: req-ddb592a6-c758-4030-b2e8-a52ddba3b92d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-35d089f0-16e3-4e2e-b8ff-cb6dc54e911e +Openstack-Request-Id: req-df3d72b4-9b74-4117-b7b1-0ce595d14611 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ce2a8924-e35b-47f1-8168-05da6d2f698f +Openstack-Request-Id: req-f7792391-666f-4e97-9e0c-0e43ab33d218 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-75ad15cd-646c-4aec-9f60-fd14ef583608 +Openstack-Request-Id: req-fdcffda9-b1bc-46b9-9829-65955d4b216d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-73c62c3c-9c01-402f-bd7d-0af15d7eaf88 +Openstack-Request-Id: req-bd6c74f1-07d3-4d4a-82af-95b24b80fa7c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a510b928-dc4b-4530-842e-79854f1b4e83 +Openstack-Request-Id: req-fea7f87e-30ee-4217-847d-71bad1fa35ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c395f2a2-e250-40e8-a9a1-cc6c64414a71 +Openstack-Request-Id: req-770885db-d2ac-4973-a74d-0016ee213ebf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_054_nodes_states_secure_boot_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_054_nodes_states_secure_boot_put_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_swift_error_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_swift_error_deploy ... ok -ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_no_args -ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_no_args ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_212_drivers_driver_name_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_212_drivers_driver_name_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_055_nodes_states_secure_boot_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_055_nodes_states_secure_boot_put_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_unknown_exception_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_unknown_exception_clean ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__cache_tftp_images_master_path -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__cache_tftp_images_master_path ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_213_drivers_driver_name_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_213_drivers_driver_name_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_unknown_exception_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_unknown_exception_deploy ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_deploy_ramdisk -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_deploy_ramdisk ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_056_nodes_states_provision_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_056_nodes_states_provision_put_admin ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_ipxe -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_ipxe ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_with_logs_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_with_logs_clean ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_214_drivers_properties_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_214_drivers_properties_get_admin ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_missing_deploy_kernel -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_missing_deploy_kernel ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_057_nodes_states_provision_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_057_nodes_states_provision_put_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_with_logs_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_with_logs_deploy ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_without_logs_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_without_logs_clean ... ok +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +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-8fe47103-6de4-4401-8f59-2b32685fba3d +Openstack-Request-Id: req-5534c5a8-64c5-40e2-95f0-94cff25ea228 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +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-8fe47103-6de4-4401-8f59-2b32685fba3d +Openstack-Request-Id: req-22ddf7e3-3b4d-44ac-bde6-828aa7c4a04c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} -GOT:Response: 200 OK +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_105_nodes_vifs_node_vif_ident_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_105_nodes_vifs_node_vif_ident_delete_observer ... ok +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-99737d8d-d13e-434f-9bff-97c600ea7c20 +Openstack-Request-Id: req-0215db82-007c-45f6-a682-03cec1c36161 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-99737d8d-d13e-434f-9bff-97c600ea7c20 +Openstack-Request-Id: req-0215db82-007c-45f6-a682-03cec1c36161 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]} -API ACL Testing Path get /v1/drivers -GET: /v1/drivers {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot {'target': 'true'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-008c2bb6-fcd4-4f4a-b9fb-8a9b23b06ffd +Openstack-Request-Id: req-3a94f390-bca7-4453-9c4a-a0750f55fa8f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"drivers": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-008c2bb6-fcd4-4f4a-b9fb-8a9b23b06ffd +Openstack-Request-Id: req-3a94f390-bca7-4453-9c4a-a0750f55fa8f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"drivers": []} -API ACL Testing Path get /v1/drivers -GET: /v1/drivers {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot {'target': 'true'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6a86318f-bb9d-48de-acd7-bce9a835cb23 +Openstack-Request-Id: req-b6f08902-4a6c-4191-a0d1-d9d902115cc1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6a86318f-bb9d-48de-acd7-bce9a835cb23 +Openstack-Request-Id: req-b6f08902-4a6c-4191-a0d1-d9d902115cc1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers -GET: /v1/drivers {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot {'target': 'true'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3af54c3a-1ff3-4708-a8e9-7b87be11485c +Openstack-Request-Id: req-d65a590c-ad9d-45a3-9e5d-e75c1abeb4fe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"drivers": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3af54c3a-1ff3-4708-a8e9-7b87be11485c +Openstack-Request-Id: req-d65a590c-ad9d-45a3-9e5d-e75c1abeb4fe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"drivers": []} -API ACL Testing Path get /v1/drivers/fake-driverz -GET: /v1/drivers/fake-driverz {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot {'target': 'true'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6c0e45ff-1bff-4ae4-8881-603abd462f47 +Openstack-Request-Id: req-d9519d00-3f53-4ff8-8282-51718deba4f3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6c0e45ff-1bff-4ae4-8881-603abd462f47 +Openstack-Request-Id: req-d9519d00-3f53-4ff8-8282-51718deba4f3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz -GET: /v1/drivers/fake-driverz {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot {'target': 'true'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e4ab5b28-b47c-465d-ac27-795d43a94b02 +Openstack-Request-Id: req-4e3cc8de-9135-4769-addc-461944d26167 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e4ab5b28-b47c-465d-ac27-795d43a94b02 +Openstack-Request-Id: req-4e3cc8de-9135-4769-addc-461944d26167 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz -GET: /v1/drivers/fake-driverz {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-50ca48fd-e803-4d72-a012-40791b718b10 +Openstack-Request-Id: req-f02ad928-87e7-4ee3-bb19-9bd66fece382 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-50ca48fd-e803-4d72-a012-40791b718b10 +Openstack-Request-Id: req-f02ad928-87e7-4ee3-bb19-9bd66fece382 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/properties -GET: /v1/drivers/fake-driverz/properties {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision {'target': 'deploy'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-17721fa5-bdf9-4313-a897-6f72f2298970 +Openstack-Request-Id: req-c70fd6c9-57ed-4e4e-9f76-563ce220663f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-17721fa5-bdf9-4313-a897-6f72f2298970 +Openstack-Request-Id: req-c70fd6c9-57ed-4e4e-9f76-563ce220663f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/properties -GET: /v1/drivers/fake-driverz/properties {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_215_drivers_properties_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_215_drivers_properties_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_058_nodes_states_provision_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_058_nodes_states_provision_put_observer ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel_ipxe -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel_ipxe ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_without_logs_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_without_logs_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_216_drivers_properties_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_216_drivers_properties_get_observer ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel_ipxe_anaconda -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel_ipxe_anaconda ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_activate_license -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_activate_license ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_059_nodes_states_raid_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_059_nodes_states_raid_put_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_activate_license_no_or_invalid_format_license_key -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_activate_license_no_or_invalid_format_license_key ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_boot_iso -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_boot_iso ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_217_drivers_raid_logical_disk_properties_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_217_drivers_raid_logical_disk_properties_get_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_kickstart_stage2_missing -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_kickstart_stage2_missing ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_060_nodes_states_raid_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_060_nodes_states_raid_put_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_218_drivers_raid_logical_disk_properties_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_218_drivers_raid_logical_disk_properties_get_member ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_localboot -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_localboot ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_fileurl -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_fileurl ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_219_drivers_raid_logical_disk_properties_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_219_drivers_raid_logical_disk_properties_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_061_nodes_states_raid_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_061_nodes_states_raid_put_observer ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_whole_disk_image -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_whole_disk_image ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_httpurl -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_httpurl ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_with_kickstart_boot_option -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_with_kickstart_boot_option ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_url_exception -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_url_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_220_drivers_vendor_passthru_methods_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_220_drivers_vendor_passthru_methods_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_062_nodes_states_console_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_062_nodes_states_console_get_admin ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_with_kickstart_url_http -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_with_kickstart_url_http ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_deploy -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_221_drivers_vendor_passthru_methods_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_221_drivers_vendor_passthru_methods_get_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target_failed -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target_failed ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_063_nodes_states_console_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_063_nodes_states_console_get_member ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_deploy -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_deploy ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_rescue -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_rescue ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target_in_bios -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target_in_bios ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_222_drivers_vendor_passthru_methods_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_222_drivers_vendor_passthru_methods_get_observer ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_deploy_kernel -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_deploy_kernel ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_064_nodes_states_console_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_064_nodes_states_console_put_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_secure_boot_keys -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_secure_boot_keys ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_deploy_ramdisk -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_deploy_ramdisk ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_create_csr -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_create_csr ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_rescue_kernel -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_rescue_kernel ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_223_drivers_vendor_passthru_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_223_drivers_vendor_passthru_get_admin ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_rescue_ramdisk -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_rescue_ramdisk ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_065_nodes_states_console_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_065_nodes_states_console_put_member ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_deploy -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_deploy ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_rescue -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_rescue ... ok +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision {'target': 'deploy'} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_153_owner_manager_can_change_provision_state +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_153_owner_manager_can_change_provision_state ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_node_already_associated +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_node_already_associated ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_093_nodes_traits_trait_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_093_nodes_traits_trait_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_106_nodes_management_indicators_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_106_nodes_management_indicators_get_admin ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_not_found +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_154_owner_member_can_change_provision_state +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_154_owner_member_can_change_provision_state ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_uuid +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_uuid ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_094_nodes_traits_trait_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_094_nodes_traits_trait_put_member ... ok +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_with_node_id +ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_with_node_id ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_107_nodes_management_indicators_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_107_nodes_management_indicators_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_155_lessee_admin_can_change_provision_state +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_155_lessee_admin_can_change_provision_state ... ok +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_empty_db +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_empty_db ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_095_nodes_traits_trait_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_095_nodes_traits_trait_put_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_108_nodes_management_indicators_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_108_nodes_management_indicators_get_observer ... ok +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_max_count_zero +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_max_count_zero ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_156_lessee_manager_can_change_provision_state +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_156_lessee_manager_can_change_provision_state ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_096_nodes_traits_trait_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_096_nodes_traits_trait_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_109_nodes_management_indicators_component_get_allow +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.' +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_1 +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_1 ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_110_nodes_management_indicators_component_ind_ident_get_allow +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.' +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_097_nodes_traits_trait_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_097_nodes_traits_trait_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_157_lessee_member_cannot_change_provision_state +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_157_lessee_member_cannot_change_provision_state ... ok +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_2_some_nodes +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_2_some_nodes ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_111_nodes_management_indicators_component_ind_ident_put_allow +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.' +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_098_nodes_traits_trait_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_098_nodes_traits_trait_delete_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_158_third_party_admin_cannot_change_provision_state +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_158_third_party_admin_cannot_change_provision_state ... ok +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_same_nodes +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_same_nodes ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_112_portgroups_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_112_portgroups_get_admin ... ok +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_one_node +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_one_node ... ok +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-63788f05-1d94-4512-95a8-a5b579c8afcc +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c9e4934f-bacd-4c88-b74b-e663dff450c7 +Openstack-Request-Id: req-25d48e05-7788-46ea-81f5-e13cc78dca4b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get_properties\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c9e4934f-bacd-4c88-b74b-e663dff450c7 +Openstack-Request-Id: req-25d48e05-7788-46ea-81f5-e13cc78dca4b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get_properties\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/properties -GET: /v1/drivers/fake-driverz/properties {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2d9b2be2-9a8f-44fc-8315-f5dc4f33d6c4 +Openstack-Request-Id: req-4c7aea1f-79b5-4fd2-bb6c-209744e53abc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2d9b2be2-9a8f-44fc-8315-f5dc4f33d6c4 +Openstack-Request-Id: req-4c7aea1f-79b5-4fd2-bb6c-209744e53abc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties -GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0d87bb94-4d73-4e82-8866-69f339ed835c +Openstack-Request-Id: req-5f5f9094-5680-4055-bb86-002e6dc25a5e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0d87bb94-4d73-4e82-8866-69f339ed835c +Openstack-Request-Id: req-5f5f9094-5680-4055-bb86-002e6dc25a5e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties -GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a8aa8068-cddf-469b-a9df-de1d0203d404 +Openstack-Request-Id: req-cdff853a-89e0-45b2-8e7d-52e1b6a4cc0c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get_raid_logical_disk_properties\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a8aa8068-cddf-469b-a9df-de1d0203d404 +Openstack-Request-Id: req-cdff853a-89e0-45b2-8e7d-52e1b6a4cc0c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get_raid_logical_disk_properties\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties -GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0758cae5-7526-4b7d-aa12-cf7a35c0c6f1 +Openstack-Request-Id: req-9e12675c-a328-4e78-8d64-1f1966499deb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0758cae5-7526-4b7d-aa12-cf7a35c0c6f1 +Openstack-Request-Id: req-9e12675c-a328-4e78-8d64-1f1966499deb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods -GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-a227e5f0-dcc9-4dd1-8c87-e23d4c9e5f29 +Openstack-Request-Id: req-d2faf755-f020-4a33-8b33-b5ad1299ceaf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-a227e5f0-dcc9-4dd1-8c87-e23d4c9e5f29 +Openstack-Request-Id: req-d2faf755-f020-4a33-8b33-b5ad1299ceaf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods -GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait +DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c0e16889-7615-4a08-8634-619169936ed2 +Openstack-Request-Id: req-850d7323-c50c-4201-9005-349657edbfe6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c0e16889-7615-4a08-8634-619169936ed2 +Openstack-Request-Id: req-850d7323-c50c-4201-9005-349657edbfe6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods -GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-eeb7354c-b46c-42fb-9285-b0f99bc25df1 +Openstack-Request-Id: req-852ced4e-1451-4b46-9efb-de79b7452e72 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_099_nodes_vifs_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_099_nodes_vifs_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_159_owner_admin_can_set_raid_config +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_159_owner_admin_can_set_raid_config ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_113_portgroups_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_113_portgroups_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_100_nodes_vifs_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_100_nodes_vifs_get_member ... ok +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_version_exists +ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_version_exists ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_160_owner_manager_can_set_raid_config +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_160_owner_manager_can_set_raid_config ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_114_portgroups_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_114_portgroups_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_101_nodes_vifs_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_101_nodes_vifs_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_115_portgroups_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_115_portgroups_post_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_102_nodes_vifs_post_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_102_nodes_vifs_post_admin ... ok +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-eeb7354c-b46c-42fb-9285-b0f99bc25df1 +Openstack-Request-Id: req-08850f4e-aa95-42bf-8285-887f67388c5a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test -GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-cb234ec8-6200-4f04-a47e-5d01ec2f85d8 +Openstack-Request-Id: req-08850f4e-aa95-42bf-8285-887f67388c5a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision {'target': 'deploy'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-cb234ec8-6200-4f04-a47e-5d01ec2f85d8 +Openstack-Request-Id: req-895dd8cb-b1d6-4121-8e1e-64eed2cc6c22 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_224_drivers_vendor_passthru_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_224_drivers_vendor_passthru_get_member ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_ramdisk -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_ramdisk ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_066_nodes_states_console_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_066_nodes_states_console_put_observer ... ok -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_rescue -ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_rescue ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_flash_firmware_sum_mode_with_component -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_flash_firmware_sum_mode_with_component ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_225_drivers_vendor_passthru_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_225_drivers_vendor_passthru_get_observer ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_grub_mac_path -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_grub_mac_path ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_fail -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_067_nodes_vendor_passthru_methods_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_067_nodes_vendor_passthru_methods_get_admin ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_ip_address_path -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_ip_address_path ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_next_boot -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_next_boot ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_mac_path -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_mac_path ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_226_drivers_vendor_passthru_post_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_226_drivers_vendor_passthru_post_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_persistent -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_persistent ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_mac_path_ipxe -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_mac_path_ipxe ... ok -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1f604064-8d97-4c7f-8938-66ab7d055529 +Openstack-Request-Id: req-895dd8cb-b1d6-4121-8e1e-64eed2cc6c22 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision {'target': 'deploy'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2d274122-1a6a-4e4c-8d3d-4e4fe5d70acf +Openstack-Request-Id: req-8bfc0e95-cc26-45d0-8e1a-c1f3cdaba9d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-77ea1db9-55d6-4c86-b19a-91266a5a8c31 +Openstack-Request-Id: req-8bfc0e95-cc26-45d0-8e1a-c1f3cdaba9d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision {'target': 'deploy'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-37894980-0346-4884-a69a-60952fb2e366 +Openstack-Request-Id: req-b49928a5-32e9-46c4-b2a1-394eb8ee1436 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision {'target': 'deploy'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-92143ecb-61a8-4b04-9ef1-920d5737e111 +Openstack-Request-Id: req-b49928a5-32e9-46c4-b2a1-394eb8ee1436 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision {'target': 'deploy'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-927af9fd-ca5b-46b5-b817-3a67c43b8d52 +Openstack-Request-Id: req-4435d248-74f9-42a4-a03d-07bec452e0b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ef5828ec-64de-4302-9c53-74e4d5e83110 +Openstack-Request-Id: req-4435d248-74f9-42a4-a03d-07bec452e0b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision {'target': 'deploy'} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bba2d3a2-59f8-40f9-a213-ac0850ab669d +Openstack-Request-Id: req-adda639e-0c92-46f1-9296-bfb0790ca768 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-29bfe1fc-2d22-4148-845c-7502f47a26e2 +Openstack-Request-Id: req-adda639e-0c92-46f1-9296-bfb0790ca768 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/raid +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/raid {'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-fc0fd2cb-e987-4584-8ae4-0242f709a77d +Openstack-Request-Id: req-3f1439bd-da43-4664-8f5e-61a23d70fc0a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-931ed91e-5577-4e6d-8988-81a61df8aeec +Openstack-Request-Id: req-3f1439bd-da43-4664-8f5e-61a23d70fc0a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/raid +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/raid {'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-c45c71fb-1206-4416-8aff-9bf4058d681d +Openstack-Request-Id: req-a0654e09-448d-46c7-bbf7-295b7615f19b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console {'enabled': True} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-21d7b9f1-6be2-4453-9c77-80dd58e2b48b +Openstack-Request-Id: req-a0654e09-448d-46c7-bbf7-295b7615f19b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_161_lessee_admin_cannot_set_raid_config +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_161_lessee_admin_cannot_set_raid_config ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_at_limit +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_at_limit ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_162_lessee_manager_cannot_set_raid_config +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_162_lessee_manager_cannot_set_raid_config ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_duplicate +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_duplicate ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_116_portgroups_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_116_portgroups_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_103_nodes_vifs_post_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_103_nodes_vifs_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_163_owner_member_can_set_raid_config +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_163_owner_member_can_set_raid_config ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_117_portgroups_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_117_portgroups_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_104_nodes_vifs_post_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_104_nodes_vifs_post_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_164_lessee_member_cannot_set_raid_config +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_164_lessee_member_cannot_set_raid_config ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_duplicate_at_limit +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_duplicate_at_limit ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_118_portgroups_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_118_portgroups_detail_get_admin ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_node_not_exist +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_node_not_exist ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_165_third_party_admin_cannot_set_raid_config +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_165_third_party_admin_cannot_set_raid_config ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_105_nodes_vifs_node_vif_ident_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_105_nodes_vifs_node_vif_ident_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_119_portgroups_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_119_portgroups_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_166_owner_admin_can_get_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_166_owner_admin_can_get_console ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_106_nodes_vifs_node_vif_ident_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_106_nodes_vifs_node_vif_ident_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_120_portgroups_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_120_portgroups_detail_get_observer ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_over_limit +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_over_limit ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_167_owner_manager_can_get_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_167_owner_manager_can_get_console ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait_node_not_found +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait_node_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_121_portgroups_portgroup_ident_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_121_portgroups_portgroup_ident_get_admin ... ok +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c0c8b644-5705-4122-ad05-a96f236288ef +Openstack-Request-Id: req-852ced4e-1451-4b46-9efb-de79b7452e72 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_068_nodes_vendor_passthru_methods_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_068_nodes_vendor_passthru_methods_get_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_persistent_fail -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_persistent_fail ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__link_ip_address_pxe_configs -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__link_ip_address_pxe_configs ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_227_drivers_vendor_passthru_post_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_227_drivers_vendor_passthru_post_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_mode -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_mode ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_infiniband_mac_pxe_configs -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_infiniband_mac_pxe_configs ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_069_nodes_vendor_passthru_methods_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_069_nodes_vendor_passthru_methods_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_mode_fail -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_mode_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_228_drivers_vendor_passthru_post_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_228_drivers_vendor_passthru_post_observer ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_mac_ipxe_configs -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_mac_ipxe_configs ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_properties -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_properties ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_070_nodes_vendor_passthru_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_070_nodes_vendor_passthru_get_admin ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_mac_pxe_configs -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_mac_pxe_configs ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_sensor_data -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_sensor_data ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_devices -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_devices ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_071_nodes_vendor_passthru_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_071_nodes_vendor_passthru_get_member ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_1___legacy_bios_only_____bios___ -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_1___legacy_bios_only_____bios___ ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_072_nodes_vendor_passthru_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_072_nodes_vendor_passthru_get_observer ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_instance_info -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_instance_info ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_2___uefi_only_____uefi___ -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_2___uefi_only_____uefi___ ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_229_drivers_vendor_passthru_put_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_229_drivers_vendor_passthru_put_admin ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_mac_address -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_mac_address ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_3___legacy_bios_and_uefi_____uefi____bios___ -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_3___legacy_bios_and_uefi_____uefi____bios___ ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_073_nodes_vendor_passthru_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_073_nodes_vendor_passthru_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_230_drivers_vendor_passthru_put_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_230_drivers_vendor_passthru_put_member ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_no_ipaddress -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_no_ipaddress ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_already_exists -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_already_exists ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_074_nodes_vendor_passthru_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_074_nodes_vendor_passthru_post_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi_failed -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi_failed ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_231_drivers_vendor_passthru_put_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_231_drivers_vendor_passthru_put_observer ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_copy_file_different -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_copy_file_different ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi_not_supported -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi_not_supported ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_fallback -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_fallback ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_232_drivers_vendor_passthru_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_232_drivers_vendor_passthru_delete_admin ... skipped 'not updated for scope testing' -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_075_nodes_vendor_passthru_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_075_nodes_vendor_passthru_post_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_bios_to_default -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_bios_to_default ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_233_drivers_vendor_passthru_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_233_drivers_vendor_passthru_delete_observer ... skipped 'not updated for scope testing' -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_076_nodes_vendor_passthru_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_076_nodes_vendor_passthru_put_admin ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_existing_dirs_bios -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_existing_dirs_bios ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_no_password -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_no_password ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_existing_dirs_uefi -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_existing_dirs_uefi ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_077_nodes_vendor_passthru_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_077_nodes_vendor_passthru_put_member ... ok -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test -GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4a2dc411-1c10-4f62-8086-a99dff872972 +Openstack-Request-Id: req-940baa1c-da30-45ce-92a5-8b70633d1a14 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4a2dc411-1c10-4f62-8086-a99dff872972 +Openstack-Request-Id: req-940baa1c-da30-45ce-92a5-8b70633d1a14 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test -GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e5e75a12-d5f5-4519-a467-40a9dfdaf89d +Openstack-Request-Id: req-68d2b864-3a42-4f65-8baa-58a830d8dac1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e5e75a12-d5f5-4519-a467-40a9dfdaf89d +Openstack-Request-Id: req-68d2b864-3a42-4f65-8baa-58a830d8dac1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test -POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7f89b4e3-1cfb-40ec-ac18-37ddeedd4082 +Openstack-Request-Id: req-0c654e5c-807a-4116-a353-bf10f13f1621 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7f89b4e3-1cfb-40ec-ac18-37ddeedd4082 +Openstack-Request-Id: req-0c654e5c-807a-4116-a353-bf10f13f1621 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test -POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1c59a2ce-47f6-4673-80e9-866ece2d4ee7 +Openstack-Request-Id: req-4754b6cd-8ed4-465a-8af7-4c4b64217fc6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1c59a2ce-47f6-4673-80e9-866ece2d4ee7 +Openstack-Request-Id: req-4754b6cd-8ed4-465a-8af7-4c4b64217fc6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test -POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs +POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-39421200-feac-4b41-a6bf-7614da3b3fd5 +Openstack-Request-Id: req-657806e3-e634-4f9c-96fd-a63c1ee1b834 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-39421200-feac-4b41-a6bf-7614da3b3fd5 +Openstack-Request-Id: req-657806e3-e634-4f9c-96fd-a63c1ee1b834 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test -PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +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-9da6bff1-d548-4b91-9f3e-ed6d15e0ba1e +Openstack-Request-Id: req-6b9c8af5-ad34-4a37-90dc-a4062bcfd9d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-9da6bff1-d548-4b91-9f3e-ed6d15e0ba1e +Openstack-Request-Id: req-6b9c8af5-ad34-4a37-90dc-a4062bcfd9d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test -PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +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-661e7108-59c9-4081-83b0-94e9d81cb998 +Openstack-Request-Id: req-6d3435fd-2a0f-45fa-8470-d18f52b414f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-661e7108-59c9-4081-83b0-94e9d81cb998 +Openstack-Request-Id: req-6d3435fd-2a0f-45fa-8470-d18f52b414f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test -PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 +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-ae686ea1-ac70-4614-a018-f51ed086117a +Openstack-Request-Id: req-c16a1f5c-19a6-49bd-8737-9e1cb26f61fe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_107_nodes_vifs_node_vif_ident_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_107_nodes_vifs_node_vif_ident_delete_reader ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait_not_found +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_168_lessee_admin_cannot_get_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_168_lessee_admin_cannot_get_console ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_108_nodes_management_indicators_get_allow +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_108_nodes_management_indicators_get_allow ... skipped 'Not implemented yet' +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_by_node_id +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_by_node_id ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_empty +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_empty ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_122_portgroups_portgroup_ident_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_122_portgroups_portgroup_ident_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_109_nodes_management_indicators_component_get_allow +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_109_nodes_management_indicators_component_get_allow ... skipped 'Not implemented yet' +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_node_not_exist +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_node_not_exist ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_exists +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_exists ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_110_nodes_management_indicators_component_ind_ident_get_allow +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_110_nodes_management_indicators_component_ind_ident_get_allow ... skipped 'Not implemented yet' +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_node_not_exist +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_node_not_exist ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ae686ea1-ac70-4614-a018-f51ed086117a +Openstack-Request-Id: req-6d32258a-868f-42cc-bc22-b1284a9bb37b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_234_nodes_bios_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_234_nodes_bios_get_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_ok ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_set_dir_permission -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_set_dir_permission ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_pass_as_arg_ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_pass_as_arg_ok ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_grub -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_grub ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_078_nodes_vendor_passthru_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_078_nodes_vendor_passthru_put_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_235_nodes_bios_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_235_nodes_bios_get_member ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_ipxe -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_ipxe ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_secure_boot_keys_to_default -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_secure_boot_keys_to_default ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_mac_address -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_mac_address ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_079_nodes_vendor_passthru_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_079_nodes_vendor_passthru_delete_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_security_parameters_update -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_security_parameters_update ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_236_nodes_bios_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_236_nodes_bios_get_observer ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_grub_config -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_grub_config ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_fail -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_080_nodes_vendor_passthru_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_080_nodes_vendor_passthru_delete_member ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_anaconda -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_anaconda ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_237_nodes_bios_bios_setting_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_237_nodes_bios_bios_setting_get_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_invalid_device -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_invalid_device ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_iso -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_iso ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_238_nodes_bios_bios_setting_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_238_nodes_bios_bios_setting_get_member ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_ramdisk -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_ramdisk ... ok -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-79bc01ce-2f5b-4a27-bc8f-ff662e7bcd59 +Openstack-Request-Id: req-cdfc2a0e-ad8c-47e6-87e0-fd51dec3c38a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods {} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a4bb5464-03ed-4fd1-9645-1ed4a5585ad2 +Openstack-Request-Id: req-7645595f-80c5-4cd8-9f34-5d6dabaaf6b5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-05765cd2-bbcd-4412-a8c5-d7f83de2492d +Openstack-Request-Id: req-b27fe454-42c6-47cf-b590-4593cff1abbd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} -GOT:Response: 404 Not Found +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e504003f-ad29-4d5e-9d9b-e91f4468207a +Openstack-Request-Id: req-b0bb94f3-3997-4f3d-a4fd-fd11c290b750 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e870fc46-0d67-4a78-8a60-7a9886b9dbc9 +Openstack-Request-Id: req-fa37c86d-567a-465a-bb2c-2d254ba0cc5a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0d0d710c-59b6-40d2-a9db-15a48acc9dbf +Openstack-Request-Id: req-0e4b728a-ef2a-4ae3-9d11-4e82f74da280 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b04be0af-c84d-4fb5-9684-ea0763a86742 +Openstack-Request-Id: req-2638d1e2-7251-4797-ba90-8b58fc5e10d4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6e669a95-282e-4ea9-8c12-ab4b0bcb29db +Openstack-Request-Id: req-b0f8fa8f-8c2e-4cb5-8fd1-942ff9c02df0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a231480d-fc9d-4c17-b936-619d99d5e740 +Openstack-Request-Id: req-e26e9eba-335a-4545-aa93-ba3834b73d05 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/detail +GET: /v1/portgroups/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-83081a32-d62e-4ed0-ae6f-b09521f94f52 +Openstack-Request-Id: req-a649f9ec-7a95-42d4-bca9-7d3ad5a7f7fa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test None -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/detail +GET: /v1/portgroups/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-79f68331-516e-45eb-ae50-955156cd6507 +Openstack-Request-Id: req-c752b4e4-5756-490c-b12d-48f0c19f4b63 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/detail +GET: /v1/portgroups/detail {} +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-02fe4643-a856-412c-94b7-9659c1d9f4e3 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-dd1ca690-281e-42c0-9f24-47e4c569ede6 +Openstack-Request-Id: req-83ecd3aa-cb0d-4de2-ae00-ee1ca983d0f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9aeb9223-9460-40c9-95ba-170595e4f4b8 +Openstack-Request-Id: req-5af4654e-216d-4986-a67e-15a86ea73ba6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_081_nodes_vendor_passthru_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_081_nodes_vendor_passthru_delete_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_persistent_fail -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_persistent_fail ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_persistent_true -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_persistent_true ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_082_nodes_traits_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_082_nodes_traits_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_239_nodes_bios_bios_setting_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_239_nodes_bios_bios_setting_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_mode -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_mode ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config_multipath -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config_multipath ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_mode_fail -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_mode_fail ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config_no_extra_volumes -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config_no_extra_volumes ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_083_nodes_traits_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_083_nodes_traits_get_member ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_script -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_script ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_123_portgroups_portgroup_ident_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_123_portgroups_portgroup_ident_get_observer ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-609d15db-b014-4001-9c23-2c382a5a2338 +Openstack-Request-Id: req-a1a9764a-960e-4274-900e-d51ff53a5012 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"bios": [{"created_at": "2024-01-06T13:38:22.223940+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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-609d15db-b014-4001-9c23-2c382a5a2338 +Openstack-Request-Id: req-a1a9764a-960e-4274-900e-d51ff53a5012 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"bios": [{"created_at": "2024-01-06T13:38:22.223940+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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid {'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-d6a0255e-c941-4fe1-878f-def5eebc5977 +Openstack-Request-Id: req-ed1f3b33-71de-4082-af88-9a3ae98fb369 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d6a0255e-c941-4fe1-878f-def5eebc5977 +Openstack-Request-Id: req-ed1f3b33-71de-4082-af88-9a3ae98fb369 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid {'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-6a9428bc-7616-44ea-ba25-06fdd056c458 +Openstack-Request-Id: req-91a21ea6-dcfb-40ea-becb-8feb9d47d095 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"bios": [{"created_at": "2024-01-06T13:38:23.777716+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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6a9428bc-7616-44ea-ba25-06fdd056c458 +Openstack-Request-Id: req-91a21ea6-dcfb-40ea-becb-8feb9d47d095 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"bios": [{"created_at": "2024-01-06T13:38:23.777716+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"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid {'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-ef395f2c-c707-4335-930f-7c6bcd1011e2 +Openstack-Request-Id: req-ed79222f-b17f-40e2-8c6c-1fb7066dc161 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"FAKE_SETTING": {"created_at": "2024-01-06T13:38:24.563285+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"}]}} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ef395f2c-c707-4335-930f-7c6bcd1011e2 +Openstack-Request-Id: req-ed79222f-b17f-40e2-8c6c-1fb7066dc161 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"FAKE_SETTING": {"created_at": "2024-01-06T13:38:24.563285+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"}]}} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid {'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-e7f63a79-a180-4724-8ee8-6dd0d497c170 +Openstack-Request-Id: req-d2e399f1-d5e0-4f93-8cc5-3e6f8c1b2c3f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e7f63a79-a180-4724-8ee8-6dd0d497c170 +Openstack-Request-Id: req-d2e399f1-d5e0-4f93-8cc5-3e6f8c1b2c3f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-524ff30b-a699-471e-86eb-01077e15707e +Openstack-Request-Id: req-fc11156e-6020-423d-a73a-956cc9f91662 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"FAKE_SETTING": {"created_at": "2024-01-06T13:38:26.120100+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"}]}} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-524ff30b-a699-471e-86eb-01077e15707e +Openstack-Request-Id: req-fc11156e-6020-423d-a73a-956cc9f91662 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"FAKE_SETTING": {"created_at": "2024-01-06T13:38:26.120100+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"}]}} -API ACL Testing Path get /v1/conductors -GET: /v1/conductors {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_240_conductors_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_240_conductors_get_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_failed -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_failed ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_config -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_config ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_084_nodes_traits_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_084_nodes_traits_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_in_bios -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_in_bios ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_241_conductors_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_241_conductors_get_member ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_timeout_config -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_timeout_config ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_missed_properties -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_missed_properties ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_pxe_config -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_pxe_config ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_085_nodes_traits_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_085_nodes_traits_put_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_242_conductors_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_242_conductors_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_with_auth -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_with_auth ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_bios -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_bios ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_without_auth -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_without_auth ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_086_nodes_traits_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_086_nodes_traits_put_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_243_conductors_hostname_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_243_conductors_hostname_get_admin ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_ipv6 -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_ipv6 ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_auth_failure_logging_threshold -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_auth_failure_logging_threshold ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_ipv6_bios -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_ipv6_bios ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_087_nodes_traits_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_087_nodes_traits_put_observer ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_fallback_ipxe_boot_script -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_fallback_ipxe_boot_script ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_calls_step_foreach_url_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_calls_step_foreach_url_clean ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_244_conductors_hostname_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_244_conductors_hostname_get_member ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info_bad_driver_info -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info_bad_driver_info ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_calls_step_foreach_url_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_calls_step_foreach_url_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_088_nodes_traits_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_088_nodes_traits_delete_admin ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info_ipxe -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info_ipxe ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_245_conductors_hostname_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_245_conductors_hostname_get_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_cleans_all_files_if_exc_thrown_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_cleans_all_files_if_exc_thrown_clean ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_pxe_config_file_path -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_pxe_config_file_path ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_rescue_kr_info -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_rescue_kr_info ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_089_nodes_traits_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_089_nodes_traits_delete_member ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_rescue_kr_info_ipxe -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_rescue_kr_info_ipxe ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_cleans_all_files_if_exc_thrown_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_cleans_all_files_if_exc_thrown_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_246_allocations_post_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_246_allocations_post_admin ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_place_common_config -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_place_common_config ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_090_nodes_traits_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_090_nodes_traits_delete_observer ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_doesnt_update_any_if_any_url_fails_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_doesnt_update_any_if_any_url_fails_clean ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_place_common_config_existing_dirs -ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_place_common_config_existing_dirs ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_247_allocations_post_member -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." -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_doesnt_update_any_if_any_url_fails_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_doesnt_update_any_if_any_url_fails_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_091_nodes_traits_trait_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_091_nodes_traits_trait_put_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_checksum_validation_error_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_checksum_validation_error_clean ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-dbe613f8-bd1b-47f7-b9ef-6c481baec5d6 +Openstack-Request-Id: req-6800b5b8-a64f-4cda-8c4c-03a5fd965e19 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-dbe613f8-bd1b-47f7-b9ef-6c481baec5d6 +Openstack-Request-Id: req-6800b5b8-a64f-4cda-8c4c-03a5fd965e19 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}]} -API ACL Testing Path get /v1/conductors -GET: /v1/conductors {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-48dc0b67-788b-4c4b-af83-c0922e1585a9 +Openstack-Request-Id: req-5a3bc01a-9e6f-41cf-94de-2a0f025595b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-48dc0b67-788b-4c4b-af83-c0922e1585a9 +Openstack-Request-Id: req-5a3bc01a-9e6f-41cf-94de-2a0f025595b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors -GET: /v1/conductors {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_169_lessee_manager_cannot_get_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_169_lessee_manager_cannot_get_console ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_not_exists +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_not_exists ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_124_portgroups_portgroup_ident_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_124_portgroups_portgroup_ident_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_111_nodes_management_indicators_component_ind_ident_put_allow +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_111_nodes_management_indicators_component_ind_ident_put_allow ... skipped 'Not implemented yet' +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_170_owner_member_can_get_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_170_owner_member_can_get_console ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_at_limit +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_at_limit ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_125_portgroups_portgroup_ident_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_125_portgroups_portgroup_ident_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_112_portgroups_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_112_portgroups_get_admin ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_duplicate +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_duplicate ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_171_lessee_member_cannot_get_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_171_lessee_member_cannot_get_console ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_node_not_exist +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_node_not_exist ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_over_limit +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_over_limit ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_126_portgroups_portgroup_ident_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_126_portgroups_portgroup_ident_patch_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_172_owner_reader_cannot_get_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_172_owner_reader_cannot_get_console ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_113_portgroups_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_113_portgroups_get_member ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_empty_node_traits +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_empty_node_traits ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_node_traits +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_node_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_127_portgroups_portgroup_ident_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_127_portgroups_portgroup_ident_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_173_lessee_reader_cannot_get_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_173_lessee_reader_cannot_get_console ... ok +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_node_traits_node_not_exist +ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_node_traits_node_not_exist ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_114_portgroups_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_114_portgroups_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_174_third_party_admin_cannot_get_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_174_third_party_admin_cannot_get_console ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_mac_address_with_ethernet_interfaces +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_mac_address_with_ethernet_interfaces ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_128_portgroups_portgroup_ident_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_128_portgroups_portgroup_ident_delete_member ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_mac_address_without_ethernet_interfaces +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_mac_address_without_ethernet_interfaces ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_115_portgroups_post_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_115_portgroups_post_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_175_owner_admin_can_set_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_175_owner_admin_can_set_console ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_129_portgroups_portgroup_ident_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_129_portgroups_portgroup_ident_delete_observer ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_with_BIOS_boot_mode +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_with_BIOS_boot_mode ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_with_UEFI_boot_mode +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_with_UEFI_boot_mode ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_116_portgroups_post_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_116_portgroups_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_176_owner_manager_can_set_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_176_owner_manager_can_set_console ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_130_nodes_portgroups_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_130_nodes_portgroups_get_admin ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_without_boot_mode +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_without_boot_mode ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test_get_properties +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test_get_properties ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_131_nodes_portgroups_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_131_nodes_portgroups_get_member ... ok +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-85af13d8-9279-4bec-9c62-de1903e453f6 +Openstack-Request-Id: req-976a91fd-db41-4c82-bb4d-4d9cb527a3ef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-85af13d8-9279-4bec-9c62-de1903e453f6 +Openstack-Request-Id: req-976a91fd-db41-4c82-bb4d-4d9cb527a3ef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}]} -API ACL Testing Path get /v1/conductors/test-conductor-node -GET: /v1/conductors/test-conductor-node {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d1bd7254-0e6e-4258-ab9f-40dff2a3a84b +Openstack-Request-Id: req-0310ec9c-238b-4af0-a6bd-34ec75f0d651 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"created_at": "2024-01-06T13:38:29.185715+00:00", "updated_at": "2024-01-06T13:38:29.196928+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} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d1bd7254-0e6e-4258-ab9f-40dff2a3a84b +Openstack-Request-Id: req-0310ec9c-238b-4af0-a6bd-34ec75f0d651 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"created_at": "2024-01-06T13:38:29.185715+00:00", "updated_at": "2024-01-06T13:38:29.196928+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} -API ACL Testing Path get /v1/conductors/test-conductor-node -GET: /v1/conductors/test-conductor-node {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-68ca925c-4bb9-4674-801c-6108931b7776 +Openstack-Request-Id: req-7aef0164-984e-45a7-a416-aa723fb6f395 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-68ca925c-4bb9-4674-801c-6108931b7776 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors/test-conductor-node -GET: /v1/conductors/test-conductor-node {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-40798f5e-a20b-4cbc-af55-e738e4b773cb +Openstack-Request-Id: req-7aef0164-984e-45a7-a416-aa723fb6f395 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"created_at": "2024-01-06T13:38:30.458431+00:00", "updated_at": "2024-01-06T13:38:30.461312+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} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-40798f5e-a20b-4cbc-af55-e738e4b773cb +Openstack-Request-Id: req-045aa85a-e292-4096-aaf7-a14850606c46 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"created_at": "2024-01-06T13:38:30.458431+00:00", "updated_at": "2024-01-06T13:38:30.461312+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} -API ACL Testing Path post /v1/allocations -POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d889dfe5-875c-429e-997a-488726f7760c +Openstack-Request-Id: req-045aa85a-e292-4096-aaf7-a14850606c46 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d889dfe5-875c-429e-997a-488726f7760c +Openstack-Request-Id: req-ba2b9704-7c9c-494d-afb7-cf2647f6062f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/allocations -POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-65980e51-ad19-47ce-bb75-db15ba09411a +Openstack-Request-Id: req-ba2b9704-7c9c-494d-afb7-cf2647f6062f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_248_allocations_post_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_248_allocations_post_observer ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_default_noop -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_default_noop ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_092_nodes_traits_trait_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_092_nodes_traits_trait_put_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_checksum_validation_error_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_checksum_validation_error_deploy ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_no_source -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_no_source ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_249_allocations_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_249_allocations_get_admin ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_raises_exception_with_absolute_path -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_raises_exception_with_absolute_path ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_invalid_component_type_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_invalid_component_type_clean ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_093_nodes_traits_trait_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_093_nodes_traits_trait_put_observer ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_invalid_component_type_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_invalid_component_type_deploy ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_exception_on_chmod -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_exception_on_chmod ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_250_allocations_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_250_allocations_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_094_nodes_traits_trait_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_094_nodes_traits_trait_delete_admin ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_exception_on_copy -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_exception_on_copy ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_no_firmware_url_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_no_firmware_url_clean ... ok -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_relative_path -ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_relative_path ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_no_firmware_url_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_no_firmware_url_deploy ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test__get_hash_object -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test__get_hash_object ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_251_allocations_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_251_allocations_get_observer ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test__get_hash_object_throws_for_invalid_or_unsupported_hash_name -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test__get_hash_object_throws_for_invalid_or_unsupported_hash_name ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b9b1132c-8d77-4e73-8325-ee58100b4308 +Openstack-Request-Id: req-03ab6e83-c95d-4c2f-92d2-569e4286b962 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ee8d690b-21f1-42cb-996e-d15ec95bb139 +Openstack-Request-Id: req-03ab6e83-c95d-4c2f-92d2-569e4286b962 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {'enabled': True} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-38d30855-fa44-467d-b0c1-c055fd8402ba +Openstack-Request-Id: req-80ddbfcc-cdd5-4b50-8f8b-3547fb36bbb6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-9714eb74-6b99-4658-af26-d7ea6000105e +Openstack-Request-Id: req-80ddbfcc-cdd5-4b50-8f8b-3547fb36bbb6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {'enabled': True} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6f6c461d-8d72-47b5-bdb4-230bc95a5dd4 +Openstack-Request-Id: req-78cf0c31-84b1-4e4d-9c46-ff429cc26f8e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-f8b1f283-1253-41f4-aef7-cc963b181935 +Openstack-Request-Id: req-78cf0c31-84b1-4e4d-9c46-ff429cc26f8e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {'enabled': True} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_177_lessee_admin_cannot_set_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_177_lessee_admin_cannot_set_console ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_117_portgroups_post_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_117_portgroups_post_reader ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test_inspect_hardware_with_ethernet_interfaces_mac +ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test_inspect_hardware_with_ethernet_interfaces_mac ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_178_lessee_manager_cannot_set_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_178_lessee_manager_cannot_set_console ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__change_physical_disk_state_attribute_error +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__change_physical_disk_state_attribute_error ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_132_nodes_portgroups_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_132_nodes_portgroups_get_observer ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status ... ok +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-06c2a9c2-76af-4e6b-9b83-8922e47e22be +Openstack-Request-Id: req-c16a1f5c-19a6-49bd-8737-9e1cb26f61fe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d8641166-bd27-4b4c-9558-752698d7658f +Openstack-Request-Id: req-929b145a-54a9-43d8-b5e9-a9a05a1e6af1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 404 Not Found +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-993fa505-809e-4544-94c7-aaf3c9ebe2f8 +Openstack-Request-Id: req-929b145a-54a9-43d8-b5e9-a9a05a1e6af1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 404 Not Found +{"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"}]}]} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-534bdfa8-2bf0-4bec-95f3-2fa15252ee5d +Openstack-Request-Id: req-7b6c617b-604b-406b-8f47-26574bbb4c53 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None -GOT:Response: 404 Not Found +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-34630345-f16a-4001-ae0c-e317a0a7ed3a +Openstack-Request-Id: req-7b6c617b-604b-406b-8f47-26574bbb4c53 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None -GOT:Response: 404 Not Found +{"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"}]}]} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-86ab21a5-a4be-45a1-8954-f4a8c2960bf6 +Openstack-Request-Id: req-fc7c9a20-4451-4270-ae70-b1ca3536769b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 None -GOT:Response: 404 Not Found +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-df541569-188d-490d-ac23-40095ed86003 +Openstack-Request-Id: req-fc7c9a20-4451-4270-ae70-b1ca3536769b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 404 Not Found +{"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"}]}]} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-9681ce1e-c1e0-48cd-8119-58406f12f2f8 +Location: http://localhost/v1/portgroups/fe570d6e-a835-440a-abc5-01fe7ecf6e37 +Openstack-Request-Id: req-4b124ddd-ff8a-4cb1-b207-a1e09c36fa71 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_095_nodes_traits_trait_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_095_nodes_traits_trait_delete_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_invalid_update_mode_provided_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_invalid_update_mode_provided_clean ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_differ -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_differ ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_equal -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_equal ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_invalid_update_mode_provided_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_invalid_update_mode_provided_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_252_allocations_allocation_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_252_allocations_allocation_id_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_096_nodes_traits_trait_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_096_nodes_traits_trait_delete_observer ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_equal_not_binary -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_equal_not_binary ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_fips_enabled -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_fips_enabled ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_sum_mode_with_component -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_sum_mode_with_component ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_hostname_safe -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_hostname_safe ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_253_allocations_allocation_id_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_253_allocations_allocation_id_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_097_nodes_vifs_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_097_nodes_vifs_get_admin ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_datapath_id -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_datapath_id ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_logical_name -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_logical_name ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_minimum_password_length -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_minimum_password_length ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_no_proxy -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_no_proxy ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_safe_rstrip -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_safe_rstrip ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_validate -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_validate ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_098_nodes_vifs_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_098_nodes_vifs_get_member ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_safe_rstrip_not_raises_exceptions -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_safe_rstrip_not_raises_exceptions ... ok -ACL Test GOT Response: 403 Forbidden +{"uuid": "fe570d6e-a835-440a-abc5-01fe7ecf6e37", "created_at": "2024-01-06T14:12:56.542587+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/fe570d6e-a835-440a-abc5-01fe7ecf6e37", "rel": "self"}, {"href": "http://localhost/portgroups/fe570d6e-a835-440a-abc5-01fe7ecf6e37", "rel": "bookmark"}], "node_uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "ports": [{"href": "http://localhost/v1/portgroups/fe570d6e-a835-440a-abc5-01fe7ecf6e37/ports", "rel": "self"}, {"href": "http://localhost/portgroups/fe570d6e-a835-440a-abc5-01fe7ecf6e37/ports", "rel": "bookmark"}]} +ACL Test GOT Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-65980e51-ad19-47ce-bb75-db15ba09411a +Location: http://localhost/v1/portgroups/fe570d6e-a835-440a-abc5-01fe7ecf6e37 +Openstack-Request-Id: req-4b124ddd-ff8a-4cb1-b207-a1e09c36fa71 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations -GET: /v1/allocations {} -GOT:Response: 200 OK +{"uuid": "fe570d6e-a835-440a-abc5-01fe7ecf6e37", "created_at": "2024-01-06T14:12:56.542587+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/fe570d6e-a835-440a-abc5-01fe7ecf6e37", "rel": "self"}, {"href": "http://localhost/portgroups/fe570d6e-a835-440a-abc5-01fe7ecf6e37", "rel": "bookmark"}], "node_uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "ports": [{"href": "http://localhost/v1/portgroups/fe570d6e-a835-440a-abc5-01fe7ecf6e37/ports", "rel": "self"}, {"href": "http://localhost/portgroups/fe570d6e-a835-440a-abc5-01fe7ecf6e37/ports", "rel": "bookmark"}]} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-797bae25-75f4-4b80-8827-19ee5cd195d9 +Openstack-Request-Id: req-854c3703-5745-4c2c-8df6-0a1e4b6e5171 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "47c39b55-a699-4b05-ab29-9c9431d1d5da", "created_at": "2024-01-06T13:38:32.916688+00:00", "updated_at": "2024-01-06T13:38:32.974298+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/47c39b55-a699-4b05-ab29-9c9431d1d5da", "rel": "self"}, {"href": "http://localhost/allocations/47c39b55-a699-4b05-ab29-9c9431d1d5da", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-797bae25-75f4-4b80-8827-19ee5cd195d9 +Openstack-Request-Id: req-854c3703-5745-4c2c-8df6-0a1e4b6e5171 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "47c39b55-a699-4b05-ab29-9c9431d1d5da", "created_at": "2024-01-06T13:38:32.916688+00:00", "updated_at": "2024-01-06T13:38:32.974298+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/47c39b55-a699-4b05-ab29-9c9431d1d5da", "rel": "self"}, {"href": "http://localhost/allocations/47c39b55-a699-4b05-ab29-9c9431d1d5da", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} -API ACL Testing Path get /v1/allocations -GET: /v1/allocations {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-57e5535f-4c5c-4389-a7a6-b57fbf91ee19 +Openstack-Request-Id: req-b283c2e8-9fd0-4983-b845-9485ae9881d4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-57e5535f-4c5c-4389-a7a6-b57fbf91ee19 +Openstack-Request-Id: req-b283c2e8-9fd0-4983-b845-9485ae9881d4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations -GET: /v1/allocations {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_118_portgroups_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_118_portgroups_detail_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_179_owner_member_can_set_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_179_owner_member_can_set_console ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_119_portgroups_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_119_portgroups_detail_get_member ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_convert_controller +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_convert_controller ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_133_nodes_portgroups_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_133_nodes_portgroups_detail_get_admin ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_task_failed +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_task_failed ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_180_lessee_member_cannot_set_console +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_180_lessee_member_cannot_set_console ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_120_portgroups_detail_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_120_portgroups_detail_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_134_nodes_portgroups_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_134_nodes_portgroups_detail_get_member ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_task_still_processing +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_task_still_processing ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_181_owner_admin_cannot_get_vendor_passthru_methods +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_181_owner_admin_cannot_get_vendor_passthru_methods ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__clear_foreign_config_attribute_error +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__clear_foreign_config_attribute_error ... ok +API ACL Testing Path get /v1/portgroups/detail +GET: /v1/portgroups/detail {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5e137e0f-ee72-4d20-9252-0672a4ff5fd4 +Openstack-Request-Id: req-ba86c24b-c41f-46e1-a4ef-e0f8aa07373c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "fdd62114-cd37-4df9-9bf4-77864c65867f", "created_at": "2024-01-06T13:38:34.344804+00:00", "updated_at": "2024-01-06T13:38:34.398712+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/fdd62114-cd37-4df9-9bf4-77864c65867f", "rel": "self"}, {"href": "http://localhost/allocations/fdd62114-cd37-4df9-9bf4-77864c65867f", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:12:57.354735+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5e137e0f-ee72-4d20-9252-0672a4ff5fd4 +Openstack-Request-Id: req-ba86c24b-c41f-46e1-a4ef-e0f8aa07373c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "fdd62114-cd37-4df9-9bf4-77864c65867f", "created_at": "2024-01-06T13:38:34.344804+00:00", "updated_at": "2024-01-06T13:38:34.398712+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/fdd62114-cd37-4df9-9bf4-77864c65867f", "rel": "self"}, {"href": "http://localhost/allocations/fdd62114-cd37-4df9-9bf4-77864c65867f", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} -API ACL Testing Path get /v1/allocations/8ef96402-76b7-419e-a07d-d83942cfc163 -GET: /v1/allocations/8ef96402-76b7-419e-a07d-d83942cfc163 {} +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:12:57.354735+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +API ACL Testing Path get /v1/portgroups/detail +GET: /v1/portgroups/detail {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-bf0a9049-59d1-4062-b4e1-712e8211d0a5 +Openstack-Request-Id: req-f401fb07-3e2f-4d9c-835f-3715ee7e27fa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "8ef96402-76b7-419e-a07d-d83942cfc163", "created_at": "2024-01-06T13:38:35.044265+00:00", "updated_at": "2024-01-06T13:38:35.083175+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/8ef96402-76b7-419e-a07d-d83942cfc163", "rel": "self"}, {"href": "http://localhost/allocations/8ef96402-76b7-419e-a07d-d83942cfc163", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:12:57.573309+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-bf0a9049-59d1-4062-b4e1-712e8211d0a5 +Openstack-Request-Id: req-f401fb07-3e2f-4d9c-835f-3715ee7e27fa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "8ef96402-76b7-419e-a07d-d83942cfc163", "created_at": "2024-01-06T13:38:35.044265+00:00", "updated_at": "2024-01-06T13:38:35.083175+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/8ef96402-76b7-419e-a07d-d83942cfc163", "rel": "self"}, {"href": "http://localhost/allocations/8ef96402-76b7-419e-a07d-d83942cfc163", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -API ACL Testing Path get /v1/allocations/8e6ea857-e8c3-4417-be08-ca57b1f162ed -GET: /v1/allocations/8e6ea857-e8c3-4417-be08-ca57b1f162ed {} -GOT:Response: 404 Not Found +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:12:57.573309+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +API ACL Testing Path get /v1/portgroups/detail +GET: /v1/portgroups/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-28665e30-03c1-494c-98ae-53f4cc1a1cfc +Openstack-Request-Id: req-4d8e617c-e191-42aa-a2fb-d5c7d9141fb3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 8e6ea857-e8c3-4417-be08-ca57b1f162ed could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:12:57.808732+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-28665e30-03c1-494c-98ae-53f4cc1a1cfc +Openstack-Request-Id: req-4d8e617c-e191-42aa-a2fb-d5c7d9141fb3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 8e6ea857-e8c3-4417-be08-ca57b1f162ed could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations/57d98a24-93b8-4cc9-a297-b4a063ac6ad9 -GET: /v1/allocations/57d98a24-93b8-4cc9-a297-b4a063ac6ad9 {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_254_allocations_allocation_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_254_allocations_allocation_id_get_observer ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_unix_file_modification_datetime -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_unix_file_modification_datetime ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_invalid_component_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_invalid_component_clean ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_datapath_id -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_datapath_id ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_invalid_component_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_invalid_component_deploy ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_mac -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_mac ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_099_nodes_vifs_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_099_nodes_vifs_get_observer ... ok -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_mac_invalid_format -ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_mac_invalid_format ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_255_allocations_allocation_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_255_allocations_allocation_id_patch_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_swift_url_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_swift_url_clean ... ok -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_name_match_first -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_name_match_first ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_100_nodes_vifs_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_100_nodes_vifs_post_admin ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_swift_url_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_swift_url_deploy ... ok -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_candidates_do_not_match -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_candidates_do_not_match ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_256_allocations_allocation_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_256_allocations_allocation_id_patch_member ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_without_component_clean -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_without_component_clean ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_101_nodes_vifs_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_101_nodes_vifs_post_member ... ok -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_changed_after_lock -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_changed_after_lock ... ok -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_without_component_deploy -ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_without_component_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_257_allocations_allocation_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_257_allocations_allocation_id_patch_observer ... ok -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_filtered_out -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_filtered_out ... ok -ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_default_interfaces -ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_default_interfaces ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_102_nodes_vifs_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_102_nodes_vifs_post_observer ... ok -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_filtered_out_project -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_filtered_out_project ... ok -ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_agent_rescue -ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_agent_rescue ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_258_allocations_allocation_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_258_allocations_allocation_id_delete_admin ... ok -ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_cinder_storage -ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_cinder_storage ... ok -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_locked -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_locked ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_103_nodes_vifs_node_vif_ident_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_103_nodes_vifs_node_vif_ident_delete_admin ... ok -ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_shellinabox -ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_shellinabox ... ok -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_success -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_success ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_259_allocations_allocation_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_259_allocations_allocation_id_delete_member ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_cd_fail -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_cd_fail ... ok -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_with_candidates -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_with_candidates ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_cd_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_cd_ok ... ok +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:12:57.808732+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4eb94f64-c269-436b-b6b8-9557c23c6415 +Openstack-Request-Id: req-b1c804c1-9afb-4d47-96c0-0a9d880c3f43 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "57d98a24-93b8-4cc9-a297-b4a063ac6ad9", "created_at": "2024-01-06T13:38:36.363285+00:00", "updated_at": "2024-01-06T13:38:36.410541+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/57d98a24-93b8-4cc9-a297-b4a063ac6ad9", "rel": "self"}, {"href": "http://localhost/allocations/57d98a24-93b8-4cc9-a297-b4a063ac6ad9", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -ACL Test GOT Response: 200 OK +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:12:58.035397+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_121_portgroups_portgroup_ident_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_121_portgroups_portgroup_ident_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_135_nodes_portgroups_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_135_nodes_portgroups_detail_get_observer ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_182_owner_manager_cannot_get_vendor_passthru_methods +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_182_owner_manager_cannot_get_vendor_passthru_methods ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_no_conversion +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_no_conversion ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_122_portgroups_portgroup_ident_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_122_portgroups_portgroup_ident_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_136_ports_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_136_ports_get_admin ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_not_raid +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_not_raid ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_183_owner_member_cannot_get_vendor_passthru_methods +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_183_owner_member_cannot_get_vendor_passthru_methods ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_123_portgroups_portgroup_ident_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_123_portgroups_portgroup_ident_get_reader ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_idrac +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_idrac ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_137_ports_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_137_ports_get_member ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_sushy +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_sushy ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_184_owner_reader_cannot_get_vendor_passthru_methods +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_184_owner_reader_cannot_get_vendor_passthru_methods ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_124_portgroups_portgroup_ident_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_124_portgroups_portgroup_ident_patch_admin ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-4eb94f64-c269-436b-b6b8-9557c23c6415 +Openstack-Request-Id: req-1a4c69dc-d706-47d6-a464-ab87653eb256 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "57d98a24-93b8-4cc9-a297-b4a063ac6ad9", "created_at": "2024-01-06T13:38:36.363285+00:00", "updated_at": "2024-01-06T13:38:36.410541+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/57d98a24-93b8-4cc9-a297-b4a063ac6ad9", "rel": "self"}, {"href": "http://localhost/allocations/57d98a24-93b8-4cc9-a297-b4a063ac6ad9", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -API ACL Testing Path patch /v1/allocations/bb7e35d4-70a1-472e-ab1f-7f8dea9f5a87 -PATCH: /v1/allocations/bb7e35d4-70a1-472e-ab1f-7f8dea9f5a87 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c687fe62-797c-4c97-9b3d-e1ffe119ec12 +Openstack-Request-Id: req-d3655873-0a77-48ab-8967-15df82680d09 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "bb7e35d4-70a1-472e-ab1f-7f8dea9f5a87", "created_at": "2024-01-06T13:38:37.336733+00:00", "updated_at": "2024-01-06T13:38:37.713883+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/bb7e35d4-70a1-472e-ab1f-7f8dea9f5a87", "rel": "self"}, {"href": "http://localhost/allocations/bb7e35d4-70a1-472e-ab1f-7f8dea9f5a87", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c687fe62-797c-4c97-9b3d-e1ffe119ec12 +Openstack-Request-Id: req-f87263de-a11c-43fe-bd43-e92466cedc13 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "bb7e35d4-70a1-472e-ab1f-7f8dea9f5a87", "created_at": "2024-01-06T13:38:37.336733+00:00", "updated_at": "2024-01-06T13:38:37.713883+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/bb7e35d4-70a1-472e-ab1f-7f8dea9f5a87", "rel": "self"}, {"href": "http://localhost/allocations/bb7e35d4-70a1-472e-ab1f-7f8dea9f5a87", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -API ACL Testing Path patch /v1/allocations/7d46dae0-b1ae-4483-bff6-bf8134b3027b -PATCH: /v1/allocations/7d46dae0-b1ae-4483-bff6-bf8134b3027b [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-94a546da-e51f-4584-aed1-be03a2b88010 +Openstack-Request-Id: req-736377ac-b0fd-4375-b516-554b2adeb06e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 7d46dae0-b1ae-4483-bff6-bf8134b3027b could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-94a546da-e51f-4584-aed1-be03a2b88010 +Openstack-Request-Id: req-30ee139b-a7f8-4014-a0f0-ea6a1a543d83 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 7d46dae0-b1ae-4483-bff6-bf8134b3027b could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/allocations/fbacc2eb-83db-4205-88a5-2004fbc47d51 -PATCH: /v1/allocations/fbacc2eb-83db-4205-88a5-2004fbc47d51 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-97e07e2e-50ea-4323-9ef9-632243978fbf +Openstack-Request-Id: req-4bee4661-6943-4823-860e-4172cebdd450 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:update\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-97e07e2e-50ea-4323-9ef9-632243978fbf +Openstack-Request-Id: req-cb150a5c-f9cd-420f-a179-614552eddbab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:update\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/a006a2c9-61c4-446c-9919-0b31faa69e0c -DELETE: /v1/allocations/a006a2c9-61c4-446c-9919-0b31faa69e0c -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-588beae9-f05e-47c1-a49f-15b7604d1ba1 +Openstack-Request-Id: req-4354bea5-df6f-499d-963d-f8efc9ede287 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-588beae9-f05e-47c1-a49f-15b7604d1ba1 +Openstack-Request-Id: req-0f6a63a1-bb05-45c8-b4a3-009a263b01b9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/486b3afa-0c63-466b-94cf-bb1dad8fbec3 -DELETE: /v1/allocations/486b3afa-0c63-466b-94cf-bb1dad8fbec3 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5106ca65-a05f-4bc3-a26b-2edde34f49e0 +Openstack-Request-Id: req-8cad9d46-0c60-4647-be90-a53e113c8398 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 486b3afa-0c63-466b-94cf-bb1dad8fbec3 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5106ca65-a05f-4bc3-a26b-2edde34f49e0 +Openstack-Request-Id: req-4a9d6096-3ba1-48c2-a819-fb6f512786af X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 486b3afa-0c63-466b-94cf-bb1dad8fbec3 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/960c2a6a-68d8-48be-912b-e2f4aa72caca -DELETE: /v1/allocations/960c2a6a-68d8-48be-912b-e2f4aa72caca -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e8c11aa8-07f1-4054-8194-99f431f4910a +Openstack-Request-Id: req-8450ca7f-eb5b-43f8-8bd8-70f0c86c6966 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_260_allocations_allocation_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_260_allocations_allocation_id_delete_observer ... ok -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_with_traits -ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_with_traits ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_fd_fail -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_fd_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_261_nodes_allocation_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_261_nodes_allocation_get_admin ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_bad_step_return_value -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_bad_step_return_value ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_fd_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_fd_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_104_nodes_vifs_node_vif_ident_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_104_nodes_vifs_node_vif_ident_delete_member ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__cleanup_vmedia_boot_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__cleanup_vmedia_boot_ok ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_execute_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_execute_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_262_nodes_allocation_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_262_nodes_allocation_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_105_nodes_vifs_node_vif_ident_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_105_nodes_vifs_node_vif_ident_delete_observer ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_cd_fail -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_cd_fail ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_fail_in_tear_down_cleaning -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_fail_in_tear_down_cleaning ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_cd_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_cd_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_263_nodes_allocation_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_263_nodes_allocation_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_106_nodes_management_indicators_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_106_nodes_management_indicators_get_admin ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_last_step_noop -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_last_step_noop ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_fd_fail -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_fd_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_264_nodes_allocation_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_264_nodes_allocation_delete_admin ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_fd_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_fd_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_107_nodes_management_indicators_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_107_nodes_management_indicators_get_member ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_no_steps -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_no_steps ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__get_floppy_image_name -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__get_floppy_image_name ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__get_iso_name -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__get_iso_name ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_108_nodes_management_indicators_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_108_nodes_management_indicators_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_265_nodes_allocation_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_265_nodes_allocation_delete_member ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_fast_track -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_fast_track ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_config_option -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_config_option ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_config_option_non_existed_root -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_config_option_non_existed_root ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_last_step_noop_fast_track -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_last_step_noop_fast_track ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_109_nodes_management_indicators_component_get_allow -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.' -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_deprecated -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_deprecated ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_266_nodes_allocation_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_266_nodes_allocation_delete_observer ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_in_share -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_in_share ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_bad_step_return_value -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_bad_step_return_value ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_110_nodes_management_indicators_component_ind_ident_get_allow -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.' -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params_in_conf -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params_in_conf ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_execute_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_execute_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_111_nodes_management_indicators_component_ind_ident_put_allow -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.' -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params_in_driver_info -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params_in_driver_info ... ok -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e8c11aa8-07f1-4054-8194-99f431f4910a +Openstack-Request-Id: req-5f567919-d37d-4f6a-a415-9f305f2912ea X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports +GET: /v1/ports {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8a0683c2-d67e-4037-bcf5-9cb7c97a71fe +Openstack-Request-Id: req-73066738-8930-4630-bbac-7abf12cf6a4e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f070653d-9ab7-4f40-a476-f8e83dcf17bc", "created_at": "2024-01-06T13:38:41.436714+00:00", "updated_at": "2024-01-06T13:38:41.492363+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/f070653d-9ab7-4f40-a476-f8e83dcf17bc", "rel": "self"}, {"href": "http://localhost/allocations/f070653d-9ab7-4f40-a476-f8e83dcf17bc", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports +GET: /v1/ports {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8a0683c2-d67e-4037-bcf5-9cb7c97a71fe +Openstack-Request-Id: req-e794ede3-d8b2-4c12-950f-54adf6544dfe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "f070653d-9ab7-4f40-a476-f8e83dcf17bc", "created_at": "2024-01-06T13:38:41.436714+00:00", "updated_at": "2024-01-06T13:38:41.492363+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/f070653d-9ab7-4f40-a476-f8e83dcf17bc", "rel": "self"}, {"href": "http://localhost/allocations/f070653d-9ab7-4f40-a476-f8e83dcf17bc", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_138_ports_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_138_ports_get_observer ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_sushy_oem +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_sushy_oem ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__get_storage_controller_invalid_identity +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__get_storage_controller_invalid_identity ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_139_ports_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_139_ports_post_admin ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-09c9dc7f-9c95-4ae9-b6db-6487ca4f0922 +Openstack-Request-Id: req-0c39c803-c4ba-46d4-ac40-82e3c3e24f68 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-09c9dc7f-9c95-4ae9-b6db-6487ca4f0922 +Openstack-Request-Id: req-0c39c803-c4ba-46d4-ac40-82e3c3e24f68 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {'enabled': True} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-956d62ec-79fc-49db-aa5a-5e3ad5c445d4 +Openstack-Request-Id: req-6fb93c90-34bd-4cfc-ad41-76ac8cfc2b3e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "357fd2cc-b9c9-4ba6-8dd2-17b0306f1677", "created_at": "2024-01-06T13:38:42.984999+00:00", "updated_at": "2024-01-06T13:38:43.038055+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/357fd2cc-b9c9-4ba6-8dd2-17b0306f1677", "rel": "self"}, {"href": "http://localhost/allocations/357fd2cc-b9c9-4ba6-8dd2-17b0306f1677", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-956d62ec-79fc-49db-aa5a-5e3ad5c445d4 +Openstack-Request-Id: req-6fb93c90-34bd-4cfc-ad41-76ac8cfc2b3e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "357fd2cc-b9c9-4ba6-8dd2-17b0306f1677", "created_at": "2024-01-06T13:38:42.984999+00:00", "updated_at": "2024-01-06T13:38:43.038055+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/357fd2cc-b9c9-4ba6-8dd2-17b0306f1677", "rel": "self"}, {"href": "http://localhost/allocations/357fd2cc-b9c9-4ba6-8dd2-17b0306f1677", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} -API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {'enabled': True} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-496e60fb-c45e-4042-92fd-d05d845e1bb2 +Openstack-Request-Id: req-5aea8a18-3c8e-43db-8cb6-117140b082c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-496e60fb-c45e-4042-92fd-d05d845e1bb2 +Openstack-Request-Id: req-5aea8a18-3c8e-43db-8cb6-117140b082c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GOT:Response: 404 Not Found +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {'enabled': True} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-08a72dba-09ba-4a26-bebb-4ab3f7c89cfc +Openstack-Request-Id: req-29a7b9ae-9345-46ee-a1eb-1b0f20662e6c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-08a72dba-09ba-4a26-bebb-4ab3f7c89cfc +Openstack-Request-Id: req-29a7b9ae-9345-46ee-a1eb-1b0f20662e6c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4a886ab9-09a9-4d4f-8917-41ef209b39a7 +Openstack-Request-Id: req-618c0365-1157-47bd-bf59-1fd9a5f046fc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4a886ab9-09a9-4d4f-8917-41ef209b39a7 +Openstack-Request-Id: req-618c0365-1157-47bd-bf59-1fd9a5f046fc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/deploy_templates -POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_267_deploy_templates_post_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_267_deploy_templates_post_admin ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_not_in_share -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_not_in_share ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_fail_in_tear_down_cleaning -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_fail_in_tear_down_cleaning ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_268_deploy_templates_post_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_268_deploy_templates_post_member ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_with_iso_invalid -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_with_iso_invalid ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_last_step_noop -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_last_step_noop ... ok -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-61621103-682c-4e38-aa12-e9dbab348ef7 +Openstack-Request-Id: req-9acd8724-1305-4fd2-ac96-08dd54b8730d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ad214662-6b9b-4054-a15d-2eb6a4051758 +Openstack-Request-Id: req-9acd8724-1305-4fd2-ac96-08dd54b8730d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d0c3950b-df77-4f6f-ad84-6ee6f9685406 +Openstack-Request-Id: req-5aca3d73-270f-48b4-a1d1-7fc335776ad2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-55663677-8d48-401a-9d80-0e58f45ab1f3 +Openstack-Request-Id: req-5aca3d73-270f-48b4-a1d1-7fc335776ad2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bed0afbd-46cd-465d-a572-f1c5c15bd273 +Openstack-Request-Id: req-3334863f-affa-412c-b2df-58360cacbacf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a9c1b560-7a95-457f-81a5-6a09dddf6714 +Openstack-Request-Id: req-3334863f-affa-412c-b2df-58360cacbacf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods {} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_185_lessee_admin_cannot_get_vendor_passthru_methods +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_185_lessee_admin_cannot_get_vendor_passthru_methods ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__is_realtime_ready +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__is_realtime_ready ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_125_portgroups_portgroup_ident_patch_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_125_portgroups_portgroup_ident_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_186_lessee_manager_cannot_get_vendor_passthru_methods +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_186_lessee_manager_cannot_get_vendor_passthru_methods ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__query_raid_tasks_status +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__query_raid_tasks_status ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_140_ports_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_140_ports_post_member ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__query_raid_tasks_status_no_task_monitor_url +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__query_raid_tasks_status_no_task_monitor_url ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-059260ff-6f60-40ef-8dc9-30a2e8897b45 +Openstack-Request-Id: req-b1c804c1-9afb-4d47-96c0-0a9d880c3f43 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs -POST: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 404 Not Found +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:12:58.035397+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-32462d71-dd43-47d7-9170-49a12d4be47a +Openstack-Request-Id: req-f433e590-c4cf-4d34-910b-3cb7b2317a63 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -GOT:Response: 404 Not Found +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:12:58.308820+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1cefcdf9-76e2-4520-9920-029f0bbb2cc0 +Openstack-Request-Id: req-f433e590-c4cf-4d34-910b-3cb7b2317a63 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -GOT:Response: 404 Not Found +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:12:58.308820+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-22aecf69-12f5-4d6d-ac96-88b01b58d2ea +Openstack-Request-Id: req-464c40dc-869e-45a2-80bd-0b000af1ebed X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 -GOT:Response: 404 Not Found +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:12:58.537631+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b5ac4884-5581-489c-adc0-5b3fbe632803 +Openstack-Request-Id: req-464c40dc-869e-45a2-80bd-0b000af1ebed X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} -GOT:Response: 404 Not Found +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:12:58.537631+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-692b3178-ea82-4f8a-978a-962277594e82 +Openstack-Request-Id: req-3b1d2ad7-585b-4bc6-a0ca-b53523ea7e9f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d7a88d4e-de5f-411d-8406-00da9dcd42d1 +Openstack-Request-Id: req-3b1d2ad7-585b-4bc6-a0ca-b53523ea7e9f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3ff00c29-e45f-4dab-8564-6515187bc5da +Openstack-Request-Id: req-41e10633-da6a-4e98-ab03-5575e8b37f68 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_112_portgroups_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_112_portgroups_get_admin ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_with_iso_missing -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_with_iso_missing ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_deprecated -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_deprecated ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_269_deploy_templates_post_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_269_deploy_templates_post_observer ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_no_steps -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_no_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_113_portgroups_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_113_portgroups_get_member ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_file_name_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_file_name_ok ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_retired_last_step_change_tgt_state -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_retired_last_step_change_tgt_state ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_file_url_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_file_url_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_270_deploy_templates_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_270_deploy_templates_get_admin ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_glance_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_glance_ok ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_114_portgroups_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_114_portgroups_get_observer ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_http_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_http_ok ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_https_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_https_ok ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_271_deploy_templates_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_271_deploy_templates_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_115_portgroups_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_115_portgroups_post_admin ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_invalid -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_invalid ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios_exception -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios_exception ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_uuid_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_uuid_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_272_deploy_templates_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_272_deploy_templates_get_observer ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_without_boot_iso_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_without_boot_iso_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_116_portgroups_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_116_portgroups_post_member ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios_unsupported -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios_unsupported ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_create_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_create_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_117_portgroups_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_117_portgroups_post_observer ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled ... ok -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Location: http://localhost/v1/deploy_templates/595b15ff-23ed-461a-8744-c35c53fe4def -Openstack-Request-Id: req-9c7d3df3-7fab-4221-9dde-99687b2d5fa8 +Openstack-Request-Id: req-41e10633-da6a-4e98-ab03-5575e8b37f68 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "595b15ff-23ed-461a-8744-c35c53fe4def", "created_at": "2024-01-06T13:38:46.350662+00:00", "updated_at": null, "name": "CUSTOM_TEST_TEMPLATE", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/595b15ff-23ed-461a-8744-c35c53fe4def", "rel": "self"}, {"href": "http://localhost/deploy_templates/595b15ff-23ed-461a-8744-c35c53fe4def", "rel": "bookmark"}], "steps": [{"interface": "deploy", "step": "noop", "args": {}, "priority": 0}]} -ACL Test GOT Response: 201 Created +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Location: http://localhost/v1/deploy_templates/595b15ff-23ed-461a-8744-c35c53fe4def -Openstack-Request-Id: req-9c7d3df3-7fab-4221-9dde-99687b2d5fa8 +Openstack-Request-Id: req-adcedbfa-2caf-4b5f-afd7-986f3bed356b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "595b15ff-23ed-461a-8744-c35c53fe4def", "created_at": "2024-01-06T13:38:46.350662+00:00", "updated_at": null, "name": "CUSTOM_TEST_TEMPLATE", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/595b15ff-23ed-461a-8744-c35c53fe4def", "rel": "self"}, {"href": "http://localhost/deploy_templates/595b15ff-23ed-461a-8744-c35c53fe4def", "rel": "bookmark"}], "steps": [{"interface": "deploy", "step": "noop", "args": {}, "priority": 0}]} -API ACL Testing Path post /v1/deploy_templates -POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_126_portgroups_portgroup_ident_patch_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_126_portgroups_portgroup_ident_patch_reader ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_187_lessee_member_cannot_get_vendor_passthru_methods +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_187_lessee_member_cannot_get_vendor_passthru_methods ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready_retry_exceeded +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready_retry_exceeded ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_141_ports_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_141_ports_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_127_portgroups_portgroup_ident_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_127_portgroups_portgroup_ident_delete_admin ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready_retry_fails +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready_retry_fails ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_188_lessee_reader_cannot_get_vendor_passthru_methods +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_188_lessee_reader_cannot_get_vendor_passthru_methods ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_142_ports_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_142_ports_detail_get_admin ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_failed_clean +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_failed_clean ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_128_portgroups_portgroup_ident_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_128_portgroups_portgroup_ident_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_189_owner_admin_cannot_get_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_189_owner_admin_cannot_get_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_failed_deploy +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_failed_deploy ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_143_ports_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_143_ports_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_129_portgroups_portgroup_ident_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_129_portgroups_portgroup_ident_delete_reader ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_success_clean +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_success_clean ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_144_ports_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_144_ports_detail_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_190_owner_manager_cannot_get_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_190_owner_manager_cannot_get_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_success_deploy +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_success_deploy ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_130_nodes_portgroups_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_130_nodes_portgroups_get_admin ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__wait_till_realtime_ready +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__wait_till_realtime_ready ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_145_ports_port_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_145_ports_port_id_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_191_owner_member_cannot_get_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_191_owner_member_cannot_get_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__wait_till_realtime_ready_retryerror +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__wait_till_realtime_ready_retryerror ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_131_nodes_portgroups_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_131_nodes_portgroups_get_member ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_create_configuration +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_create_configuration ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_146_ports_port_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_146_ports_port_id_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_192_owner_reader_cannot_get_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_192_owner_reader_cannot_get_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_delete_configuration +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_delete_configuration ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_132_nodes_portgroups_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_132_nodes_portgroups_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_147_ports_port_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_147_ports_port_id_get_observer ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_foreign_async +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_foreign_async ... ok GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bdcd791d-0327-4b97-a3a8-21b0ef841360 +Openstack-Request-Id: req-a8d81db3-1a95-4d0b-9f27-b9fdea4edc04 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bdcd791d-0327-4b97-a3a8-21b0ef841360 +Openstack-Request-Id: req-a8d81db3-1a95-4d0b-9f27-b9fdea4edc04 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/deploy_templates -POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1131f269-95a7-49bc-b84c-84a972c233d4 +Openstack-Request-Id: req-f579b327-c24b-404b-b5a1-df37949eb9df X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1131f269-95a7-49bc-b84c-84a972c233d4 +Openstack-Request-Id: req-f579b327-c24b-404b-b5a1-df37949eb9df X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates -GET: /v1/deploy_templates {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fea7db86-0a73-4608-9327-76179d2dfe44 +Openstack-Request-Id: req-cef7c09f-e709-4b9f-b253-9a8a76222721 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"deploy_templates": [{"uuid": "0d8114d2-26a3-4534-888e-c4040669c591", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/0d8114d2-26a3-4534-888e-c4040669c591", "rel": "self"}, {"href": "http://localhost/deploy_templates/0d8114d2-26a3-4534-888e-c4040669c591", "rel": "bookmark"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fea7db86-0a73-4608-9327-76179d2dfe44 +Openstack-Request-Id: req-cef7c09f-e709-4b9f-b253-9a8a76222721 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"deploy_templates": [{"uuid": "0d8114d2-26a3-4534-888e-c4040669c591", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/0d8114d2-26a3-4534-888e-c4040669c591", "rel": "self"}, {"href": "http://localhost/deploy_templates/0d8114d2-26a3-4534-888e-c4040669c591", "rel": "bookmark"}]}]} -API ACL Testing Path get /v1/deploy_templates -GET: /v1/deploy_templates {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7b0bda93-a947-4a38-ac99-8100f0da026b +Openstack-Request-Id: req-0a3bd48c-1a83-4752-8b8c-caec020ce565 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7b0bda93-a947-4a38-ac99-8100f0da026b +Openstack-Request-Id: req-0a3bd48c-1a83-4752-8b8c-caec020ce565 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates -GET: /v1/deploy_templates {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-db60c584-3b56-4f1b-9690-c7f6fbb7927c +Openstack-Request-Id: req-97286c48-f7b0-4e16-989f-a56daacc452c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"deploy_templates": [{"uuid": "65e3ef0d-8286-4684-8a3c-635d90a8783c", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/65e3ef0d-8286-4684-8a3c-635d90a8783c", "rel": "self"}, {"href": "http://localhost/deploy_templates/65e3ef0d-8286-4684-8a3c-635d90a8783c", "rel": "bookmark"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-db60c584-3b56-4f1b-9690-c7f6fbb7927c +Openstack-Request-Id: req-97286c48-f7b0-4e16-989f-a56daacc452c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"deploy_templates": [{"uuid": "65e3ef0d-8286-4684-8a3c-635d90a8783c", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/65e3ef0d-8286-4684-8a3c-635d90a8783c", "rel": "self"}, {"href": "http://localhost/deploy_templates/65e3ef0d-8286-4684-8a3c-635d90a8783c", "rel": "bookmark"}]}]} -API ACL Testing Path get /v1/deploy_templates/0f530f27-41d3-45e9-a18f-d644d0c12e8d -GET: /v1/deploy_templates/0f530f27-41d3-45e9-a18f-d644d0c12e8d {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2827b5a1-6daf-4866-a97b-a5310394919a +Openstack-Request-Id: req-b0c195ef-40e5-456e-8297-482f225be14f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "0f530f27-41d3-45e9-a18f-d644d0c12e8d", "created_at": "2024-01-06T13:38:50.455157+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/0f530f27-41d3-45e9-a18f-d644d0c12e8d", "rel": "self"}, {"href": "http://localhost/deploy_templates/0f530f27-41d3-45e9-a18f-d644d0c12e8d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_273_deploy_templates_deploy_template_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_273_deploy_templates_deploy_template_id_get_admin ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_fetch_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_fetch_ok ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled_individual_disabled -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled_individual_disabled ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_file -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_file ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_274_deploy_templates_deploy_template_id_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_274_deploy_templates_deploy_template_id_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_118_portgroups_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_118_portgroups_detail_get_admin ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled_individual_enabled -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled_individual_enabled ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_floppy_image -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_floppy_image ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_119_portgroups_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_119_portgroups_detail_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_275_deploy_templates_deploy_template_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_275_deploy_templates_deploy_template_id_get_observer ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_floppy_image_exception -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_floppy_image_exception ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_disabled -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_disabled ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__remove_share_file -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__remove_share_file ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_120_portgroups_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_120_portgroups_detail_get_observer ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_enabled -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_enabled ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_for_boot_with_parameters -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_for_boot_with_parameters ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_276_deploy_templates_deploy_template_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_276_deploy_templates_deploy_template_id_patch_admin ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_none -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_none ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_for_boot_without_parameters -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_for_boot_without_parameters ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_121_portgroups_portgroup_ident_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_121_portgroups_portgroup_ident_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_277_deploy_templates_deploy_template_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_277_deploy_templates_deploy_template_id_patch_member ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_with_file_deploy -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_with_file_deploy ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_network_validate_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_network_validate_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_with_file_rescue -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_with_file_rescue ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_122_portgroups_portgroup_ident_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_122_portgroups_portgroup_ident_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_278_deploy_templates_deploy_template_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_278_deploy_templates_deploy_template_id_patch_observer ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_power_validate_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_power_validate_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_123_portgroups_portgroup_ident_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_123_portgroups_portgroup_ident_get_observer ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed_deprecated -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed_deprecated ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_prepare_clean_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_prepare_clean_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_279_deploy_templates_deploy_template_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_279_deploy_templates_deploy_template_id_delete_admin ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed_on_rebuild -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed_on_rebuild ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_prepare_clean_wait -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_prepare_clean_wait ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_124_portgroups_portgroup_ident_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_124_portgroups_portgroup_ident_patch_admin ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_check_share_fs_mounted_exception -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_check_share_fs_mounted_exception ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_check_share_fs_mounted_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_check_share_fs_mounted_ok ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_steps_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_steps_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_parse_deploy_info_ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_parse_deploy_info_ok ... ok -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2827b5a1-6daf-4866-a97b-a5310394919a +Openstack-Request-Id: req-b0c195ef-40e5-456e-8297-482f225be14f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "0f530f27-41d3-45e9-a18f-d644d0c12e8d", "created_at": "2024-01-06T13:38:50.455157+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/0f530f27-41d3-45e9-a18f-d644d0c12e8d", "rel": "self"}, {"href": "http://localhost/deploy_templates/0f530f27-41d3-45e9-a18f-d644d0c12e8d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -API ACL Testing Path get /v1/deploy_templates/4f1f0f6d-8574-492c-b055-f2e254c590b9 -GET: /v1/deploy_templates/4f1f0f6d-8574-492c-b055-f2e254c590b9 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f28447c7-c76e-480d-b837-dacd1c3168d9 +Openstack-Request-Id: req-7c1a35c5-02f5-4a6c-b967-e95546025dfd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f28447c7-c76e-480d-b837-dacd1c3168d9 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates/ea4e0a06-9514-4cc7-8e29-448d9bcdb581 -GET: /v1/deploy_templates/ea4e0a06-9514-4cc7-8e29-448d9bcdb581 {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-92dd0039-b61d-4954-89f2-b7e8d617096a +Openstack-Request-Id: req-7c1a35c5-02f5-4a6c-b967-e95546025dfd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "ea4e0a06-9514-4cc7-8e29-448d9bcdb581", "created_at": "2024-01-06T13:38:51.890630+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/ea4e0a06-9514-4cc7-8e29-448d9bcdb581", "rel": "self"}, {"href": "http://localhost/deploy_templates/ea4e0a06-9514-4cc7-8e29-448d9bcdb581", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-92dd0039-b61d-4954-89f2-b7e8d617096a +Openstack-Request-Id: req-f6c1ef3e-6a05-44ef-95c4-6779ffdc905f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "ea4e0a06-9514-4cc7-8e29-448d9bcdb581", "created_at": "2024-01-06T13:38:51.890630+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/ea4e0a06-9514-4cc7-8e29-448d9bcdb581", "rel": "self"}, {"href": "http://localhost/deploy_templates/ea4e0a06-9514-4cc7-8e29-448d9bcdb581", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -API ACL Testing Path patch /v1/deploy_templates/0b8b516c-3812-4d5f-bce1-d8d76d348f2f -PATCH: /v1/deploy_templates/0b8b516c-3812-4d5f-bce1-d8d76d348f2f [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-aa72e97f-9b7c-4a44-8b10-118f6baf9b5c +Openstack-Request-Id: req-f6c1ef3e-6a05-44ef-95c4-6779ffdc905f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "0b8b516c-3812-4d5f-bce1-d8d76d348f2f", "created_at": "2024-01-06T13:38:52.625085+00:00", "updated_at": "2024-01-06T13:38:52.936107+00:00", "name": "CUSTOM_MAGIC", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/0b8b516c-3812-4d5f-bce1-d8d76d348f2f", "rel": "self"}, {"href": "http://localhost/deploy_templates/0b8b516c-3812-4d5f-bce1-d8d76d348f2f", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test {} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_193_lessee_admin_cannot_get_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_193_lessee_admin_cannot_get_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_foreign_sync +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_foreign_sync ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_no_subtasks +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_no_subtasks ... ok +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-aa72e97f-9b7c-4a44-8b10-118f6baf9b5c +Openstack-Request-Id: req-adcedbfa-2caf-4b5f-afd7-986f3bed356b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "0b8b516c-3812-4d5f-bce1-d8d76d348f2f", "created_at": "2024-01-06T13:38:52.625085+00:00", "updated_at": "2024-01-06T13:38:52.936107+00:00", "name": "CUSTOM_MAGIC", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/0b8b516c-3812-4d5f-bce1-d8d76d348f2f", "rel": "self"}, {"href": "http://localhost/deploy_templates/0b8b516c-3812-4d5f-bce1-d8d76d348f2f", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} -API ACL Testing Path patch /v1/deploy_templates/19784fc8-cf1d-4193-90c4-00b3f5a3e093 -PATCH: /v1/deploy_templates/19784fc8-cf1d-4193-90c4-00b3f5a3e093 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-25d91e03-86e4-428f-85f8-8f63a012a464 +Openstack-Request-Id: req-5073a1c5-005d-4df6-b1f5-a25421c390ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-25d91e03-86e4-428f-85f8-8f63a012a464 +Openstack-Request-Id: req-5073a1c5-005d-4df6-b1f5-a25421c390ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/deploy_templates/345c49d2-6984-47b5-8ddc-321b4622adf6 -PATCH: /v1/deploy_templates/345c49d2-6984-47b5-8ddc-321b4622adf6 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5c809231-653d-4b1e-9554-7288dab2e24a +Openstack-Request-Id: req-51d8e0f5-e9b9-4b3e-95ae-501455deee83 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5c809231-653d-4b1e-9554-7288dab2e24a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/deploy_templates/6c97582d-dea2-416f-9232-4eb42807451f -DELETE: /v1/deploy_templates/6c97582d-dea2-416f-9232-4eb42807451f -GOT:Response: 204 No Content -Openstack-Request-Id: req-9e267bca-be8b-4677-9a35-50cd85781170 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 - -ACL Test GOT Response: 204 No Content -Openstack-Request-Id: req-9e267bca-be8b-4677-9a35-50cd85781170 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 - -API ACL Testing Path delete /v1/deploy_templates/b4e44c02-3b66-4587-9284-9f61cf23e710 -DELETE: /v1/deploy_templates/b4e44c02-3b66-4587-9284-9f61cf23e710 -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_280_deploy_templates_deploy_template_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_280_deploy_templates_deploy_template_id_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_125_portgroups_portgroup_ident_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_125_portgroups_portgroup_ident_patch_member ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_maintenance -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_maintenance ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_setup_vmedia_with_image_service_deploy -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_setup_vmedia_with_image_service_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_281_deploy_templates_deploy_template_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_281_deploy_templates_deploy_template_id_delete_observer ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_setup_vmedia_with_image_service_rescue -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_setup_vmedia_with_image_service_rescue ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_126_portgroups_portgroup_ident_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_126_portgroups_portgroup_ident_patch_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_282_chassis_post_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_282_chassis_post_admin ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_clean_up_instance -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_clean_up_instance ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_283_chassis_post_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_283_chassis_post_member ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios_exception -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios_exception ... ok -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-feb30df5-d88c-46a5-b794-63811d1a2d4a +Openstack-Request-Id: req-51d8e0f5-e9b9-4b3e-95ae-501455deee83 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4d40b686-461d-48d0-ac84-9752afca7e2e +Openstack-Request-Id: req-4e09cd50-c1ff-4615-937d-674f89af0880 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b7aaa202-eacf-475f-98d3-d85378b799f0 +Openstack-Request-Id: req-4e09cd50-c1ff-4615-937d-674f89af0880 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a4014e0a-5037-4871-afaf-f95ca79ec25b +Openstack-Request-Id: req-79680887-8cd3-4960-a724-659422f0ed7d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} -GOT:Response: 403 Forbidden +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5861672f-fd60-4dcd-8ecd-4bd5c0d0ab5d +Openstack-Request-Id: req-79680887-8cd3-4960-a724-659422f0ed7d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} -GOT:Response: 403 Forbidden +{"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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-38250f2c-215b-447a-b0a8-2bb41f0699a3 +Openstack-Request-Id: req-3a777f46-2a96-4806-9d54-1094f7121c68 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/detail -GET: /v1/portgroups/detail {} -GOT:Response: 403 Forbidden +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-10a993d2-5205-4249-9641-5d995260d2b5 +Openstack-Request-Id: req-3a777f46-2a96-4806-9d54-1094f7121c68 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/detail -GET: /v1/portgroups/detail {} -GOT:Response: 403 Forbidden +{"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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0cbbf6c2-6048-4fc8-87d4-668aecab5147 +Openstack-Request-Id: req-77d354d4-c740-4d06-82e1-657354963224 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/detail -GET: /v1/portgroups/detail {} -GOT:Response: 403 Forbidden +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ad9b6ea5-dedc-4ad0-9ac6-142f2bc82fe8 +Openstack-Request-Id: req-77d354d4-c740-4d06-82e1-657354963224 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:Response: 404 Not Found +{"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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_148_ports_port_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_148_ports_port_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_133_nodes_portgroups_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_133_nodes_portgroups_detail_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_194_lessee_manager_cannot_get_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_194_lessee_manager_cannot_get_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_pre_create_configuration +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_pre_create_configuration ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_validate_correct_vendor +ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_validate_correct_vendor ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_134_nodes_portgroups_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_134_nodes_portgroups_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_195_lessee_member_cannot_get_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_195_lessee_member_cannot_get_vendor_passthru ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_149_ports_port_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_149_ports_port_id_patch_member ... ok +ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method +ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_135_nodes_portgroups_detail_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_135_nodes_portgroups_detail_get_reader ... ok +ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_managers_fail +ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_managers_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_196_lessee_reader_cannot_get_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_196_lessee_reader_cannot_get_vendor_passthru ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_150_ports_port_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_150_ports_port_id_patch_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_136_ports_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_136_ports_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_151_ports_port_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_151_ports_port_id_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_197_owner_admin_cannot_post_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_197_owner_admin_cannot_post_vendor_passthru ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_198_owner_manager_cannot_post_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_198_owner_manager_cannot_post_vendor_passthru ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1a08fcee-7925-4523-8cff-6450d18b1a1e +Openstack-Request-Id: req-232f1932-7af9-4dfa-ae0b-087cd658780c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:Response: 404 Not Found +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:13:01.234380+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-73026403-d532-4359-9eee-0e05d14fdd98 +Openstack-Request-Id: req-232f1932-7af9-4dfa-ae0b-087cd658780c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} -GOT:Response: 404 Not Found +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:13:01.234380+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-23b0c7e1-15f7-4c14-9783-d93ea4677be3 +Openstack-Request-Id: req-dce09eaf-69e7-4edd-abb7-013c1207372a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:13:01.554805+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-44a910e7-8d19-41d8-ad7a-4b791cfc31d1 +Openstack-Request-Id: req-dce09eaf-69e7-4edd-abb7-013c1207372a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:13:01.554805+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-52fba4d3-88dc-43e9-bf94-bb1be74bf316 +Openstack-Request-Id: req-3175237d-5f22-4381-8c7b-d28680a17b49 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:13:01.778699+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a6114d1a-0e31-435c-bf21-f36de8fe4899 +Openstack-Request-Id: req-3175237d-5f22-4381-8c7b-d28680a17b49 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_127_portgroups_portgroup_ident_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_127_portgroups_portgroup_ident_delete_admin ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios_unsupported -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios_unsupported ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_128_portgroups_portgroup_ident_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_128_portgroups_portgroup_ident_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_284_chassis_post_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_284_chassis_post_observer ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_disable_ramdisk -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_disable_ramdisk ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_instance -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_instance ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_129_portgroups_portgroup_ident_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_129_portgroups_portgroup_ident_delete_observer ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_network_validate_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_network_validate_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_285_chassis_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_285_chassis_get_admin ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_ramdisk_with_backup_bios -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_ramdisk_with_backup_bios ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_power_validate_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_power_validate_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_286_chassis_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_286_chassis_get_member ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_ramdisk_without_backup_bios -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_ramdisk_without_backup_bios ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_130_nodes_portgroups_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_130_nodes_portgroups_get_admin ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_prepare_clean_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_prepare_clean_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_prepare_clean_wait -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_prepare_clean_wait ... ok -GOT:Response: 403 Forbidden +{"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:13:01.778699+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "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"}]}]} +API ACL Testing Path get /v1/ports +GET: /v1/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-95245a80-9ea7-46a6-9f3d-b81458410de4 +Openstack-Request-Id: req-607a2257-160d-42cf-95b9-5b58117fc3e5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-95245a80-9ea7-46a6-9f3d-b81458410de4 +Openstack-Request-Id: req-607a2257-160d-42cf-95b9-5b58117fc3e5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/deploy_templates/091d95f4-969f-42af-bb6b-2e6b818a636e -DELETE: /v1/deploy_templates/091d95f4-969f-42af-bb6b-2e6b818a636e +{"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"}]}]} +API ACL Testing Path get /v1/ports +GET: /v1/ports {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_137_ports_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_137_ports_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_152_ports_port_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_152_ports_port_id_delete_member ... ok +ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_no_managers +ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_no_managers ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_138_ports_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_138_ports_get_reader ... ok +ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_oem_not_found +ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_oem_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_199_owner_member_cannot_post_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_199_owner_member_cannot_post_vendor_passthru ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_139_ports_post_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_139_ports_post_admin ... ok +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot ... ok +GET: /v1/ports {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3e86ca04-8845-486a-b11f-635e1c2ac862 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-3e86ca04-8845-486a-b11f-635e1c2ac862 +Openstack-Request-Id: req-108f2e3f-6ea0-493e-9c30-15cf505f2da1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/chassis -POST: /v1/chassis {'description': 'test-chassis'} -GOT:Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} +GOT:Response: 403 Forbidden Content-Type: application/json -Location: http://localhost/v1/chassis/190f780c-35da-4714-aa28-780588b6ac18 -Openstack-Request-Id: req-cb6cf163-3094-438e-992d-1decc1b776d1 +Openstack-Request-Id: req-305eedc7-8575-4623-9d4b-04636b581bd0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "190f780c-35da-4714-aa28-780588b6ac18", "created_at": "2024-01-06T13:38:57.288095+00:00", "updated_at": null, "description": "test-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/190f780c-35da-4714-aa28-780588b6ac18", "rel": "self"}, {"href": "http://localhost/chassis/190f780c-35da-4714-aa28-780588b6ac18", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/190f780c-35da-4714-aa28-780588b6ac18/nodes", "rel": "self"}, {"href": "http://localhost/chassis/190f780c-35da-4714-aa28-780588b6ac18/nodes", "rel": "bookmark"}]]} -ACL Test GOT Response: 201 Created +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} +GOT:Response: 403 Forbidden Content-Type: application/json -Location: http://localhost/v1/chassis/190f780c-35da-4714-aa28-780588b6ac18 -Openstack-Request-Id: req-cb6cf163-3094-438e-992d-1decc1b776d1 +Openstack-Request-Id: req-447cdd1f-ecb9-4752-98f8-e63b563c3a42 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "190f780c-35da-4714-aa28-780588b6ac18", "created_at": "2024-01-06T13:38:57.288095+00:00", "updated_at": null, "description": "test-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/190f780c-35da-4714-aa28-780588b6ac18", "rel": "self"}, {"href": "http://localhost/chassis/190f780c-35da-4714-aa28-780588b6ac18", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/190f780c-35da-4714-aa28-780588b6ac18/nodes", "rel": "self"}, {"href": "http://localhost/chassis/190f780c-35da-4714-aa28-780588b6ac18/nodes", "rel": "bookmark"}]]} -API ACL Testing Path post /v1/chassis -POST: /v1/chassis {'description': 'test-chassis'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-e83fbdd1-a23e-48f8-ab72-7e9209efe75c +Openstack-Request-Id: req-14eab7ec-bbb2-400b-b1e2-05c46ca5e2ea X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/detail +GET: /v1/ports/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e83fbdd1-a23e-48f8-ab72-7e9209efe75c +Openstack-Request-Id: req-21cf912c-cae4-4f66-95ff-10104397fee3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/chassis -POST: /v1/chassis {'description': 'test-chassis'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/detail +GET: /v1/ports/detail {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c9db0f96-2987-4107-a98f-7ca4d00fb1d7 +Openstack-Request-Id: req-7edffd26-3842-48d4-bf99-35f6970bedac X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/detail +GET: /v1/ports/detail {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c9db0f96-2987-4107-a98f-7ca4d00fb1d7 +Openstack-Request-Id: req-461d2d9e-bc0a-4a48-892d-3c4c88c29a99 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis -GET: /v1/chassis {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c5500c49-84f5-4bf7-9052-a947878183d0 +Openstack-Request-Id: req-ea53e453-9334-4a55-a576-7b58f3ece967 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c5500c49-84f5-4bf7-9052-a947878183d0 +Openstack-Request-Id: req-a4fbb188-7b51-48f3-aa02-fe57d1c3f294 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/chassis -GET: /v1/chassis {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-70c1edda-6ef7-4acc-814f-2baf7d81a065 +Openstack-Request-Id: req-197a5fe3-bf53-4476-a62a-a4b3dd72a462 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-70c1edda-6ef7-4acc-814f-2baf7d81a065 +Openstack-Request-Id: req-081f1a1c-6ee7-413e-a6fd-51dc464a722f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis -GET: /v1/chassis {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-367b6a97-7132-462d-8236-ec63029c9c90 +Openstack-Request-Id: req-e4b7eb54-91b0-49fb-be9e-e130a12a9070 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]}ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_287_chassis_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_287_chassis_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_131_nodes_portgroups_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_131_nodes_portgroups_get_member ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config_corrupted -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config_corrupted ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_steps_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_steps_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config_failed -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config_failed ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_132_nodes_portgroups_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_132_nodes_portgroups_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_288_chassis_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_288_chassis_detail_get_admin ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_network_error_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_network_error_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_continue_node_clean -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_continue_node_clean ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_133_nodes_portgroups_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_133_nodes_portgroups_detail_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_289_chassis_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_289_chassis_detail_get_member ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_continue_node_clean_no_skip_step -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_continue_node_clean_no_skip_step ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config_failed -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config_failed ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config_skipped -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config_skipped ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_agent_busy -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_agent_busy ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_290_chassis_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_290_chassis_detail_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_134_nodes_portgroups_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_134_nodes_portgroups_detail_get_member ... ok -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_avoid_repeatedly_resume_cleaning -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_avoid_repeatedly_resume_cleaning ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_automated_all -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_automated_all ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_135_nodes_portgroups_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_135_nodes_portgroups_detail_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_291_chassis_chassis_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_291_chassis_chassis_id_get_admin ... ok -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_completing_status -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_completing_status ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_automated_first_step_async -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_automated_first_step_async ... ok -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_other_clean_state -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_other_clean_state ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_136_ports_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_136_ports_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_292_chassis_chassis_id_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_292_chassis_chassis_id_get_member ... ok -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_clean_fail -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_clean_fail ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_collect_logs -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_collect_logs ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_137_ports_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_137_ports_get_member ... ok -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_complete_cleaning -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_complete_cleaning ... ok - -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-367b6a97-7132-462d-8236-ec63029c9c90 +Openstack-Request-Id: req-92509bab-6091-4fbb-9419-c686f2c42517 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/chassis/detail -GET: /v1/chassis/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c302b72a-42f5-4d91-9488-ec004b35acbc +Openstack-Request-Id: req-74ebb9f6-cfdb-431e-9a5d-9b60ff626b6e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:39:01.048140+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"}]]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c302b72a-42f5-4d91-9488-ec004b35acbc +Openstack-Request-Id: req-6b7003bf-98f1-4d83-83a0-c0e3946e29f0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:39:01.048140+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"}]]}]} -API ACL Testing Path get /v1/chassis/detail -GET: /v1/chassis/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_153_ports_port_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_153_ports_port_id_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_200_owner_reader_cannot_post_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_200_owner_reader_cannot_post_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot_fail +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_140_ports_post_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_140_ports_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_154_nodes_ports_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_154_nodes_ports_get_admin ... ok +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot_not_reached +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot_not_reached ... ok +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot_timeout +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot_timeout ... ok GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-acb24470-5f2b-44b2-8063-a96450879f3e +Openstack-Request-Id: req-941cfdb7-4a8a-4b27-89a9-079cbd56ff2f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-acb24470-5f2b-44b2-8063-a96450879f3e +Openstack-Request-Id: req-941cfdb7-4a8a-4b27-89a9-079cbd56ff2f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/detail -GET: /v1/chassis/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1c059b73-fe1d-4429-9310-840f99395c7a +Openstack-Request-Id: req-ed2d20b0-cdab-4a98-8336-66b5a269a455 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:39:02.232056+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"}]]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1c059b73-fe1d-4429-9310-840f99395c7a +Openstack-Request-Id: req-ed2d20b0-cdab-4a98-8336-66b5a269a455 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:39:02.232056+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"}]]}]} -API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1bd40fc4-710a-45cb-87e4-c77b941da873 +Openstack-Request-Id: req-9cc7fc57-f0e5-4310-974e-8f7b34be72ac X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:39:02.832584+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"}]]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1bd40fc4-710a-45cb-87e4-c77b941da873 +Openstack-Request-Id: req-9cc7fc57-f0e5-4310-974e-8f7b34be72ac X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:39:02.832584+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"}]]} -API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4f5614af-2e16-4091-9911-8b9dc8c95368 +Openstack-Request-Id: req-6e53ed9c-b172-4118-92d6-7fc9bb8ac8e3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4f5614af-2e16-4091-9911-8b9dc8c95368 +Openstack-Request-Id: req-6e53ed9c-b172-4118-92d6-7fc9bb8ac8e3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_293_chassis_chassis_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_293_chassis_chassis_id_get_observer ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_continue_from_last_cleaning -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_continue_from_last_cleaning ... ok -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_two_nodes_with_fgi_status_none -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_two_nodes_with_fgi_status_none ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_138_ports_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_138_ports_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_294_chassis_chassis_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_294_chassis_chassis_id_patch_admin ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_all -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_all ... ok -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_two_nodes_without_raid_config -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_two_nodes_without_raid_config ... ok -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_fgi_status -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_fgi_status ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_139_ports_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_139_ports_post_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_295_chassis_chassis_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_295_chassis_chassis_id_patch_member ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_all_disable_ramdisk -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_all_disable_ramdisk ... ok -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_input -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_input ... ok -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_node -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_node ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_140_ports_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_140_ports_post_member ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_continue_from_last_cleaning -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_continue_from_last_cleaning ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_296_chassis_chassis_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_296_chassis_chassis_id_patch_observer ... ok -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_raid_config -ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_raid_config ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_first_step_async -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_first_step_async ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_all_physnets -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_all_physnets ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_141_ports_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_141_ports_post_observer ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_297_chassis_chassis_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_297_chassis_chassis_id_delete_admin ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_flat -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_flat ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_neutron -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_neutron ... ok -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-04b2f587-255d-42bb-8be7-f376eee38933 +Openstack-Request-Id: req-c79768c8-7bd9-4fa2-acf3-26c3b9bd61e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7b890e31-6b29-42e8-acdf-f66416a3f307 +Openstack-Request-Id: req-c79768c8-7bd9-4fa2-acf3-26c3b9bd61e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b692b763-dcb1-4968-a20c-d281d220ace7 +Openstack-Request-Id: req-f16278e3-434c-426c-b114-3d9f9f7fff58 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b6edce63-27b3-46b0-87f8-945f465c795f +Openstack-Request-Id: req-f16278e3-434c-426c-b114-3d9f9f7fff58 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-05623e88-27cf-4f3c-9c84-6570f49950e9 +Openstack-Request-Id: req-4a2abf7a-6188-4bcb-898a-3d61340389da X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a89e5b9b-56f6-4bb3-abbd-df0616f47567 +Openstack-Request-Id: req-4a2abf7a-6188-4bcb-898a-3d61340389da X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3d72e602-fb8e-4be5-9111-1b53e92add0f +Openstack-Request-Id: req-531c40c9-ed01-4e9c-bd29-3ed176204319 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1d03af5c-5899-4e5e-b10c-29bf383a76f3 +Openstack-Request-Id: req-531c40c9-ed01-4e9c-bd29-3ed176204319 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_201_lessee_admin_cannot_post_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_201_lessee_admin_cannot_post_vendor_passthru ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_141_ports_post_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_141_ports_post_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_155_nodes_ports_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_155_nodes_ports_get_member ... ok +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_failed +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_failed ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_202_lessee_manager_cannot_post_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_202_lessee_manager_cannot_post_vendor_passthru ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_142_ports_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_142_ports_detail_get_admin ... ok +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_with_delete +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_with_delete ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_156_nodes_ports_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_156_nodes_ports_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_203_lessee_member_cannot_post_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_203_lessee_member_cannot_post_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_without_delete +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_without_delete ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_157_nodes_ports_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_157_nodes_ports_detail_get_admin ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ac07e6b8-f083-4658-bffe-c1829cf9d066 +Openstack-Request-Id: req-2bd46a77-8c1b-4d53-b474-ad086a3e8b88 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} -GOT:Response: 403 Forbidden +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-46d4fc39-0cc8-474e-88e2-3d1826e4608f +Openstack-Request-Id: req-2bd46a77-8c1b-4d53-b474-ad086a3e8b88 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +{"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"}]}]} API ACL Testing Path get /v1/ports GET: /v1/ports {} -GOT:Response: 403 Forbidden +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-79cb4032-39c0-401c-a44b-d3e43c4456dd +Openstack-Request-Id: req-22824cf0-9754-4e0f-82ff-6fcb32d4dc91 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} -GOT:Response: 403 Forbidden +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f7a9f6cb-d722-4cd6-83b0-577cf25611e4 +Openstack-Request-Id: req-22824cf0-9754-4e0f-82ff-6fcb32d4dc91 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} +{"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"}]}]} API ACL Testing Path post /v1/ports POST: /v1/ports {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} -GOT:Response: 403 Forbidden +GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-397d184f-e6b4-43b1-a9a9-473e96e0827e +Openstack-Request-Id: req-10c45183-dbf2-4d58-944b-12f532781ab3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 68a552fb-dcd2-43bf-9302-e4c93287be16 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-3f1cae0f-177d-4bb6-84a1-373dbfa954fa +Openstack-Request-Id: req-10c45183-dbf2-4d58-944b-12f532781ab3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 68a552fb-dcd2-43bf-9302-e4c93287be16 could not be found.\", \"debuginfo\": null}"} API ACL Testing Path post /v1/ports -POST: /v1/ports {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} +POST: /v1/ports {'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-8e7b1905-e43c-479f-bb96-efbe77465ee1 +Openstack-Request-Id: req-7002c757-272a-4a32-bcd4-4abb2560643b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/detail -GET: /v1/ports/detail {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_142_ports_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_142_ports_detail_get_admin ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_298_chassis_chassis_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_298_chassis_chassis_id_delete_member ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_neutron_missed -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_neutron_missed ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_143_ports_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_143_ports_detail_get_member ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot_last_step -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot_last_step ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_299_chassis_chassis_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_299_chassis_chassis_id_delete_observer ... ok -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_matching_physnet -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_matching_physnet ... ok -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device_node_locked -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device_node_locked ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_144_ports_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_144_ports_detail_get_observer ... ok -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-b954dfe3-620c-4cce-a37d-08f812546ef1 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:39:04.293432+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"}]]} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-b954dfe3-620c-4cce-a37d-08f812546ef1 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:39:04.293432+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"}]]} -API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-24f11ed7-f983-40f0-af72-7862d5d01d67 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:39:04.964320+00:00", "updated_at": "2024-01-06T13:39:05.216841+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"}]]} -ACL Test GOT Response: 200 OK +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-24f11ed7-f983-40f0-af72-7862d5d01d67 +Openstack-Request-Id: req-7002c757-272a-4a32-bcd4-4abb2560643b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T13:39:04.964320+00:00", "updated_at": "2024-01-06T13:39:05.216841+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"}]]} -API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-9601c174-3e5b-4f28-ac51-9c2b0751b3ee +Openstack-Request-Id: req-6ad4f946-f5a9-4c4b-b67a-5cbf1c89df81 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9601c174-3e5b-4f28-ac51-9c2b0751b3ee +Openstack-Request-Id: req-6ad4f946-f5a9-4c4b-b67a-5cbf1c89df81 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports/detail +GET: /v1/ports/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-dab14ce5-8499-48d2-8d88-b29e1826a33a +Openstack-Request-Id: req-d3dd6d12-c4fc-437f-b68a-e383665353f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:03.425827+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-dab14ce5-8499-48d2-8d88-b29e1826a33a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GOT:Response: 204 No Content -Openstack-Request-Id: req-d8596302-6939-48fe-880b-9e8ffa49bba7 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 - -ACL Test GOT Response: 204 No Content -Openstack-Request-Id: req-d8596302-6939-48fe-880b-9e8ffa49bba7 +Openstack-Request-Id: req-d3dd6d12-c4fc-437f-b68a-e383665353f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 - -API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GOT:Response: 403 Forbidden +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:03.425827+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +API ACL Testing Path get /v1/ports/detail +GET: /v1/ports/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-535ef4e6-395c-4c58-b24d-609ddfadba0d +Openstack-Request-Id: req-2cf00d36-6bd0-4ec3-a562-f990ccf2e624 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:03.657376+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_143_ports_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_143_ports_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_204_lessee_reader_cannot_post_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_204_lessee_reader_cannot_post_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_without_nonroot +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_without_nonroot ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_144_ports_detail_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_144_ports_detail_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_158_nodes_ports_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_158_nodes_ports_detail_get_member ... ok +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_without_root +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_without_root ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_205_owner_admin_cannot_put_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_205_owner_admin_cannot_put_vendor_passthru ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_145_ports_port_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_145_ports_port_id_get_admin ... ok +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_delete_configuration_failed +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_delete_configuration_failed ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_159_nodes_ports_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_159_nodes_ports_detail_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_206_owner_manager_cannot_put_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_206_owner_manager_cannot_put_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_delete_configuration_success +ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_delete_configuration_success ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_146_ports_port_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_146_ports_port_id_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_160_portgroups_ports_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_160_portgroups_ports_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_207_owner_member_cannot_put_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_207_owner_member_cannot_put_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance_boot_from_volume +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance_boot_from_volume ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_161_portgroups_ports_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_161_portgroups_ports_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_208_owner_reader_cannot_put_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_208_owner_reader_cannot_put_vendor_passthru ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-535ef4e6-395c-4c58-b24d-609ddfadba0d +Openstack-Request-Id: req-2cf00d36-6bd0-4ec3-a562-f990ccf2e624 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GOT:Response: 403 Forbidden +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:03.657376+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +API ACL Testing Path get /v1/ports/detail +GET: /v1/ports/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e598fc4c-494f-4f17-80ee-0588ba66c350 +Openstack-Request-Id: req-61f8880a-192b-4dc5-89c1-b93c0c8bc719 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:03.900536+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e598fc4c-494f-4f17-80ee-0588ba66c350 +Openstack-Request-Id: req-61f8880a-192b-4dc5-89c1-b93c0c8bc719 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_300_node_history_get_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_300_node_history_get_admin ... ok -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device_validate_fail -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device_validate_fail ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_matching_uuid -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_matching_uuid ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_145_ports_port_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_145_ports_port_id_get_admin ... ok -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_supported_boot_devices -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_supported_boot_devices ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_301_node_history_get_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_301_node_history_get_member ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_physnets -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_physnets ... ok -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_146_ports_port_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_146_ports_port_id_get_member ... ok -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device_node_locked -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device_node_locked ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_302_node_history_get_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_302_node_history_get_observer ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_port_physnets -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_port_physnets ... ok -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device_validate_fail -ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device_validate_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_147_ports_port_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_147_ports_port_id_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_303_node_history_get_entry_admin -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_303_node_history_get_entry_admin ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet1 -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet1 ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_148_ports_port_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_148_ports_port_id_patch_admin ... ok -ironic.tests.unit.conductor.test_manager.ConcurrentActionLimitTestCase.test_concurrent_action_limit_cleaning -ironic.tests.unit.conductor.test_manager.ConcurrentActionLimitTestCase.test_concurrent_action_limit_cleaning ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_149_ports_port_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_149_ports_port_id_patch_member ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet2 -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet2 ... ok -ironic.tests.unit.conductor.test_manager.ConcurrentActionLimitTestCase.test_concurrent_action_limit_deploy -ironic.tests.unit.conductor.test_manager.ConcurrentActionLimitTestCase.test_concurrent_action_limit_deploy ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet3 -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet3 ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_150_ports_port_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_150_ports_port_id_patch_observer ... ok -ironic.tests.unit.conductor.test_manager.CreateNodeTestCase.test_create_node -ironic.tests.unit.conductor.test_manager.CreateNodeTestCase.test_create_node ... ok -ironic.tests.unit.conductor.test_manager.CreateNodeTestCase.test_create_node_validation_fails -ironic.tests.unit.conductor.test_manager.CreateNodeTestCase.test_create_node_validation_fails ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_304_node_history_get_entry_member -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_304_node_history_get_entry_member ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_port_uuid -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_port_uuid ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_151_ports_port_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_151_ports_port_id_delete_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_305_node_history_get_entry_observer -ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_305_node_history_get_entry_observer ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_portgroup_uuid -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_portgroup_uuid ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_152_ports_port_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_152_ports_port_id_delete_member ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_001_values -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_001_values ... skipped 'These are fake reference values for YAML templating' -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_153_ports_port_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_153_ports_port_id_delete_observer ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_portgroup_uuid_attached_vifs -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_portgroup_uuid_attached_vifs ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ignores_empty_portgroup -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ignores_empty_portgroup ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_154_nodes_ports_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_154_nodes_ports_get_admin ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ignores_standalone_portgroup -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ignores_standalone_portgroup ... ok -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:03.900536+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-00b2fd7e-7799-46e5-af82-dc2162d5f44d +Openstack-Request-Id: req-eb921a52-d0e1-4177-846a-66de70a24c3c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "8795b535-9711-401f-a69e-ef35ed43a984", "created_at": "2024-01-06T13:39:08.984813+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/8795b535-9711-401f-a69e-ef35ed43a984", "rel": "self"}]}]} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:04.142218+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-00b2fd7e-7799-46e5-af82-dc2162d5f44d +Openstack-Request-Id: req-eb921a52-d0e1-4177-846a-66de70a24c3c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "8795b535-9711-401f-a69e-ef35ed43a984", "created_at": "2024-01-06T13:39:08.984813+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/8795b535-9711-401f-a69e-ef35ed43a984", "rel": "self"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} -GOT:Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:04.142218+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-7287998f-bf9b-4199-b846-da6e4fd089d5 +Openstack-Request-Id: req-1b66a4bc-a40f-4263-8ea6-403e443529d4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:04.394221+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-7287998f-bf9b-4199-b846-da6e4fd089d5 +Openstack-Request-Id: req-1b66a4bc-a40f-4263-8ea6-403e443529d4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:04.394221+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6730601d-b3b5-4458-98c2-cda85c3b9304 +Openstack-Request-Id: req-13546af7-c468-4c97-a777-dc0436f56f7a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "f482fca7-e701-417e-80a0-d9a578a83111", "created_at": "2024-01-06T13:39:10.692720+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/f482fca7-e701-417e-80a0-d9a578a83111", "rel": "self"}]}]} -ACL Test GOT Response: 200 OK +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:04.645083+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_147_ports_port_id_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_147_ports_port_id_get_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance_boot_from_volume_bios +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance_boot_from_volume_bios ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_148_ports_port_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_148_ports_port_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_162_portgroups_ports_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_162_portgroups_ports_get_observer ... ok +POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6730601d-b3b5-4458-98c2-cda85c3b9304 +Openstack-Request-Id: req-865e215c-e36d-4fbb-8014-719f22986612 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "f482fca7-e701-417e-80a0-d9a578a83111", "created_at": "2024-01-06T13:39:10.692720+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/f482fca7-e701-417e-80a0-d9a578a83111", "rel": "self"}]}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/85a1e0cc-c4b1-4f00-a689-33b9069926cf -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/85a1e0cc-c4b1-4f00-a689-33b9069926cf {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b606c779-895d-4536-a5b4-dc3944c9f7af +Openstack-Request-Id: req-865e215c-e36d-4fbb-8014-719f22986612 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "85a1e0cc-c4b1-4f00-a689-33b9069926cf", "created_at": "2024-01-06T13:39:11.368122+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/85a1e0cc-c4b1-4f00-a689-33b9069926cf", "rel": "self"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b606c779-895d-4536-a5b4-dc3944c9f7af +Openstack-Request-Id: req-5dfeeb69-34a1-451e-8c4d-3afdd9949b7e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "85a1e0cc-c4b1-4f00-a689-33b9069926cf", "created_at": "2024-01-06T13:39:11.368122+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/85a1e0cc-c4b1-4f00-a689-33b9069926cf", "rel": "self"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/c708aea3-0f5e-4ad3-b2f7-f4d654af803e -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/c708aea3-0f5e-4ad3-b2f7-f4d654af803e {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-97d1638c-6f4f-4f78-89d2-3d8cc53221f3 +Openstack-Request-Id: req-5dfeeb69-34a1-451e-8c4d-3afdd9949b7e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-97d1638c-6f4f-4f78-89d2-3d8cc53221f3 +Openstack-Request-Id: req-01d48509-0204-419d-ba1b-5ff840fc258f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/980c8e7c-e711-4bf2-a1a5-cf69363a2e74 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/980c8e7c-e711-4bf2-a1a5-cf69363a2e74 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0acf2558-c243-433f-ae99-2360cfbc08c6 +Openstack-Request-Id: req-01d48509-0204-419d-ba1b-5ff840fc258f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "980c8e7c-e711-4bf2-a1a5-cf69363a2e74", "created_at": "2024-01-06T13:39:13.831779+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/980c8e7c-e711-4bf2-a1a5-cf69363a2e74", "rel": "self"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0acf2558-c243-433f-ae99-2360cfbc08c6 +Openstack-Request-Id: req-b5c67c8b-d52b-4954-87a3-c15a5ee29aa4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "980c8e7c-e711-4bf2-a1a5-cf69363a2e74", "created_at": "2024-01-06T13:39:13.831779+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/980c8e7c-e711-4bf2-a1a5-cf69363a2e74", "rel": "self"}]} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-44f324ae-0cec-423b-8453-5c4eadf2547b +Openstack-Request-Id: req-b5c67c8b-d52b-4954-87a3-c15a5ee29aa4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_002_owner_admin_cannot_post_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_002_owner_admin_cannot_post_nodes ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_no_matching_physnets -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_no_matching_physnets ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_adopt_failed_no_power_change -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_adopt_failed_no_power_change ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_155_nodes_ports_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_155_nodes_ports_get_member ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_nothing_free -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_nothing_free ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_003_owner_admin_can_post_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_003_owner_admin_can_post_nodes ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_156_nodes_ports_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_156_nodes_ports_get_observer ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_portgroup_first -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_portgroup_first ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_allowed_in_maintenance -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_allowed_in_maintenance ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_portgroup_physnet_match_first -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_portgroup_physnet_match_first ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_004_owner_manager_cannot_post_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_004_owner_manager_cannot_post_nodes ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_associated -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_associated ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d30b392e-1967-4364-93ea-a3613f51fac8 +Openstack-Request-Id: req-095cf07a-2c25-408b-906d-4167a59dfb9c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/detail -GET: /v1/ports/detail {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-12e57d43-1295-49dc-b06c-042092a9f60f +Openstack-Request-Id: req-095cf07a-2c25-408b-906d-4167a59dfb9c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/detail -GET: /v1/ports/detail {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3efb0872-c965-466d-b153-4f8dec3b131f +Openstack-Request-Id: req-fb7b53a5-db42-4f05-a87f-c83681acae87 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f20d7369-eeba-457b-b7e4-0636fde601c5 +Openstack-Request-Id: req-fb7b53a5-db42-4f05-a87f-c83681acae87 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1ef3aca1-1a0a-47a3-b8ad-415c36bcffd4 +Openstack-Request-Id: req-d1b75bb1-e200-4f3d-9d03-74461e068736 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-829d9938-0d46-4884-9acf-66214e58da10 +Openstack-Request-Id: req-d1b75bb1-e200-4f3d-9d03-74461e068736 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-19b29277-5c5e-4daf-821e-3b7a89e73e97 +Openstack-Request-Id: req-9ea7a891-4ea3-4af5-a96c-69e482316d98 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-cc23e638-7ac9-4b89-8694-25766394ee7f +Openstack-Request-Id: req-9ea7a891-4ea3-4af5-a96c-69e482316d98 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_209_lessee_admin_cannot_put_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_209_lessee_admin_cannot_put_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_bios +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_bios ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_149_ports_port_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_149_ports_port_id_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_163_portgroups_ports_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_163_portgroups_ports_detail_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_210_lessee_manager_cannot_put_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_210_lessee_manager_cannot_put_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_boot_from_volume +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_boot_from_volume ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_150_ports_port_id_patch_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_150_ports_port_id_patch_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_cleaning +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_211_lessee_member_cannot_put_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_211_lessee_member_cannot_put_vendor_passthru ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_164_portgroups_ports_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_164_portgroups_ports_detail_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_deploying +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_151_ports_port_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_151_ports_port_id_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_212_lessee_reader_cannot_put_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_212_lessee_reader_cannot_put_vendor_passthru ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_165_portgroups_ports_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_165_portgroups_ports_detail_get_observer ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_rescuing +ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_rescuing ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_ca_file_and_snmp_inspection_true +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_ca_file_and_snmp_inspection_true ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_213_owner_admin_cannot_delete_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_213_owner_admin_cannot_delete_vendor_passthru ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_152_ports_port_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_152_ports_port_id_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_166_volume_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_166_volume_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_cafile +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_cafile ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_multiple_params +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_multiple_params ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_214_owner_manager_cannot_delete_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_214_owner_manager_cannot_delete_vendor_passthru ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_153_ports_port_id_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_153_ports_port_id_delete_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_port +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_port ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_timeout +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_timeout ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_215_owner_member_cannot_delete_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_215_owner_member_cannot_delete_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_value_verify_ca +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_value_verify_ca ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_154_nodes_ports_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_154_nodes_ports_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_address +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_address ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_167_volume_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_167_volume_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_multiple_params +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_multiple_params ... ok +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c0dc2128-c41c-4886-9a04-90a73bde80a2 +Openstack-Request-Id: req-c44acb26-0473-4a13-9959-5e03fbf7dc26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-88827a13-d2e2-49bb-b80b-83e11725ed68 +Openstack-Request-Id: req-c44acb26-0473-4a13-9959-5e03fbf7dc26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8921eb86-44f6-4488-8266-73c46fb0fe25 +Openstack-Request-Id: req-cadbee1a-8884-4c07-883c-805472e272ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-94393405-4759-4748-823e-6b15200a07a5 +Openstack-Request-Id: req-cadbee1a-8884-4c07-883c-805472e272ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fcb034ce-aaed-4350-a57f-03f94762f6ca +Openstack-Request-Id: req-99b4b3b2-0419-4c4e-8519-e20c6fe27462 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-146657ad-2c6c-4b66-aacd-bafddb919f35 +Openstack-Request-Id: req-99b4b3b2-0419-4c4e-8519-e20c6fe27462 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a2a370a0-50d7-414b-a791-17b06c12136f +Openstack-Request-Id: req-4db85427-d6df-4d6d-88ba-554eef6f23c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_157_nodes_ports_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_157_nodes_ports_detail_get_admin ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_physnet_match_first -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_physnet_match_first ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_158_nodes_ports_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_158_nodes_ports_detail_get_member ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_broken_driver -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_broken_driver ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_005_lessee_admin_cannot_post_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_005_lessee_admin_cannot_post_nodes ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_physnet_match_first2 -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_physnet_match_first2 ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_159_nodes_ports_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_159_nodes_ports_detail_get_observer ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_pxe_enabled_first -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_pxe_enabled_first ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_006_lessee_admin_can_post_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_006_lessee_admin_can_post_nodes ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_console_disable_fail -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_console_disable_fail ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_vif_attached_to_port -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_vif_attached_to_port ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_160_portgroups_ports_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_160_portgroups_ports_get_admin ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_vif_attached_to_portgroup -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_vif_attached_to_portgroup ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_client -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_client ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_console_enabled -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_console_enabled ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_007_lessee_manager_cannot_post_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_007_lessee_manager_cannot_post_nodes ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_161_portgroups_ports_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_161_portgroups_ports_get_member ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_no_client -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_no_client ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_no_tenant_vif -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_no_tenant_vif ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_invalid_provision_state -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_invalid_provision_state ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_162_portgroups_ports_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_162_portgroups_ports_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_008_lessee_manager_can_post_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_008_lessee_manager_can_post_nodes ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_smartnic_port -ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_smartnic_port ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_power_off -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_power_off ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_163_portgroups_ports_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_163_portgroups_ports_detail_get_admin ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address_VIF_MAC_update_fail -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address_VIF_MAC_update_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_009_third_party_admin_cannot_post_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_009_third_party_admin_cannot_post_nodes ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_164_portgroups_ports_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_164_portgroups_ports_detail_get_member ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_protected -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_protected ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address_no_vif_id -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address_no_vif_id ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_protected_provision_state_available -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_protected_provision_state_available ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_165_portgroups_ports_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_165_portgroups_ports_detail_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_010_third_party_admin_can_post_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_010_third_party_admin_can_post_nodes ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id_fail -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id_fail ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id_no_vif_id -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id_no_vif_id ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_reserved -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_reserved ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_166_volume_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_166_volume_get_admin ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_extra_add_new_key -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_extra_add_new_key ... ok -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_with_allocation -ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_with_allocation ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_message_format_failure -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_message_format_failure ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-44f324ae-0cec-423b-8453-5c4eadf2547b +Openstack-Request-Id: req-4db85427-d6df-4d6d-88ba-554eef6f23c9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3f8f1f83-6bca-4d14-82e6-2ae4c36201af +Openstack-Request-Id: req-d3e66e52-bf9e-48f3-8ab5-87b4353fefb7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3f8f1f83-6bca-4d14-82e6-2ae4c36201af +Openstack-Request-Id: req-d3e66e52-bf9e-48f3-8ab5-87b4353fefb7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f47e5468-711a-4d02-b2a9-35b7697a1f9c +Openstack-Request-Id: req-ec4ed350-247d-4f88-9a25-44fec4ab4303 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f47e5468-711a-4d02-b2a9-35b7697a1f9c +Openstack-Request-Id: req-ec4ed350-247d-4f88-9a25-44fec4ab4303 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7da27e43-d6d5-456b-ab31-913fa4219faa +Openstack-Request-Id: req-74ffde02-a864-4119-9807-9f82424b7adb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7da27e43-d6d5-456b-ab31-913fa4219faa +Openstack-Request-Id: req-74ffde02-a864-4119-9807-9f82424b7adb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a33b27dd-43f8-4e30-a31e-cf2fa3fed294 +Openstack-Request-Id: req-a038a09e-376d-4bd9-b826-5ad473da7d9a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_216_owner_reader_cannot_delete_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_216_owner_reader_cannot_delete_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_password +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_password ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_username +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_username ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a33b27dd-43f8-4e30-a31e-cf2fa3fed294 +Openstack-Request-Id: req-13546af7-c468-4c97-a777-dc0436f56f7a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:04.645083+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e4d9a272-37f5-4191-9e0c-81318ce32866 +Openstack-Request-Id: req-6ec3fdc8-741f-4bde-a51f-48950c5d9514 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e4d9a272-37f5-4191-9e0c-81318ce32866 +Openstack-Request-Id: req-6ec3fdc8-741f-4bde-a51f-48950c5d9514 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ef258d4b-6635-4aa6-b44e-89b99d4f6c6d +Openstack-Request-Id: req-81ac2d63-559d-43f2-be81-02cdc01dbc89 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ef258d4b-6635-4aa6-b44e-89b99d4f6c6d +Openstack-Request-Id: req-81ac2d63-559d-43f2-be81-02cdc01dbc89 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7170104b-c381-49e4-ab61-0caafcb71411 +Openstack-Request-Id: req-52b4f7c7-f759-4517-9fb5-b2e061d6148f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7170104b-c381-49e4-ab61-0caafcb71411 +Openstack-Request-Id: req-52b4f7c7-f759-4517-9fb5-b2e061d6148f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-9b290fb9-735b-4ef3-af18-73ccaf76fb58 +Openstack-Request-Id: req-3cb591e6-a631-4a5b-a7a9-4fad8b5907b4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-9b290fb9-735b-4ef3-af18-73ccaf76fb58 +Openstack-Request-Id: req-3cb591e6-a631-4a5b-a7a9-4fad8b5907b4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_011_owner_member_cannot_post_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_011_owner_member_cannot_post_nodes ... ok -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_167_volume_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_167_volume_get_member ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_noportgroup -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_noportgroup ... ok -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_and_maintenance_no_vif -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_and_maintenance_no_vif ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_012_owner_reader_cannot_post_reader -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_012_owner_reader_cannot_post_reader ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_portgroup_nostandalone_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_portgroup_nostandalone_ports ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_168_volume_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_168_volume_get_observer ... ok -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_and_maintenance_vif_present -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_and_maintenance_vif_present ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_013_owner_admin_can_get_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_013_owner_admin_can_get_node ... ok -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_port_unbound -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_port_unbound ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_portgroup_standalone_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_portgroup_standalone_ports ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_169_volume_connectors_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_169_volume_connectors_get_admin ... ok -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_state -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_state ... ok -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_locked -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_locked ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_014_owner_manager_can_get_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_014_owner_manager_can_get_node ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_noportgroup -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_noportgroup ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_170_volume_connectors_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_170_volume_connectors_get_member ... ok -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_with_instance_not_in_active_port_bound -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_with_instance_not_in_active_port_bound ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_015_owner_member_can_get_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_015_owner_member_can_get_node ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_portgroup_nostandalone_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_portgroup_nostandalone_ports ... ok -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_with_instance_not_in_active_port_unbound -ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_with_instance_not_in_active_port_unbound ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_171_volume_connectors_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_171_volume_connectors_get_observer ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_acquire_node_disappears -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_acquire_node_disappears ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_portgroup_standalone_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_portgroup_standalone_ports ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_acquire_node_locked -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_acquire_node_locked ... ok +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c217ddb1-581e-4f82-92f3-e7111d8774a1 +Openstack-Request-Id: req-98fc5cba-5ed5-4cc6-84c5-bf2dcf399327 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c217ddb1-581e-4f82-92f3-e7111d8774a1 +Openstack-Request-Id: req-98fc5cba-5ed5-4cc6-84c5-bf2dcf399327 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes -POST: /v1/nodes {'name': 'node', 'driver': 'fake-driverz'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b1e1f98e-db45-4ddf-a3b8-f571adfed588 +Openstack-Request-Id: req-140085e9-f615-4d39-98fa-b8939b72c23a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b1e1f98e-db45-4ddf-a3b8-f571adfed588 +Openstack-Request-Id: req-140085e9-f615-4d39-98fa-b8939b72c23a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0dda6ba6-28d5-468f-aea2-c3658d2cd2e0 +Openstack-Request-Id: req-f18d25f5-6559-4aad-99af-294646109c3a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "d351def2-a1e4-41da-9b94-f55ffdde677a", "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"}]}]} +{"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"}]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0dda6ba6-28d5-468f-aea2-c3658d2cd2e0 +Openstack-Request-Id: req-f18d25f5-6559-4aad-99af-294646109c3a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "d351def2-a1e4-41da-9b94-f55ffdde677a", "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"}]}]} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} -GOT:Response: 200 OK +{"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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_155_nodes_ports_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_155_nodes_ports_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_217_lessee_admin_cannot_delete_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_217_lessee_admin_cannot_delete_vendor_passthru ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a9d2002a-0369-435e-8433-997685c50c6d +Openstack-Request-Id: req-f7cd321f-97af-4d09-a7cf-defdfc163b71 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "a3bdf421-d134-4705-a0b2-d0df8e93b90c", "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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a9d2002a-0369-435e-8433-997685c50c6d +Openstack-Request-Id: req-93af64b2-8d82-4dd4-a759-85196022063c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "a3bdf421-d134-4705-a0b2-d0df8e93b90c", "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"}]}]} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-968c5c9e-a7e1-4e48-bd67-ac4e543652eb +Openstack-Request-Id: req-a6b39812-1c55-40bb-ba26-5dd6c65453c0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "77e90e42-121b-4cf8-bdd5-e10f19871dbf", "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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-968c5c9e-a7e1-4e48-bd67-ac4e543652eb +Openstack-Request-Id: req-de5d8bd2-2c21-4a7f-86ad-2335ba92d6bd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "77e90e42-121b-4cf8-bdd5-e10f19871dbf", "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"}]}]} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_016_owner_reader_can_get_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_016_owner_reader_can_get_node ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_exiting_no_worker_avail -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_exiting_no_worker_avail ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_noportgroup -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_noportgroup ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e423620d-012e-4d9f-84f2-10da908666f8 +Openstack-Request-Id: req-6f27ae7e-6975-44fc-bf60-da5896a56243 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37351,7 +36908,7 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a2230328-7702-4e6e-8767-ebc3cf567f71 +Openstack-Request-Id: req-458cfd17-d084-4f16-a4ad-538ffbf32fe3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37360,7 +36917,7 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ee35cdbf-2aab-424f-9370-e3946f76b7a8 +Openstack-Request-Id: req-62af2ad2-4336-4974-a628-88015afa98b2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37369,7 +36926,7 @@ GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cfe926e4-63f7-4993-a5da-2b8a77843738 +Openstack-Request-Id: req-a3d96acb-bb53-4849-a058-386eecb6159c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37378,7 +36935,7 @@ GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b338ffd2-d314-4ae1-8e62-4df72e2317c9 +Openstack-Request-Id: req-1c5a251f-e1d5-44d9-a80a-684825257229 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37387,7 +36944,7 @@ GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3c518117-5c62-4fef-95d2-91f9dca1349c +Openstack-Request-Id: req-157db5f8-5e6f-4acc-a80a-469b76bc880d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37396,7 +36953,7 @@ GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9004db03-0f48-4c4f-a840-b0fa6d33eb9b +Openstack-Request-Id: req-f53bc633-4f48-47ff-a9a3-6b38ac7f7bbc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37405,7 +36962,7 @@ GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-647acdc4-990c-4a34-900b-23a278a62e12 +Openstack-Request-Id: req-c0a92059-7a77-46fe-95e4-78d48c6d6961 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37414,7 +36971,7 @@ GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e2008d9e-6e20-4135-894c-bec4e9e90b53 +Openstack-Request-Id: req-706a6186-1c4c-4047-af6d-b373d3bd7e7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37423,7 +36980,7 @@ GET: /v1/volume {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e6c2c6cf-229d-4899-af99-0dab60b53b49 +Openstack-Request-Id: req-ec627ed4-4bc3-4319-8fc7-01d8e16ad376 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37432,448 +36989,400 @@ GET: /v1/volume {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4e0e5d79-7732-4518-a686-989aceaf0d37 +Openstack-Request-Id: req-b4aa10d5-cc21-454c-a137-c4c174154c88 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} API ACL Testing Path get /v1/volume GET: /v1/volume {} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-0370c9bc-5388-4bd8-ac15-af9938156a8b -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-8830f622-dc79-4633-9f9b-2e534dad86f8 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} -GOT:Response: 403 Forbidden +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_168_volume_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_168_volume_get_observer ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_path_verify_ca_dir +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_path_verify_ca_dir ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_156_nodes_ports_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_156_nodes_ports_get_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_path_verify_ca_file +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_path_verify_ca_file ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_169_volume_connectors_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_169_volume_connectors_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_218_lessee_manager_cannot_delete_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_218_lessee_manager_cannot_delete_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_inspection_false +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_inspection_false ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_157_nodes_ports_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_157_nodes_ports_detail_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_inspection_true_raises +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_inspection_true_raises ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_170_volume_connectors_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_170_volume_connectors_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_integer_auth_protocol +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_integer_auth_protocol ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_219_lessee_member_cannot_delete_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_219_lessee_member_cannot_delete_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_invalid_auth_protocol +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_invalid_auth_protocol ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_158_nodes_ports_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_158_nodes_ports_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_171_volume_connectors_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_171_volume_connectors_get_observer ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_invalid_priv_protocol +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_invalid_priv_protocol ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_no_auth_priv_protocols +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_no_auth_priv_protocols ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_220_lessee_reader_cannot_delete_vendor_passthru +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_220_lessee_reader_cannot_delete_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_boolean_false +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_boolean_false ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_172_volume_connectors_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_172_volume_connectors_post_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_boolean_true +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_boolean_true ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0f268d18-9e60-4ebe-9a74-bb80ab327fe4 +Openstack-Request-Id: req-4a2ef022-cddf-468d-bc75-d577a0f1097e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} -GOT:Response: 403 Forbidden +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d1830e4c-30a7-464e-9067-218bbef0dbf5 +Openstack-Request-Id: req-4a2ef022-cddf-468d-bc75-d577a0f1097e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_172_volume_connectors_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_172_volume_connectors_post_admin ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_exiting_with_other_exception -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_exiting_with_other_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_017_lessee_admin_can_get_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_017_lessee_admin_can_get_node ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_maintenance_after_lock -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_maintenance_after_lock ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_no_deploywait_after_lock -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_no_deploywait_after_lock ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_portgroup_nostandalone_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_portgroup_nostandalone_ports ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_173_volume_connectors_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_173_volume_connectors_post_member ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_not_mapped -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_not_mapped ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_018_lessee_manager_can_get_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_018_lessee_manager_can_get_node ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_timeout -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_timeout ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_portgroup_standalone_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_portgroup_standalone_ports ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_worker_limit -ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_worker_limit ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_174_volume_connectors_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_174_volume_connectors_post_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_019_lessee_member_can_get_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_019_lessee_member_can_get_node ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test__sync_power_state_multiple_nodes -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test__sync_power_state_multiple_nodes ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_noportgroup -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_noportgroup ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_disappears_on_acquire -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_disappears_on_acquire ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_deploywait_on_acquire -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_deploywait_on_acquire ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_175_volume_volume_connector_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_175_volume_volume_connector_id_get_admin ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_enroll_on_acquire -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_enroll_on_acquire ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_020_lessee_reader_can_get_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_020_lessee_reader_can_get_node ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_portgroup_nostandalone_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_portgroup_nostandalone_ports ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_maintenance_on_acquire -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_maintenance_on_acquire ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_power_transition_on_acquire -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_power_transition_on_acquire ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_176_volume_volume_connector_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_176_volume_volume_connector_id_get_member ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_portgroup_standalone_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_portgroup_standalone_ports ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_locked_on_acquire -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_locked_on_acquire ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_021_third_party_admin_cannot_get_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_021_third_party_admin_cannot_get_node ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_not_mapped -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_not_mapped ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_177_volume_volume_connector_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_177_volume_volume_connector_id_get_observer ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_single_node -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_single_node ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address_fail -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address_fail ... ok -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_single_node_adopt_failed -ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_single_node_adopt_failed ... ok +{"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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ae3b8314-3984-49d7-8444-4ef9965ea957 +Openstack-Request-Id: req-3f82d2a6-5179-4747-8678-7566eb8a99b1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "2af84f92-7930-459a-8521-4db072ec518c", "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"}]}]} +{"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"}]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ae3b8314-3984-49d7-8444-4ef9965ea957 +Openstack-Request-Id: req-3f82d2a6-5179-4747-8678-7566eb8a99b1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "2af84f92-7930-459a-8521-4db072ec518c", "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"}]}]} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} +{"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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-13841c93-4487-47ba-9493-1a66d8b0e563 +Openstack-Request-Id: req-90ad7431-86f1-4e85-b0b9-25a4b9aad115 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "a0196a16-e9a2-4ba1-9ce8-faf724bf9353", "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"}]}]} +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:07.288822+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-13841c93-4487-47ba-9493-1a66d8b0e563 +Openstack-Request-Id: req-90ad7431-86f1-4e85-b0b9-25a4b9aad115 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "a0196a16-e9a2-4ba1-9ce8-faf724bf9353", "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"}]}]} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:07.288822+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-86eee188-8015-4966-8043-f1e653716517 +Openstack-Request-Id: req-0d6eb68b-f649-4c0a-93cb-bd039f2cc1e9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "9bae7898-b7b6-438a-8200-7d32c3cc4595", "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"}]}]} +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:07.514531+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-86eee188-8015-4966-8043-f1e653716517 +Openstack-Request-Id: req-0d6eb68b-f649-4c0a-93cb-bd039f2cc1e9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "9bae7898-b7b6-438a-8200-7d32c3cc4595", "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"}]}]} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:07.514531+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4d326eed-25c2-4a8e-9004-70f4f218bf1d +Openstack-Request-Id: req-8970259a-0a70-4801-9b2b-7da337e15051 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "f0cf65a3-9407-4aa3-8976-46f00f8f1abf", "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"}]}]} -ACL Test GOT Response: 200 OK +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:07.745123+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_159_nodes_ports_detail_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_159_nodes_ports_detail_get_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_default_value +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_default_value ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_160_portgroups_ports_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_160_portgroups_ports_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_string_false +ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_string_false ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_173_volume_connectors_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_173_volume_connectors_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_221_owner_reader_get_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_221_owner_reader_get_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_file_based_fw_to_copies_file_to_target +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_file_based_fw_to_copies_file_to_target ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_file_based_fw_to_gets_invoked_for_file_based_firmware +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_file_based_fw_to_gets_invoked_for_file_based_firmware ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_161_portgroups_ports_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_161_portgroups_ports_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_http_based_fw_to_downloads_the_fw_file +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_http_based_fw_to_downloads_the_fw_file ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_174_volume_connectors_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_174_volume_connectors_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_222_lessee_reader_get_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_222_lessee_reader_get_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_http_based_fw_to_gets_invoked_for_http_based_firmware +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_http_based_fw_to_gets_invoked_for_http_based_firmware ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_calls__download_http_based_fw_to +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_calls__download_http_based_fw_to ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_162_portgroups_ports_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_162_portgroups_ports_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_175_volume_volume_connector_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_175_volume_volume_connector_id_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_creates_temp_url +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_creates_temp_url ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_223_third_party_admin_cannot_get_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_223_third_party_admin_cannot_get_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_gets_invoked_for_swift_based_firmware +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_gets_invoked_for_swift_based_firmware ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_163_portgroups_ports_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_163_portgroups_ports_detail_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_176_volume_volume_connector_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_176_volume_volume_connector_id_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_calls_process_firmware_image +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_calls_process_firmware_image ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_224_owner_admin_can_put_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_224_owner_admin_can_put_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_doesnt_upload_firmware +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_doesnt_upload_firmware ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_177_volume_volume_connector_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_177_volume_volume_connector_id_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_164_portgroups_ports_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_164_portgroups_ports_detail_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_file_if_no_upload +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_file_if_no_upload ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_178_volume_volume_connector_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_178_volume_volume_connector_id_patch_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_swift +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_swift ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_165_portgroups_ports_detail_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_165_portgroups_ports_detail_get_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_webserver +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_webserver ... ok +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4d326eed-25c2-4a8e-9004-70f4f218bf1d +Openstack-Request-Id: req-a038a09e-376d-4bd9-b826-5ad473da7d9a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "f0cf65a3-9407-4aa3-8976-46f00f8f1abf", "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"}]}]} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-667a46ae-d19c-4376-a3a3-d5282e842486 +Openstack-Request-Id: req-6b60ce32-afe0-46ae-bf90-d2dbf0a77a68 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "66e72a59-8903-4a2e-97c5-bd5f1fb99bb8", "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"}]}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-667a46ae-d19c-4376-a3a3-d5282e842486 +Openstack-Request-Id: req-6b60ce32-afe0-46ae-bf90-d2dbf0a77a68 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "66e72a59-8903-4a2e-97c5-bd5f1fb99bb8", "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"}]}]} -API ACL Testing Path get /v1/nodes -GET: /v1/nodes {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1420a83d-b7bd-4f41-989b-2e4e8b6c76c9 +Openstack-Request-Id: req-6489426e-74c3-4ecd-8835-d964dc583823 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": []} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1420a83d-b7bd-4f41-989b-2e4e8b6c76c9 +Openstack-Request-Id: req-6489426e-74c3-4ecd-8835-d964dc583823 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": []} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 {} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_022_owner_reader_can_get_their_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_022_owner_reader_can_get_their_node ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address_no_vif -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address_no_vif ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_178_volume_volume_connector_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_178_volume_volume_connector_id_patch_admin ... ok -ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_fail -ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_fail ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_novif_nopxe_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_novif_nopxe_ports ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_023_owner_reader_cannot_get_other_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_023_owner_reader_cannot_get_other_node ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_179_volume_volume_connector_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_179_volume_volume_connector_id_patch_member ... ok -ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_ilo -ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_ilo ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_novif_pxe_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_novif_pxe_ports ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_pxe_ports_exc -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_pxe_ports_exc ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_180_volume_volume_connector_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_180_volume_volume_connector_id_patch_observer ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6b6b1c6d-8047-4abf-b531-9ea1305f981e +Openstack-Request-Id: req-cc58628b-9805-4e2f-a89d-afb1e23446f8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2024-01-06T13:39:30.307807+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": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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"}]} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6b6b1c6d-8047-4abf-b531-9ea1305f981e +Openstack-Request-Id: req-cc58628b-9805-4e2f-a89d-afb1e23446f8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2024-01-06T13:39:30.307807+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": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9e099f7e-61af-4ea0-b1aa-903b01d1bfd4 +Openstack-Request-Id: req-7175c444-94f6-4ef7-9932-d79407d1c0b3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9e099f7e-61af-4ea0-b1aa-903b01d1bfd4 +Openstack-Request-Id: req-7175c444-94f6-4ef7-9932-d79407d1c0b3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f {} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_024_lessee_reader_can_get_their_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_024_lessee_reader_can_get_their_node ... ok -ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_ipmi -ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_ipmi ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_vif_nopxe_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_vif_nopxe_ports ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_025_lessee_reader_cant_get_other_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_025_lessee_reader_cant_get_other_node ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_181_volume_volume_connector_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_181_volume_volume_connector_id_delete_admin ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_vif_pxe_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_vif_pxe_ports ... ok -ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_manual_management -ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_manual_management ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_remove_address -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_remove_address ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_noports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_noports ... ok -ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_snmp -ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_snmp ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4192be42-2622-4e34-8fe9-e15de438caca +Openstack-Request-Id: req-186151b9-e566-49af-9d61-f3b5d36e33d3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2024-01-06T13:39:32.149664+00:00", "updated_at": "2024-01-06T13:39:32.211078+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "73700173-dd27-468a-86ea-5378fae9c382", "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "73700173-dd27-468a-86ea-5378fae9c382", "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"}]} +{"traits": []} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4192be42-2622-4e34-8fe9-e15de438caca +Openstack-Request-Id: req-186151b9-e566-49af-9d61-f3b5d36e33d3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2024-01-06T13:39:32.149664+00:00", "updated_at": "2024-01-06T13:39:32.211078+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "73700173-dd27-468a-86ea-5378fae9c382", "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "73700173-dd27-468a-86ea-5378fae9c382", "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"}]} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} -GOT:Response: 404 Not Found +{"traits": []} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3a5d61af-c70c-4eac-9289-bc8a7dbc1fed +Openstack-Request-Id: req-a39d6251-d0e9-463d-ab8e-d60bef809ed8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"traits": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3a5d61af-c70c-4eac-9289-bc8a7dbc1fed +Openstack-Request-Id: req-a39d6251-d0e9-463d-ab8e-d60bef809ed8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 {} +{"traits": []} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ad67b1f7-027f-4f41-b168-4942035ec7bf +Openstack-Request-Id: req-d58a26e6-6b6c-4f94-9364-aaf3a7850403 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_026_third_party_admin_cant_get_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_026_third_party_admin_cant_get_node ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_novif_nopxe_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_novif_nopxe_ports ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_027_owner_reader_can_get_restricted_fields -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_027_owner_reader_can_get_restricted_fields ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_novif_pxe_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_novif_pxe_ports ... ok -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test__check_inspect_wait_timeouts -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test__check_inspect_wait_timeouts ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_vif_nopxe_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_vif_nopxe_ports ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_182_volume_volume_connector_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_182_volume_volume_connector_id_delete_member ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ad67b1f7-027f-4f41-b168-4942035ec7bf +Openstack-Request-Id: req-d58a26e6-6b6c-4f94-9364-aaf3a7850403 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-42cfc161-c389-49d6-8898-7721e7c9d954 +Openstack-Request-Id: req-b21ff05f-4f1a-47c9-a4e1-1ae9cf53a7f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2024-01-06T13:39:33.835546+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": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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"}]} -last_error -meow -reservation -lolcats -driver_internal_info -{'private_state': 'secret value'} -driver_info -{'foo': 'bar', 'fake_password': '******'} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-42cfc161-c389-49d6-8898-7721e7c9d954 +Openstack-Request-Id: req-b21ff05f-4f1a-47c9-a4e1-1ae9cf53a7f5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2024-01-06T13:39:33.835546+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": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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"}]} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f {} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_028_lessee_reader_cannot_get_restricted_fields -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_028_lessee_reader_cannot_get_restricted_fields ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_vif_pxe_ports -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_vif_pxe_ports ... ok -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_ok -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_183_volume_volume_connector_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_183_volume_volume_connector_id_delete_observer ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach ... ok -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_power_validate_fail -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_power_validate_fail ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_active_node -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_active_node ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_184_volume_targets_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_184_volume_targets_get_admin ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_225_owner_manager_can_put_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_225_owner_manager_can_put_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_166_volume_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_166_volume_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_uploads_firmware_to_swift +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_uploads_firmware_to_swift ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_179_volume_volume_connector_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_179_volume_volume_connector_id_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_226_owner_member_cannot_put_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_226_owner_member_cannot_put_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_uploads_firmware_to_webserver +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_uploads_firmware_to_webserver ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_file_based_me +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_file_based_me ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_180_volume_volume_connector_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_180_volume_volume_connector_id_patch_observer ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_swift_based_me +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_swift_based_me ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_227_lessee_admin_cannot_put_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_227_lessee_admin_cannot_put_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_181_volume_volume_connector_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_181_volume_volume_connector_id_delete_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_webserver_based_me +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_webserver_based_me ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__validate_sum_components +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__validate_sum_components ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__validate_sum_components_fails +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__validate_sum_components_fails ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_228_lessee_manager_cannot_put_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_228_lessee_manager_cannot_put_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_167_volume_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_167_volume_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_img_loc_sets_these_attributes +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_img_loc_sets_these_attributes ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_processor_ctor_sets_parsed_url_attrib_of_fw_processor +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_processor_ctor_sets_parsed_url_attrib_of_fw_processor ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7d20d079-aca9-4740-97bd-06b845e45047 +Openstack-Request-Id: req-79062c17-e205-41ff-9f78-7ef334204acd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2024-01-06T13:39:34.427366+00:00", "updated_at": "2024-01-06T13:39:34.492296+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "0da159b6-0ff7-4f87-9bbc-e46d0c4927d1", "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "0da159b6-0ff7-4f87-9bbc-e46d0c4927d1", "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"}]} -last_error -** Value Redacted - Requires baremetal:node:get:last_error permission. ** -reservation -** Redacted - requires baremetal:node:get:reservation permission. ** -driver_internal_info -{'content': '** Redacted - Requires baremetal:node:get:driver_internal_info permission. **'} -driver_info -{'content': '** Redacted - requires baremetal:node:get:driver_info permission. **'} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7d20d079-aca9-4740-97bd-06b845e45047 +Openstack-Request-Id: req-2e54308a-ef33-4f20-b67f-f51b64a39002 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2024-01-06T13:39:34.427366+00:00", "updated_at": "2024-01-06T13:39:34.492296+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "0da159b6-0ff7-4f87-9bbc-e46d0c4927d1", "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "0da159b6-0ff7-4f87-9bbc-e46d0c4927d1", "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"}]} -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c001a87a-e216-490d-a9f6-0cec6a5a00c0 +Openstack-Request-Id: req-b5059581-62ad-402b-876a-a9e275b0c671 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2024-01-06T13:39:35.036081+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": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "2024-01-06T13:39:35.097140+00:00", "updated_at": "2024-01-06T13:39:35.160871+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", "traits": []}, "instance_uuid": "b24c76a9-07c1-4c35-addf-23ebfd9638da", "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-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "b24c76a9-07c1-4c35-addf-23ebfd9638da", "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"}]}]} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_029_owner_reader_can_get_detail -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_029_owner_reader_can_get_detail ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_active_node_failure -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_active_node_failure ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_185_volume_targets_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_185_volume_targets_get_member ... ok -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_raises_error -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_raises_error ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_failure -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_failure ... ok -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c001a87a-e216-490d-a9f6-0cec6a5a00c0 +Openstack-Request-Id: req-f5acc600-bc65-4e3c-8b7c-6459d62bf936 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2024-01-06T13:39:35.036081+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": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "2024-01-06T13:39:35.097140+00:00", "updated_at": "2024-01-06T13:39:35.160871+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", "traits": []}, "instance_uuid": "b24c76a9-07c1-4c35-addf-23ebfd9638da", "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-7d8739cee205", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "b24c76a9-07c1-4c35-addf-23ebfd9638da", "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"}]}]} -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_030_lessee_reader_can_get_detail -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_030_lessee_reader_can_get_detail ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_multiple_segment_mappings -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_multiple_segment_mappings ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_031_third_party_admin_cannot_get_detail -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_031_third_party_admin_cannot_get_detail ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'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-9ce4f1c6-f1c8-4ae9-a397-fc3a3fec16f2 +Openstack-Request-Id: req-6487d0a7-a4be-426b-9c5d-bc68d284f789 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37882,7 +37391,7 @@ POST: /v1/volume/connectors {'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-e398d44d-7af9-4737-9f09-a467e3b6cbad +Openstack-Request-Id: req-b87f3153-9df4-45d9-bf52-fbeb176bbdee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37891,7 +37400,7 @@ POST: /v1/volume/connectors {'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-7144b720-0844-4f94-ab9b-16df35fa1865 +Openstack-Request-Id: req-835807a3-cef2-475e-9c00-9ce5b3991722 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37900,7 +37409,7 @@ GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-710c1701-e892-400d-8ce2-77b5400eb08f +Openstack-Request-Id: req-a234b497-2a0c-4e55-a886-0b23ec2baf10 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37909,7 +37418,7 @@ GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-61f0de8d-a1ed-4092-8d46-d66769a9597f +Openstack-Request-Id: req-701cbe02-52ae-4a48-bc9e-e6394174d4b8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37918,7 +37427,7 @@ GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-dc68eb29-0584-4811-9f15-e2679451ebb6 +Openstack-Request-Id: req-5977ba7c-82d9-4558-bae1-818952b6732e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37927,7 +37436,7 @@ PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b8a46ac1-5f37-4e02-b785-c5b3c0e4ad5b +Openstack-Request-Id: req-bc4348f9-b775-4390-8411-8db85ac1487b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37936,7 +37445,7 @@ PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f73499b1-6389-4981-9d1e-dc2d4c99381b +Openstack-Request-Id: req-1787fd71-a475-46e1-a1f0-413a4fd3afc3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37945,7 +37454,7 @@ PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f1ec256f-00a8-4fda-bf7b-213e366a887d +Openstack-Request-Id: req-cd635cee-a5f0-498a-9ced-ec1ccb579a62 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -37954,10204 +37463,6623 @@ DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1065fc80-51a4-41d8-98c7-1689c224ebe4 +Openstack-Request-Id: req-248b39e3-4018-4484-a311-5f4b8244d92a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_182_volume_volume_connector_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_182_volume_volume_connector_id_delete_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_processor_ctor_throws_exception_with_invalid_firmware_url +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_processor_ctor_throws_exception_with_invalid_firmware_url ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_183_volume_volume_connector_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_183_volume_volume_connector_id_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_229_lessee_member_cannot_put_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_229_lessee_member_cannot_put_traits ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-87bf014d-b95a-476e-8038-de488d460c10 +Openstack-Request-Id: req-8970259a-0a70-4801-9b2b-7da337e15051 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:07.745123+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "portgroup_uuid": null}]} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4ca38e8b-5fc7-4436-aae3-b0a031d6e67c +Openstack-Request-Id: req-acd35a0e-2a94-4606-a227-ae2f111e9d22 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets -GET: /v1/volume/targets {} -GOT:Response: 403 Forbidden +{"ports": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-7ca1e63d-5361-48c0-8058-2551b83317b3 +Openstack-Request-Id: req-acd35a0e-2a94-4606-a227-ae2f111e9d22 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets -GET: /v1/volume/targets {} -GOT:Response: 403 Forbidden +{"ports": []} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1277c8cd-c695-4054-afd4-c13e7a1d90eb +Openstack-Request-Id: req-c0aa5147-d3ac-4bc5-bea7-14a500e07bc2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets -GET: /v1/volume/targets {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_186_volume_targets_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_186_volume_targets_get_observer ... ok -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_return_inspect_wait -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_return_inspect_wait ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_portgroup_no_address -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_portgroup_no_address ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_187_volume_targets_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_187_volume_targets_post_admin ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_portgroup_physnet_inconsistent -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_portgroup_physnet_inconsistent ... ok -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_return_inspecting -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_return_inspecting ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_032_owner_admin_can_patch_node_extra -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_032_owner_admin_can_patch_node_extra ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_update_port_exception -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_update_port_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_188_volume_targets_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_188_volume_targets_post_member ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_with_physnet -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_with_physnet ... ok -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_return_other_state -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_return_other_state ... ok +{"ports": []} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-c0aa5147-d3ac-4bc5-bea7-14a500e07bc2 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"ports": []} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-da085175-0371-45c8-baa8-5f1193d6130e +Openstack-Request-Id: req-5ca193b4-d383-4f5e-bb10-3657744b5b57 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2024-01-06T13:39:36.161761+00:00", "updated_at": "2024-01-06T13:39:36.257479+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "09417976-7208-496f-bc31-213ebeb590d0", "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "09417976-7208-496f-bc31-213ebeb590d0", "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"}]}]} +{"ports": []} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-da085175-0371-45c8-baa8-5f1193d6130e +Openstack-Request-Id: req-5ca193b4-d383-4f5e-bb10-3657744b5b57 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2024-01-06T13:39:36.161761+00:00", "updated_at": "2024-01-06T13:39:36.257479+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, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "09417976-7208-496f-bc31-213ebeb590d0", "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", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "cpus": "8", "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, "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": "09417976-7208-496f-bc31-213ebeb590d0", "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"}]}]} -API ACL Testing Path get /v1/nodes/detail -GET: /v1/nodes/detail {} +{"ports": []} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4301371e-79fc-46a2-b7d8-577d4d68d6cf +Openstack-Request-Id: req-933f4ab6-40a2-49ec-9578-41fde76c5bb4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": []} +{"ports": []} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4301371e-79fc-46a2-b7d8-577d4d68d6cf +Openstack-Request-Id: req-933f4ab6-40a2-49ec-9578-41fde76c5bb4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"nodes": []} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +{"ports": []} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a6e0030e-7f6c-4ccf-960c-28c50b88e1bd +Openstack-Request-Id: req-5131434d-096e-48a6-8919-3ddba3753e3c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"ports": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a6e0030e-7f6c-4ccf-960c-28c50b88e1bd +Openstack-Request-Id: req-5131434d-096e-48a6-8919-3ddba3753e3c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_033_owner_manager_can_patch_node_extra -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_033_owner_manager_can_patch_node_extra ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_189_volume_targets_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_189_volume_targets_post_observer ... ok -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_unexpected_error -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_unexpected_error ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_190_volume_volume_target_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_190_volume_volume_target_id_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_034_owner_member_can_patch_node_extra -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_034_owner_member_can_patch_node_extra ... ok -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_validate_fail -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_validate_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_191_volume_volume_target_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_191_volume_volume_target_id_get_member ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_active_node -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_active_node ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_035_owner_reader_cannot_patch_node_extra -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_035_owner_reader_cannot_patch_node_extra ... ok -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_worker_pool_full -ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_worker_pool_full ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_active_node_failure -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_active_node_failure ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_192_volume_volume_target_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_192_volume_volume_target_id_get_observer ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_deleting_node -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_deleting_node ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_036_lessee_admin_can_patch_node_extra -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_036_lessee_admin_can_patch_node_extra ... ok -ironic.tests.unit.conductor.test_manager.RaidTestCases.test_get_raid_logical_disk_properties -ironic.tests.unit.conductor.test_manager.RaidTestCases.test_get_raid_logical_disk_properties ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_not_attached -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_not_attached ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_193_volume_volume_target_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_193_volume_volume_target_id_patch_admin ... ok -ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config -ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_portgroup -ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_portgroup ... ok -ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config_empty -ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config_empty ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_037_lessee_manager_can_patch_node_extra -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_037_lessee_manager_can_patch_node_extra ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_extra_port -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_extra_port ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_194_volume_volume_target_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_194_volume_volume_target_id_patch_member ... ok -ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config_invalid_parameter_value -ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config_invalid_parameter_value ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_extra_portgroup -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_extra_portgroup ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_internal_info_port -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_internal_info_port ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_038_lessee_member_can_patch_node_extra -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_038_lessee_member_can_patch_node_extra ... ok -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_195_volume_volume_target_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_195_volume_volume_target_id_patch_observer ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_internal_info_portgroup -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_internal_info_portgroup ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_port_like_obj_by_vif_id_in_internal_info -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_port_like_obj_by_vif_id_in_internal_info ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_039_lessee_reader_cannot_patch_node_extra -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_039_lessee_reader_cannot_patch_node_extra ... ok -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data_multiple_workers -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data_multiple_workers ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_196_volume_volume_target_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_196_volume_volume_target_id_delete_admin ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_port_like_obj_by_vif_id_not_attached -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_port_like_obj_by_vif_id_not_attached ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_vif_id_by_port_like_obj_in_internal_info -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_vif_id_by_port_like_obj_in_internal_info ... ok -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_all -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_all ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_197_volume_volume_target_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_197_volume_volume_target_id_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_040_third_party_admin_cannot_patch_node_extra -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_040_third_party_admin_cannot_patch_node_extra ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_vif_id_by_port_like_obj_not_attached -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_vif_id_by_port_like_obj_not_attached ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__save_vif_to_port_like_obj_port -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__save_vif_to_port_like_obj_port ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_198_volume_volume_target_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_198_volume_volume_target_id_delete_observer ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__save_vif_to_port_like_obj_portgroup -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__save_vif_to_port_like_obj_portgroup ... ok -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_non -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_non ... ok -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +{"ports": []} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-75b02f81-8541-4aa3-8885-5d9f81444d72 +Openstack-Request-Id: req-199aed40-1f6b-4520-9e15-a5d3f30da40a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"ports": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-75b02f81-8541-4aa3-8885-5d9f81444d72 +Openstack-Request-Id: req-199aed40-1f6b-4520-9e15-a5d3f30da40a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +{"ports": []} +API ACL Testing Path get /v1/volume +GET: /v1/volume {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-65f0e460-519c-4d6e-bddb-f66a7552c13d +Openstack-Request-Id: req-ec6d9865-bc65-4b19-bfd6-44e2f4a4c499 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-65f0e460-519c-4d6e-bddb-f66a7552c13d +Openstack-Request-Id: req-ec6d9865-bc65-4b19-bfd6-44e2f4a4c499 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden +{"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"}]} +API ACL Testing Path get /v1/volume +GET: /v1/volume {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5d59fc6d-9c27-49ff-b953-9151010adf33 +Openstack-Request-Id: req-b0a736f1-bcee-4d87-bbcc-cc760d8fbe44 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5d59fc6d-9c27-49ff-b953-9151010adf33 +Openstack-Request-Id: req-b0a736f1-bcee-4d87-bbcc-cc760d8fbe44 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"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"}]} +API ACL Testing Path get /v1/volume +GET: /v1/volume {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_168_volume_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_168_volume_get_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_empty_parameter +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_empty_parameter ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_invalid_component +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_invalid_component ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_184_volume_targets_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_184_volume_targets_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_missing_parameter +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_missing_parameter ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_169_volume_connectors_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_169_volume_connectors_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_230_third_party_admin_cannot_put_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_230_third_party_admin_cannot_put_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum_invalid_component +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum_invalid_component ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum_with_component +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum_with_component ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_185_volume_targets_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_185_volume_targets_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_170_volume_connectors_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_170_volume_connectors_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_231_owner_admin_can_delete_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_231_owner_admin_can_delete_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_186_volume_targets_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_186_volume_targets_get_observer ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_calls__download_fw_to +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_calls__download_fw_to ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_171_volume_connectors_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_171_volume_connectors_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_232_owner_manager_can_delete_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_232_owner_manager_can_delete_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_187_volume_targets_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_187_volume_targets_post_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_calls__extract_fw_from_file +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_calls__extract_fw_from_file ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_172_volume_connectors_post_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_172_volume_connectors_post_admin ... ok GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1a71ff20-347e-4fdf-b9e6-f121af4a3490 +Openstack-Request-Id: req-50b8090b-e841-4519-ae90-510368d8135b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1a71ff20-347e-4fdf-b9e6-f121af4a3490 +Openstack-Request-Id: req-50b8090b-e841-4519-ae90-510368d8135b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4f0cd4a5-4a9a-489b-9810-a82aa2b42c1e +Openstack-Request-Id: req-d7418425-38f2-483b-8d5a-def564b2add3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4f0cd4a5-4a9a-489b-9810-a82aa2b42c1e +Openstack-Request-Id: req-d7418425-38f2-483b-8d5a-def564b2add3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f37aa75e-e29b-4fa9-a423-6638ac408664 +Openstack-Request-Id: req-25971a3c-6161-49cf-9b50-4df2d6a09eb4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f37aa75e-e29b-4fa9-a423-6638ac408664 +Openstack-Request-Id: req-25971a3c-6161-49cf-9b50-4df2d6a09eb4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9ccdd1a7-22b1-44d3-91e8-1fcdf7cdd426 +Openstack-Request-Id: req-c9688b8f-d1fe-4a63-a2c1-72d33c44fcbe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9ccdd1a7-22b1-44d3-91e8-1fcdf7cdd426 +Openstack-Request-Id: req-c9688b8f-d1fe-4a63-a2c1-72d33c44fcbe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3bc30d4e-9084-42b3-bb6f-af8e7b7d2c10 +Openstack-Request-Id: req-69e15754-a944-4bcb-bde8-de4f09d2b402 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-3bc30d4e-9084-42b3-bb6f-af8e7b7d2c10 +Openstack-Request-Id: req-69e15754-a944-4bcb-bde8-de4f09d2b402 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_cleaning -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_cleaning ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_041_owner_admin_can_change_drivers -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_041_owner_admin_can_change_drivers ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_199_nodes_volume_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_199_nodes_volume_get_admin ... ok -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_part -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_part ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_provisioning -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_provisioning ... ok -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_rescuing -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_rescuing ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_042_owner_manager_can_change_drivers -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_042_owner_manager_can_change_drivers ... ok -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e8d7316e-2167-4b1b-a85a-8b3ca88bf860 +Openstack-Request-Id: req-546c11bc-ee20-498d-8df8-1e7b3f1cc9ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/targets -POST: /v1/volume/targets {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-85f3c821-6eeb-47d5-9328-ea3c349a22b6 +Openstack-Request-Id: req-546c11bc-ee20-498d-8df8-1e7b3f1cc9ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/targets -POST: /v1/volume/targets {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-f1b484da-0cfd-44de-8804-fc74cc66e777 +Openstack-Request-Id: req-9e699e46-62f8-4a9c-ae49-add7cd567a19 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/targets -POST: /v1/volume/targets {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b5a5f133-3135-4e90-8fa9-879dafa0395f +Openstack-Request-Id: req-9e699e46-62f8-4a9c-ae49-add7cd567a19 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c09e8e54-9cd1-4966-98e6-ea286e81d7df +Openstack-Request-Id: req-e870c47a-5fbf-4037-9546-635990f8a57a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-bfacce08-2111-4aee-bb78-df4b7d763801 +Openstack-Request-Id: req-e870c47a-5fbf-4037-9546-635990f8a57a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_233_owner_member_cannot_delete_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_233_owner_member_cannot_delete_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_188_volume_targets_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_188_volume_targets_post_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_throws_error_if_checksum_validation_fails +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_throws_error_if_checksum_validation_fails ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_234_lessee_admin_cannot_delete_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_234_lessee_admin_cannot_delete_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_189_volume_targets_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_189_volume_targets_post_observer ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0da89915-32ea-4265-851b-ed7828329d8f +Openstack-Request-Id: req-752dba53-dff1-41b2-b630-d9079f79c8a1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-79b10b1a-8503-46c0-be50-82128de54c8f +Openstack-Request-Id: req-752dba53-dff1-41b2-b630-d9079f79c8a1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"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"}]} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-adabc0f1-173e-4cf1-9c30-b38fc4d460e5 +Openstack-Request-Id: req-7148b436-72d6-4c37-a314-31dd285ad812 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a15f33d7-37ef-4140-898d-3b99982031f2 +Openstack-Request-Id: req-7148b436-72d6-4c37-a314-31dd285ad812 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"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"}]} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-13527483-d9fc-44be-b7b5-9c711240ef39 +Openstack-Request-Id: req-99c2f6c9-a12b-48de-b6bc-2db5121786a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e99db6de-9be4-43e8-b9d7-7591f8645817 +Openstack-Request-Id: req-99c2f6c9-a12b-48de-b6bc-2db5121786a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found +{"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"}]} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2485b7fb-2694-473a-8a67-e5117a6ad985 +Openstack-Request-Id: req-8f04bb62-4d72-4971-81cb-f192479f31e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} -GOT:Response: 403 Forbidden +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8ee18a4c-a18c-40df-aa3b-5a0109facf80 +Openstack-Request-Id: req-8f04bb62-4d72-4971-81cb-f192479f31e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_200_nodes_volume_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_200_nodes_volume_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_201_nodes_volume_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_201_nodes_volume_get_observer ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_tenant_vif -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_tenant_vif ... ok -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_maintenance -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_maintenance ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_none -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_none ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_202_nodes_volume_connectors_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_202_nodes_volume_connectors_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_043_owner_member_can_patch_all_the_things -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_043_owner_member_can_patch_all_the_things ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_extra_and_internal_priority -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_extra_and_internal_priority ... ok -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_no_management -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_no_management ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_internal -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_internal ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_203_nodes_volume_connectors_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_203_nodes_volume_connectors_get_member ... ok -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_port_and_portgroup -ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_port_and_portgroup ... ok -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_shutdown -ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_shutdown ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_044_owner_member_can_change_lessee -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_044_owner_member_can_change_lessee ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_204_nodes_volume_connectors_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_204_nodes_volume_connectors_get_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_cleaning -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_cleaning ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_045_lessee_admin_cannot_change_lessee -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_045_lessee_admin_cannot_change_lessee ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_invalid_state -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_invalid_state ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_205_nodes_volume_targets_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_205_nodes_volume_targets_get_admin ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_cleaning_failed -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_cleaning_failed ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_deploying -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_deploying ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_206_nodes_volume_targets_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_206_nodes_volume_targets_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_046_lessee_manager_cannot_change_lessee -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_046_lessee_manager_cannot_change_lessee ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_maintenance -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_maintenance ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_deploying_failed -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_deploying_failed ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_207_nodes_volume_targets_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_207_nodes_volume_targets_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_047_lessee_admin_cannot_change_owner -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_047_lessee_admin_cannot_change_owner ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_cleaning -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_cleaning ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_partial_ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_partial_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_208_drivers_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_208_drivers_get_admin ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_deploying -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_deploying ... ok -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/driver', 'value': 'fake-hardware'}, {'op': 'replace', 'path': '/power_interface', 'value': 'fake'}] -GOT:Response: 503 Service Unavailable +{"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"}]} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-e79b3c74-72ce-482c-ac87-851a1205b21d +Location: http://localhost/v1/volume/connectors/06e8cc16-f8d9-4624-9121-ca0faa5ae4f0 +Openstack-Request-Id: req-021d05c1-13ee-430e-887c-5d1092d228d2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "06e8cc16-f8d9-4624-9121-ca0faa5ae4f0", "created_at": "2024-01-06T14:13:11.472922+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/06e8cc16-f8d9-4624-9121-ca0faa5ae4f0", "rel": "self"}, {"href": "http://localhost/volume/connectors/06e8cc16-f8d9-4624-9121-ca0faa5ae4f0", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +ACL Test GOT Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-e79b3c74-72ce-482c-ac87-851a1205b21d +Location: http://localhost/v1/volume/connectors/06e8cc16-f8d9-4624-9121-ca0faa5ae4f0 +Openstack-Request-Id: req-021d05c1-13ee-430e-887c-5d1092d228d2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/driver', 'value': 'fake-hardware'}, {'op': 'replace', 'path': '/power_interface', 'value': 'fake'}] -GOT:Response: 503 Service Unavailable +{"uuid": "06e8cc16-f8d9-4624-9121-ca0faa5ae4f0", "created_at": "2024-01-06T14:13:11.472922+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/06e8cc16-f8d9-4624-9121-ca0faa5ae4f0", "rel": "self"}, {"href": "http://localhost/volume/connectors/06e8cc16-f8d9-4624-9121-ca0faa5ae4f0", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-1d79758a-92dc-4d9d-9bd1-82d89710ee96 +Location: http://localhost/v1/volume/connectors/b187d96f-3029-424c-ac53-860a9ef81d35 +Openstack-Request-Id: req-3a76f55d-f38d-4ce3-a3e9-df147dc09c05 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "b187d96f-3029-424c-ac53-860a9ef81d35", "created_at": "2024-01-06T14:13:11.735295+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/b187d96f-3029-424c-ac53-860a9ef81d35", "rel": "self"}, {"href": "http://localhost/volume/connectors/b187d96f-3029-424c-ac53-860a9ef81d35", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_173_volume_connectors_post_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_173_volume_connectors_post_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_verifies_checksum_of_downloaded_fw_file +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_verifies_checksum_of_downloaded_fw_file ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_235_lessee_manager_cannot_delete_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_235_lessee_manager_cannot_delete_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_verify_firmware_update_args_throws_for_invalid_update_mode +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_verify_firmware_update_args_throws_for_invalid_update_mode ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_174_volume_connectors_post_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_174_volume_connectors_post_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_verify_firmware_update_args_throws_for_no_firmware_url +ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_verify_firmware_update_args_throws_for_no_firmware_url ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_190_volume_volume_target_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_190_volume_volume_target_id_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict_excluded_capability +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict_excluded_capability ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_236_lessee_member_cannot_delete_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_236_lessee_member_cannot_delete_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_175_volume_volume_connector_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_175_volume_volume_connector_id_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict_gpu_capabilities +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict_gpu_capabilities ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_capabilities_ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_capabilities_ok ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_191_volume_volume_target_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_191_volume_volume_target_id_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_237_third_party_admin_cannot_delete_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_237_third_party_admin_cannot_delete_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_176_volume_volume_connector_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_176_volume_volume_connector_id_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail_invalid_format +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail_invalid_format ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_192_volume_volume_target_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_192_volume_volume_target_id_get_observer ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail_mac_invalid_format +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail_mac_invalid_format ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_hardware_port_empty +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_hardware_port_empty ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_238_owner_admin_can_put_custom_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_238_owner_admin_can_put_custom_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_hardware_port_not_dict +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_hardware_port_not_dict ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_177_volume_volume_connector_id_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_177_volume_volume_connector_id_get_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_ok ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_193_volume_volume_target_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_193_volume_volume_target_id_patch_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__validate_essential_keys_fail_missing_key +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__validate_essential_keys_fail_missing_key ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_239_owner_manager_can_put_custom_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_239_owner_manager_can_put_custom_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__validate_ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__validate_ok ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_178_volume_volume_connector_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_178_volume_volume_connector_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_194_volume_volume_target_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_194_volume_volume_target_id_patch_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_create_raid_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_create_raid_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_240_owner_member_cannot_put_custom_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_240_owner_member_cannot_put_custom_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_create_raid_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_create_raid_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_195_volume_volume_target_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_195_volume_volume_target_id_patch_observer ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_delete_raid_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_delete_raid_cleaning ... ok +ACL Test GOT Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-1d79758a-92dc-4d9d-9bd1-82d89710ee96 +Location: http://localhost/v1/volume/connectors/b187d96f-3029-424c-ac53-860a9ef81d35 +Openstack-Request-Id: req-3a76f55d-f38d-4ce3-a3e9-df147dc09c05 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'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 +{"uuid": "b187d96f-3029-424c-ac53-860a9ef81d35", "created_at": "2024-01-06T14:13:11.735295+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/b187d96f-3029-424c-ac53-860a9ef81d35", "rel": "self"}, {"href": "http://localhost/volume/connectors/b187d96f-3029-424c-ac53-860a9ef81d35", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'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-79173c5f-06ea-42b3-9904-2293f3865a07 +Openstack-Request-Id: req-81048c13-b878-41af-abf5-f1c12053b4ce X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-79173c5f-06ea-42b3-9904-2293f3865a07 +Openstack-Request-Id: req-81048c13-b878-41af-abf5-f1c12053b4ce X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/lessee', 'value': '198566a5-a609-4463-9800-e8920be7c2fa'}] -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-841a91b5-6e5a-4c4c-80ba-5ea55c5fa711 +Openstack-Request-Id: req-487add25-78c0-4dc5-9f15-7667f2ab2d4e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:12.202666+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"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-841a91b5-6e5a-4c4c-80ba-5ea55c5fa711 +Openstack-Request-Id: req-487add25-78c0-4dc5-9f15-7667f2ab2d4e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/lessee', 'value': '1234'}] -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:12.202666+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"} +API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e7e119e9-3f38-47a1-b381-6620249f8374 +Openstack-Request-Id: req-bc523db4-1ce9-428a-90f4-e14640f527bf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:lessee\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:12.440847+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"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e7e119e9-3f38-47a1-b381-6620249f8374 +Openstack-Request-Id: req-bc523db4-1ce9-428a-90f4-e14640f527bf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:lessee\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/lessee', 'value': '1234'}] -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:12.440847+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"} +API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ec892807-8133-4af3-89a4-b1cc4491f548 +Openstack-Request-Id: req-fe4df554-dfff-4866-b2f0-7ad6ef9a215e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:lessee\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:12.691403+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"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ec892807-8133-4af3-89a4-b1cc4491f548 +Openstack-Request-Id: req-fe4df554-dfff-4866-b2f0-7ad6ef9a215e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:lessee\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/owner', 'value': '1234'}] -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:12.691403+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"} +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-19b50190-1161-4c79-9c68-c13568a9f1c9 +Openstack-Request-Id: req-34ab6539-50ac-4f8a-aaff-dfe015159f44 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-19b50190-1161-4c79-9c68-c13568a9f1c9 +Openstack-Request-Id: req-34ab6539-50ac-4f8a-aaff-dfe015159f44 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/owner', 'value': '1234'}] -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d9bf25f2-321d-4fd7-93eb-5c453bfc3cd4 +Openstack-Request-Id: req-1f302a1a-b3c1-41de-b308-413f1a5d744d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_048_lessee_manager_cannot_change_owner -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_048_lessee_manager_cannot_change_owner ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_209_drivers_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_209_drivers_get_member ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_fast_track -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_fast_track ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_power_validate_fail -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_power_validate_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_210_drivers_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_210_drivers_get_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_apply_time_immediate -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_apply_time_immediate ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_049_owner_admin_can_change_lessee -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_049_owner_admin_can_change_lessee ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_apply_time_on_reset -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_apply_time_on_reset ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_211_drivers_driver_name_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_211_drivers_driver_name_get_admin ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_fail -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_050_owner_manager_can_change_lessee -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_050_owner_manager_can_change_lessee ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_212_drivers_driver_name_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_212_drivers_driver_name_get_member ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_no_supported_apply_times -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_no_supported_apply_times ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_051_owner_admin_cannot_change_owner -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_051_owner_admin_cannot_change_owner ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_not_supported -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_not_supported ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_213_drivers_driver_name_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_213_drivers_driver_name_get_observer ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_done -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_done ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_052_owner_manager_cannot_change_owner -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_052_owner_manager_cannot_change_owner ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings ... ok +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_179_volume_volume_connector_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_179_volume_volume_connector_id_patch_member ... ok GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fc332466-7ab3-42d4-b685-e18b88940adb +Openstack-Request-Id: req-68450284-9d85-42bf-8569-0eb5b393bccc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-fc00abc7-8a63-4d08-b0d4-792b39147247 +Openstack-Request-Id: req-68450284-9d85-42bf-8569-0eb5b393bccc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-02f133b9-ef3f-40f2-b080-d0e28e490246 +Openstack-Request-Id: req-a01aef91-b9f1-4c2a-a7ab-4400dcfb01cc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-846328e9-eac4-4b19-a6a3-99f0d80811e2 +Openstack-Request-Id: req-a01aef91-b9f1-4c2a-a7ab-4400dcfb01cc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9a819f4d-f8b3-4dc8-abc2-a3c5965cdf75 +Openstack-Request-Id: req-67fb2232-b15c-4d87-8692-5bc4f73079bb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b6de78a2-c734-4613-af65-c95509fe02bc +Openstack-Request-Id: req-67fb2232-b15c-4d87-8692-5bc4f73079bb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4dd70522-c081-4b60-abce-659eba552351 +Openstack-Request-Id: req-253786d6-63c6-4995-8d46-a6f5c25f9941 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1bb37684-874a-4172-9559-62658cf22349 +Openstack-Request-Id: req-253786d6-63c6-4995-8d46-a6f5c25f9941 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers -GET: /v1/drivers {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW +DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b8ebc6c8-2ba1-4c78-b3bb-c82e28db3155 +Openstack-Request-Id: req-4b560144-dcfe-4ef5-b376-011e35c779c6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers -GET: /v1/drivers {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-dc32e821-4878-468c-8f5d-109d040ae282 +Openstack-Request-Id: req-4b560144-dcfe-4ef5-b376-011e35c779c6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers -GET: /v1/drivers {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6f1567f6-f475-49e1-b361-908edbd0d59f +Openstack-Request-Id: req-68966f93-baf6-4d46-9902-6a4418b952de X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz -GET: /v1/drivers/fake-driverz {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c12451c2-4861-4de5-82f2-02d30c317338 +Openstack-Request-Id: req-68966f93-baf6-4d46-9902-6a4418b952de X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz -GET: /v1/drivers/fake-driverz {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0f6a3628-231e-4cc0-8f22-824348445faf +Openstack-Request-Id: req-f032207a-cf75-456e-8dff-9c77cac82379 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz -GET: /v1/drivers/fake-driverz {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-99b415ae-b240-4df2-a47f-87c6e15ea38b +Openstack-Request-Id: req-f032207a-cf75-456e-8dff-9c77cac82379 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/properties -GET: /v1/drivers/fake-driverz/properties {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_214_drivers_properties_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_214_drivers_properties_get_admin ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_error -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_error ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_215_drivers_properties_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_215_drivers_properties_get_member ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings_no_bios -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings_no_bios ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_053_lessee_member_can_set_protected -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_053_lessee_member_can_set_protected ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_waiting -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_waiting ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_216_drivers_properties_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_216_drivers_properties_get_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings_noop -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings_noop ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_054_lessee_member_cannot_patch_instance_info -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_054_lessee_member_cannot_patch_instance_info ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_check_bios_attrs -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_check_bios_attrs ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_217_drivers_raid_logical_disk_properties_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_217_drivers_raid_logical_disk_properties_get_admin ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_deployfail_state -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_deployfail_state ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_fail -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_055_lessee_member_cannot_patch_driver_info -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_055_lessee_member_cannot_patch_driver_info ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_not_supported -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_not_supported ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_218_drivers_raid_logical_disk_properties_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_218_drivers_raid_logical_disk_properties_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_219_drivers_raid_logical_disk_properties_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_219_drivers_raid_logical_disk_properties_get_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_post_reboot_cleaning -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_post_reboot_cleaning ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_error_state -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_error_state ... ok -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d9bf25f2-321d-4fd7-93eb-5c453bfc3cd4 +Openstack-Request-Id: req-b65f8e17-501b-4258-a52e-8371f394138d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/lessee', 'value': '1234'}] -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9a709c59-f864-4700-be2b-cb008af0e995 +Openstack-Request-Id: req-b65f8e17-501b-4258-a52e-8371f394138d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 None +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_241_lessee_admin_cannot_put_custom_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_241_lessee_admin_cannot_put_custom_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_180_volume_volume_connector_id_patch_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_180_volume_volume_connector_id_patch_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_delete_raid_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_delete_raid_deploying ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9a709c59-f864-4700-be2b-cb008af0e995 +Openstack-Request-Id: req-801c8572-d6ae-428e-aa0e-1d886af61e6c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/lessee', 'value': '1234'}] -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-24e8df02-b3be-4a87-ae16-a5e8b4e4532a +Openstack-Request-Id: req-8d4c8ea5-ff17-4909-a084-d572726190bc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets +GET: /v1/volume/targets {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-24e8df02-b3be-4a87-ae16-a5e8b4e4532a +Openstack-Request-Id: req-69adc747-e23e-48b0-ac35-1c7fdacc8c89 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/owner', 'value': '1234'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets +GET: /v1/volume/targets {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4433f4be-abd7-46b2-9f4d-b2a10992b175 +Openstack-Request-Id: req-a1c55abe-d088-409c-b356-c042cc8c0561 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets +GET: /v1/volume/targets {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4433f4be-abd7-46b2-9f4d-b2a10992b175 +Openstack-Request-Id: req-6d777e5b-8548-4017-b5c7-51d8d4880ba3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/owner', 'value': '1234'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/targets +POST: /v1/volume/targets {'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-8f6be07f-ff5a-4d72-9230-c542076e09f0 +Openstack-Request-Id: req-dff3c9a0-1b7e-422f-bbbb-a6bca6d13ddb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/targets +POST: /v1/volume/targets {'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-8f6be07f-ff5a-4d72-9230-c542076e09f0 +Openstack-Request-Id: req-516024e5-b4d2-4d3b-a350-226be3e15cf8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/protected', 'value': True}] -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/targets +POST: /v1/volume/targets {'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-fe7ffba4-9d1f-4a29-af09-0b043f158746 +Openstack-Request-Id: req-91acf0c8-00ed-4dc1-9fec-1a5b6871444f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-fe7ffba4-9d1f-4a29-af09-0b043f158746 +Openstack-Request-Id: req-d0fff170-c982-4546-90b3-819d36d7207e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cdf53129-4f96-4b7f-9a67-39e573c14934 +Openstack-Request-Id: req-b45fb085-b7ca-46ee-aa1c-a41adf2fd7e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cdf53129-4f96-4b7f-9a67-39e573c14934 +Openstack-Request-Id: req-91c65735-6101-4420-b86a-f409ec34637d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/driver_info', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-173a04e2-e8ad-4fb1-befe-c52706a83916 +Openstack-Request-Id: req-520f4211-f682-487a-9bfa-60f3c5f928b1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:driver_info\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-173a04e2-e8ad-4fb1-befe-c52706a83916 +Openstack-Request-Id: req-7f2cbfce-2ba3-484c-bf79-552748a0b504 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:driver_info\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/properties', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c16b5cde-f6ad-4d81-bf16-ad7a85b98287 +Openstack-Request-Id: req-690e8259-5480-4d36-bf6f-2ca15ff34b12 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:properties\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_056_lessee_member_cannot_patch_properties -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_056_lessee_member_cannot_patch_properties ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_post_reboot_deploying -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_post_reboot_deploying ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_220_drivers_vendor_passthru_methods_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_220_drivers_vendor_passthru_methods_get_admin ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_from_available_state -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_from_available_state ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_cleaning -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_cleaning ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_057_lessee_member_cannot_patch_network_data -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_057_lessee_member_cannot_patch_network_data ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_221_drivers_vendor_passthru_methods_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_221_drivers_vendor_passthru_methods_get_member ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_protected -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_protected ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_deploying -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_deploying ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_058_lessee_member_cannot_patch_name -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_058_lessee_member_cannot_patch_name ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_222_drivers_vendor_passthru_methods_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_222_drivers_vendor_passthru_methods_get_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_fast_track -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_fast_track ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_traits_validate_fail -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_traits_validate_fail ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_get_properties -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_get_properties ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_059_lessee_member_cannot_patch_retired -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_059_lessee_member_cannot_patch_retired ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_223_drivers_vendor_passthru_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_223_drivers_vendor_passthru_get_admin ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_validate_fail -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_validate_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_224_drivers_vendor_passthru_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_224_drivers_vendor_passthru_get_member ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_loading_error -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_loading_error ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_060_owner_admin_can_patch_node_instance_info -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_060_owner_admin_can_patch_node_instance_info ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_validate_template_fail -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_validate_template_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_225_drivers_vendor_passthru_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_225_drivers_vendor_passthru_get_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_post_configuration -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_post_configuration ... ok -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_validate -ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_validate ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_226_drivers_vendor_passthru_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_226_drivers_vendor_passthru_post_admin ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__has_vmedia_device -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__has_vmedia_device ... ok -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_worker_pool_full -ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_worker_pool_full ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__has_vmedia_device_inserted -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__has_vmedia_device_inserted ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_061_owner_manager_can_patch_node_instance_info -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_061_owner_manager_can_patch_node_instance_info ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_already_inserted -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_already_inserted ... ok -ironic.tests.unit.conductor.test_notification_utils.ProvisionNotifyTestCase.test_emit_notification -ironic.tests.unit.conductor.test_notification_utils.ProvisionNotifyTestCase.test_emit_notification ... ok -ironic.tests.unit.conductor.test_notification_utils.ProvisionNotifyTestCase.test_mask_secrets -ironic.tests.unit.conductor.test_notification_utils.ProvisionNotifyTestCase.test_mask_secrets ... ok -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_196_volume_volume_target_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_196_volume_volume_target_id_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_242_lessee_manager_cannot_put_custom_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_242_lessee_manager_cannot_put_custom_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_181_volume_volume_connector_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_181_volume_volume_connector_id_delete_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_197_volume_volume_target_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_197_volume_volume_target_id_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_243_lessee_member_cannot_put_custom_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_243_lessee_member_cannot_put_custom_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_198_volume_volume_target_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_198_volume_volume_target_id_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_182_volume_volume_connector_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_182_volume_volume_connector_id_delete_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_empty_target_raid_config_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_empty_target_raid_config_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_244_third_party_admin_cannot_put_custom_traits +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_244_third_party_admin_cannot_put_custom_traits ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_199_nodes_volume_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_199_nodes_volume_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_empty_target_raid_config_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_empty_target_raid_config_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_183_volume_volume_connector_id_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_183_volume_volume_connector_id_delete_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_245_owner_reader_get_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_245_owner_reader_get_vifs ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_200_nodes_volume_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_200_nodes_volume_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_ilo_error_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_ilo_error_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_184_volume_targets_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_184_volume_targets_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_ilo_error_cleaning_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_ilo_error_cleaning_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_201_nodes_volume_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_201_nodes_volume_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_246_lessee_reader_get_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_246_lessee_reader_get_vifs ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_185_volume_targets_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_185_volume_targets_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_non_root_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_non_root_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_202_nodes_volume_connectors_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_202_nodes_volume_connectors_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_247_third_party_admin_cannot_get_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_247_third_party_admin_cannot_get_vifs ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_203_nodes_volume_connectors_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_203_nodes_volume_connectors_get_member ... ok +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-f67a5037-eba4-4b88-9ca1-1fa52b77d64a +Openstack-Request-Id: req-1f302a1a-b3c1-41de-b308-413f1a5d744d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/properties -GET: /v1/drivers/fake-driverz/properties {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a6197bd0-a1de-4d4b-bfa6-89a9a9b38d4d +Openstack-Request-Id: req-8c09dbbb-de68-447a-bd06-86890a801522 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/properties -GET: /v1/drivers/fake-driverz/properties {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e7f1eb32-7754-4971-8fd6-404020e8fdc3 +Openstack-Request-Id: req-8c09dbbb-de68-447a-bd06-86890a801522 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties -GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-5a525c31-2990-4535-921d-26a09d4eb767 +Openstack-Request-Id: req-fa95da6b-98d3-4956-9d4c-4f2cb46b0e53 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties -GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-5ec0be7f-65f7-41ff-a630-4c0adb78425e +Openstack-Request-Id: req-fa95da6b-98d3-4956-9d4c-4f2cb46b0e53 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties -GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-654dcfed-3aee-4ccd-b3c9-de921726a3e3 +Openstack-Request-Id: req-22d025cd-7799-4a38-8ada-74b89b0bd579 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods -GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ccdba07d-013a-4ca3-92dd-ee35ae2b2fbb +Openstack-Request-Id: req-22d025cd-7799-4a38-8ada-74b89b0bd579 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods -GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-af9028ab-76db-4e67-a6aa-4d8766f278b3 +Openstack-Request-Id: req-5c30f6a7-cb5e-4319-87bd-ca56b1af10ad X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods -GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-93337c3d-3ae1-4197-ad57-95851e0ca597 +Openstack-Request-Id: req-5c30f6a7-cb5e-4319-87bd-ca56b1af10ad X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test -GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets +GET: /v1/volume/targets {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8f61cb87-b51d-4b51-8004-82b277abc584 +Openstack-Request-Id: req-d8c5ea54-477e-4054-8811-4980e3ba4374 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test -GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} -GOT:Response: 500 Internal Server Error +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a5a4140b-3e44-42d4-873c-05d5cc2cd498 +Openstack-Request-Id: req-d8c5ea54-477e-4054-8811-4980e3ba4374 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test -GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} -GOT:Response: 500 Internal Server Error +{"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"}]} +API ACL Testing Path get /v1/volume/targets +GET: /v1/volume/targets {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-714bad85-05cc-4977-b049-141fef12e78b +Openstack-Request-Id: req-9e745c48-6a8d-4d8b-8a4b-28bcb717aa2e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test -POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 500 Internal Server Error +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5b94a6ac-0e6c-419e-b92b-7d8d756c7f46 +Openstack-Request-Id: req-9e745c48-6a8d-4d8b-8a4b-28bcb717aa2e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_227_drivers_vendor_passthru_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_227_drivers_vendor_passthru_post_member ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_anew -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_anew ... ok -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_228_drivers_vendor_passthru_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_228_drivers_vendor_passthru_post_observer ... ok -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification_known_notify_exc -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification_known_notify_exc ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_bad_device -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_bad_device ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_062_owner_member_can_patch_node_instance_info -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_062_owner_member_can_patch_node_instance_info ... ok -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification_known_payload_exc -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification_known_payload_exc ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_while_ejecting -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_while_ejecting ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_229_drivers_vendor_passthru_put_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_229_drivers_vendor_passthru_put_admin ... ok -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_console_notification -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_console_notification ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__validate_vendor_compatible_with_idrac -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__validate_vendor_compatible_with_idrac ... ok -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_console_notification_error_status -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_console_notification_error_status ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_063_owner_reader_can_patch_node_instance_info -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_063_owner_reader_can_patch_node_instance_info ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_230_drivers_vendor_passthru_put_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_230_drivers_vendor_passthru_put_member ... ok -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_power_set_notification -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_power_set_notification ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__validate_vendor_incompatible_with_idrac -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__validate_vendor_incompatible_with_idrac ... ok -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_power_state_corrected_notification -ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_power_state_corrected_notification ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_cdrom_and_floppy -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_cdrom_and_floppy ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_231_drivers_vendor_passthru_put_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_231_drivers_vendor_passthru_put_observer ... ok -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_only_cdrom -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_only_cdrom ... ok -ACL Test GOT Response: 403 Forbidden +{"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"}]} +API ACL Testing Path get /v1/volume/targets +GET: /v1/volume/targets {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c16b5cde-f6ad-4d81-bf16-ad7a85b98287 +Openstack-Request-Id: req-c5dcc9b2-1ab3-438c-8321-e22557318e1a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:properties\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/network_data', 'value': {'links': [], 'networks': [], 'services': []}}] +{"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"}]} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_186_volume_targets_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_186_volume_targets_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_248_owner_admin_can_post_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_248_owner_admin_can_post_vifs ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_187_volume_targets_post_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_187_volume_targets_post_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_204_nodes_volume_connectors_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_204_nodes_volume_connectors_get_observer ... ok GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-75a6fe2d-8dce-4219-bb08-15e59b724b12 +Openstack-Request-Id: req-339eab2c-088a-4bb8-a548-883c04aee46a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:network_data\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-75a6fe2d-8dce-4219-bb08-15e59b724b12 +Openstack-Request-Id: req-339eab2c-088a-4bb8-a548-883c04aee46a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:network_data\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/name', 'value': 'meow-node-1'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 None GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-313b8dba-c39c-4f12-bc37-43793a12df14 +Openstack-Request-Id: req-e49eddfe-2a44-4b01-8774-20f8526e0129 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:name\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-313b8dba-c39c-4f12-bc37-43793a12df14 +Openstack-Request-Id: req-e49eddfe-2a44-4b01-8774-20f8526e0129 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:name\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/retired', 'value': True}, {'op': 'replace', 'path': '/retired_reason', 'value': '43'}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 None GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b3d1bc4f-673c-424b-95a9-a4c967652fe7 +Openstack-Request-Id: req-90222c93-6122-425c-bc83-3f1a389f9d78 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:retired\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b3d1bc4f-673c-424b-95a9-a4c967652fe7 +Openstack-Request-Id: req-90222c93-6122-425c-bc83-3f1a389f9d78 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:retired\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1e80b3b9-d232-4074-b769-bf9b9bd80657 +Openstack-Request-Id: req-0c546485-6868-4933-94cf-6dd62b1e8f88 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1e80b3b9-d232-4074-b769-bf9b9bd80657 +Openstack-Request-Id: req-0c546485-6868-4933-94cf-6dd62b1e8f88 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-5788dc32-8ff9-4ec3-8beb-052c3c10a9fe +Openstack-Request-Id: req-f214e82c-b90b-4189-8de6-b214b9a96252 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-5788dc32-8ff9-4ec3-8beb-052c3c10a9fe +Openstack-Request-Id: req-f214e82c-b90b-4189-8de6-b214b9a96252 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs {} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4bb926c2-c430-46c7-af79-40fb7abe321d +Openstack-Request-Id: req-9b1f26bc-eb24-4c8e-8dce-0cd77bd2b68d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4bb926c2-c430-46c7-af79-40fb7abe321d +Openstack-Request-Id: req-9b1f26bc-eb24-4c8e-8dce-0cd77bd2b68d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-01dbbafe-ef5d-4028-bcc8-70f00e75933d +Openstack-Request-Id: req-deb8a43d-529a-4c75-ae87-5248c06bc0e4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-01dbbafe-ef5d-4028-bcc8-70f00e75933d +Openstack-Request-Id: req-deb8a43d-529a-4c75-ae87-5248c06bc0e4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_064_lessee_admin_can_patch_node_instance_info -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_064_lessee_admin_can_patch_node_instance_info ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_232_drivers_vendor_passthru_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_232_drivers_vendor_passthru_delete_admin ... skipped 'not updated for scope testing' -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_only_enabled -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_only_enabled ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_ramdisk -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_ramdisk ... ok -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_fail -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_fail ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_ramdisk -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_ramdisk ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_065_lessee_manager_can_patch_node_instance_info -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_065_lessee_manager_can_patch_node_instance_info ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_233_drivers_vendor_passthru_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_233_drivers_vendor_passthru_delete_observer ... skipped 'not updated for scope testing' -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_off -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_off ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_everything -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_everything ... ok -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_ok -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_066_lessee_member_cannot_patch_node_instance_info -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_066_lessee_member_cannot_patch_node_instance_info ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_not_inserted -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_not_inserted ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_234_nodes_bios_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_234_nodes_bios_get_admin ... ok -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_unsorted -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_unsorted ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_specific -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_specific ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_067_lessee_reader_can_patch_node_instance_info -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_067_lessee_reader_can_patch_node_instance_info ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_unknown -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_unknown ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_235_nodes_bios_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_235_nodes_bios_get_member ... ok -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test_execute_verify_step -ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test_execute_verify_step ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_loading_error -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_loading_error ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_068_third_party_admin_cannot_patch_node_instance_info -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_068_third_party_admin_cannot_patch_node_instance_info ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_deploy_info -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_deploy_info ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_build_driver_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_build_driver_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_236_nodes_bios_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_236_nodes_bios_get_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_deploy_info_exc -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_deploy_info_exc ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_no_retries -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_no_retries ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_069_owner_admin_cannot_delete_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_069_owner_admin_cannot_delete_nodes ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_patient -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_patient ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_deploy -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_237_nodes_bios_bios_setting_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_237_nodes_bios_bios_setting_get_admin ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_then_lock -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_then_lock ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_exc -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_exc ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_portgroups_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_portgroups_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_070_owner_admin_can_delete_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_070_owner_admin_can_delete_nodes ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_deploy -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_deploy ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_ports_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_ports_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_238_nodes_bios_bios_setting_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_238_nodes_bios_bios_setting_get_member ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_rescue -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_rescue ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_volconn_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_volconn_exception ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_iso -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_iso ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_071_owner_manager_cannot_delete_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_071_owner_manager_cannot_delete_nodes ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_voltgt_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_voltgt_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_239_nodes_bios_bios_setting_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_239_nodes_bios_bios_setting_get_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_iso_deprecated -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_iso_deprecated ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_reserve_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_reserve_exception ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_deploy -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_deploy ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_upgade_exception_no_retries -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_upgade_exception_no_retries ... ok +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs +POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1778d1d3-a733-4a79-b9b5-8efcbf41cabb +Openstack-Request-Id: req-212c7cf9-afab-46c8-b15d-3c105da8c703 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1778d1d3-a733-4a79-b9b5-8efcbf41cabb +Openstack-Request-Id: req-212c7cf9-afab-46c8-b15d-3c105da8c703 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable +API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs +POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_249_owner_manager_can_post_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_249_owner_manager_can_post_vifs ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_non_root_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_non_root_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_188_volume_targets_post_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_188_volume_targets_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_205_nodes_volume_targets_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_205_nodes_volume_targets_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_250_lessee_admin_can_post_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_250_lessee_admin_can_post_vifs ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_189_volume_targets_post_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_189_volume_targets_post_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_206_nodes_volume_targets_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_206_nodes_volume_targets_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_251_lessee_manager_can_post_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_251_lessee_manager_can_post_vifs ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_skip_non_root_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_skip_non_root_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_190_volume_volume_target_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_190_volume_volume_target_id_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_skip_non_root_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_skip_non_root_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_207_nodes_volume_targets_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_207_nodes_volume_targets_get_observer ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-fc852663-5c4a-486b-8278-c1cf5397d877 +Openstack-Request-Id: req-c5dcc9b2-1ab3-438c-8321-e22557318e1a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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"}]} +API ACL Testing Path post /v1/volume/targets +POST: /v1/volume/targets {'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 -Openstack-Request-Id: req-fc852663-5c4a-486b-8278-c1cf5397d877 +Location: http://localhost/v1/volume/targets/b52e786d-24f9-4004-8b79-b24f2617d0b7 +Openstack-Request-Id: req-a9dde557-1ab5-436d-b05d-288298ace113 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden +{"uuid": "b52e786d-24f9-4004-8b79-b24f2617d0b7", "created_at": "2024-01-06T14:13:15.405137+00:00", "updated_at": null, "boot_index": 1, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/b52e786d-24f9-4004-8b79-b24f2617d0b7", "rel": "self"}, {"href": "http://localhost/volume/targets/b52e786d-24f9-4004-8b79-b24f2617d0b7", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +ACL Test GOT Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-8b03c247-b0fc-43f0-9bd7-b1322551d989 +Location: http://localhost/v1/volume/targets/b52e786d-24f9-4004-8b79-b24f2617d0b7 +Openstack-Request-Id: req-a9dde557-1ab5-436d-b05d-288298ace113 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "b52e786d-24f9-4004-8b79-b24f2617d0b7", "created_at": "2024-01-06T14:13:15.405137+00:00", "updated_at": null, "boot_index": 1, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/b52e786d-24f9-4004-8b79-b24f2617d0b7", "rel": "self"}, {"href": "http://localhost/volume/targets/b52e786d-24f9-4004-8b79-b24f2617d0b7", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +API ACL Testing Path post /v1/volume/targets +POST: /v1/volume/targets {'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 -Openstack-Request-Id: req-8b03c247-b0fc-43f0-9bd7-b1322551d989 +Location: http://localhost/v1/volume/targets/6cd99e8d-54af-4fc1-8717-cef8dfaea321 +Openstack-Request-Id: req-92651a05-52cc-4ead-b6eb-1298509a80fb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -PATCH: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] +{"uuid": "6cd99e8d-54af-4fc1-8717-cef8dfaea321", "created_at": "2024-01-06T14:13:15.675789+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/6cd99e8d-54af-4fc1-8717-cef8dfaea321", "rel": "self"}, {"href": "http://localhost/volume/targets/6cd99e8d-54af-4fc1-8717-cef8dfaea321", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +ACL Test GOT Response: 201 Created +Content-Type: application/json +Location: http://localhost/v1/volume/targets/6cd99e8d-54af-4fc1-8717-cef8dfaea321 +Openstack-Request-Id: req-92651a05-52cc-4ead-b6eb-1298509a80fb +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "6cd99e8d-54af-4fc1-8717-cef8dfaea321", "created_at": "2024-01-06T14:13:15.675789+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/6cd99e8d-54af-4fc1-8717-cef8dfaea321", "rel": "self"}, {"href": "http://localhost/volume/targets/6cd99e8d-54af-4fc1-8717-cef8dfaea321", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} +API ACL Testing Path post /v1/volume/targets +POST: /v1/volume/targets {'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-a5e17935-33d2-4142-995f-1af04d0db1ed +Openstack-Request-Id: req-c876785f-7eae-4b81-8e4f-9bcfb4c694d3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a5e17935-33d2-4142-995f-1af04d0db1ed +Openstack-Request-Id: req-c876785f-7eae-4b81-8e4f-9bcfb4c694d3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -PATCH: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ab1ce630-5b87-4bbd-92c9-7d894b34c3e7 +Openstack-Request-Id: req-d2753936-5717-455c-baeb-538493b6bfcb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:16.092268+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"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ab1ce630-5b87-4bbd-92c9-7d894b34c3e7 +Openstack-Request-Id: req-d2753936-5717-455c-baeb-538493b6bfcb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:16.092268+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"} +API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-160843e8-68c6-4f97-8451-501ccd5f7e62 +Openstack-Request-Id: req-0c90acbb-0019-4f5a-888d-32f250254607 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:16.329066+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"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_191_volume_volume_target_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_191_volume_volume_target_id_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_208_drivers_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_208_drivers_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_192_volume_volume_target_id_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_192_volume_volume_target_id_get_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_252_owner_member_can_post_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_252_owner_member_can_post_vifs ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_209_drivers_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_209_drivers_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_193_volume_volume_target_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_193_volume_volume_target_id_patch_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_failed_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_failed_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_253_lessee_member_cannot_post_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_253_lessee_member_cannot_post_vifs ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_failed_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_failed_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_210_drivers_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_210_drivers_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_194_volume_volume_target_id_patch_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_194_volume_volume_target_id_patch_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_254_owner_reader_cannot_post_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_254_owner_reader_cannot_post_vifs ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_195_volume_volume_target_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_195_volume_volume_target_id_delete_admin ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-160843e8-68c6-4f97-8451-501ccd5f7e62 +Openstack-Request-Id: req-18a12755-c9ab-4ddc-a7ee-5ff9ff2b0a84 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ba1bf584-17a6-4bc5-81f8-de9fcad27270 +Openstack-Request-Id: req-5d4f6f66-c3a1-420b-87ed-b01908bae975 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ba1bf584-17a6-4bc5-81f8-de9fcad27270 +Openstack-Request-Id: req-a63bf9e6-11c7-4855-bf14-f5e3b2bd3e3f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-564b31db-2350-4b16-93db-f41bfe0f9c60 +Openstack-Request-Id: req-70039d0f-db7a-4208-95a6-c5ac83b65f87 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-564b31db-2350-4b16-93db-f41bfe0f9c60 +Openstack-Request-Id: req-f4b677a1-9c3d-4b93-b748-06ab1b7088ad X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_072_lessee_admin_cannot_delete_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_072_lessee_admin_cannot_delete_nodes ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_240_conductors_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_240_conductors_get_admin ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_nested_acquire -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_nested_acquire ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_rescue -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_rescue ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_init_prepares_fsm -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_init_prepares_fsm ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_ramdisk -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_ramdisk ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_073_lessee_manager_cannot_delete_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_073_lessee_manager_cannot_delete_nodes ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_241_conductors_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_241_conductors_get_member ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_no_driver -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_no_driver ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_removable -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_removable ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_removable_deprecated -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_removable_deprecated ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_074_third_party_admin_cannot_delete_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_074_third_party_admin_cannot_delete_nodes ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_build_driver_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_build_driver_exception ... ok -API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test -POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ee9feab1-b22f-4413-9cc2-cb0d820d664e +Openstack-Request-Id: req-f6d6cb2e-15c2-43d8-8c87-96ad663c3400 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test -POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-92c64157-d472-4ab7-8e26-327b9ab154cc +Openstack-Request-Id: req-f3850513-ae67-49e2-97cc-371cb20a30d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test -PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cede1c03-575b-4f59-89b3-ab522e858956 +Openstack-Request-Id: req-7ec5eb34-a538-44fd-ab2b-3a1123e69fb6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test -PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c3fe956d-e526-4f33-a2b4-d4daef952e5f +Openstack-Request-Id: req-502e5c19-7380-4a8a-91ec-d8d2b81eaba1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test -PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-fcb507cc-2f1c-456d-8153-bf61bb1352dd +Openstack-Request-Id: req-68fe3e14-fa41-4784-bfd6-6b80133288fb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b2d9a4f7-f92c-473d-84b7-489046702241 +Openstack-Request-Id: req-554836c0-dd98-47d1-8206-c820474d21d3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b8e2225c-6570-4b8a-b271-bdf31c188038 +Openstack-Request-Id: req-360d8f0f-f4b3-4633-8a29-e8b04fdcb719 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} -GOT:Response: 404 Not Found +API ACL Testing Path get /v1/drivers +GET: /v1/drivers {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-29a173ed-7a38-4df2-89b6-3463aae73b63 +Openstack-Request-Id: req-beea45c7-b666-4e91-98c4-99b0d5f880a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers +GET: /v1/drivers {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-f2a41055-ded1-48d5-9195-92f81aef9ef7 +Openstack-Request-Id: req-bbc90555-9d5d-4106-84d1-b0639d5bca1f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers +GET: /v1/drivers {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-62c3ae8d-b3ce-4fa6-8af4-d466f013b2fd +Openstack-Request-Id: req-a05e89d1-1a1e-4f99-8c8c-c727c11d7c6a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_211_drivers_driver_name_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_211_drivers_driver_name_get_admin ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_255_lessee_reader_cannot_post_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_255_lessee_reader_cannot_post_vifs ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_212_drivers_driver_name_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_212_drivers_driver_name_get_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_ilo_error_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_ilo_error_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_196_volume_volume_target_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_196_volume_volume_target_id_delete_member ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_ilo_error_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_ilo_error_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_256_third_party_admin_cannot_post_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_256_third_party_admin_cannot_post_vifs ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_213_drivers_driver_name_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_213_drivers_driver_name_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_197_volume_volume_target_id_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_197_volume_volume_target_id_delete_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_no_logical_drive_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_no_logical_drive_cleaning ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_no_logical_drive_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_no_logical_drive_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_214_drivers_properties_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_214_drivers_properties_get_admin ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-639c486a-1530-441b-bd6c-178aad8f2c7a +Openstack-Request-Id: req-0c90acbb-0019-4f5a-888d-32f250254607 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors -GET: /v1/conductors {} -GOT:Response: 500 Internal Server Error +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:16.329066+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"} +API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9fb2cfd2-3647-423c-933f-55aecf39f29d +Openstack-Request-Id: req-d4627fd3-f2d3-446b-bd2a-46e986a4b8a5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors -GET: /v1/conductors {} -GOT:Response: 500 Internal Server Error +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:16.580766+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"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c089e535-a72d-4e17-be89-389b3cfe44a6 +Openstack-Request-Id: req-d4627fd3-f2d3-446b-bd2a-46e986a4b8a5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors -GET: /v1/conductors {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_242_conductors_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_242_conductors_get_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_rescue -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_rescue ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_portgroups_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_portgroups_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_243_conductors_hostname_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_243_conductors_hostname_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_075_owner_admin_can_validate_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_075_owner_admin_can_validate_node ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_ports_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_ports_exception ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_local_boot_option -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_local_boot_option ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_volconn_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_volconn_exception ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_voltgt_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_voltgt_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_244_conductors_hostname_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_244_conductors_hostname_get_member ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_local_whole_disk_image -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_local_whole_disk_image ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_076_owner_manager_can_validate_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_076_owner_manager_can_validate_node ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_node_get_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_node_get_exception ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_245_conductors_hostname_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_245_conductors_hostname_get_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_normal_boot -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_normal_boot ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_exception_while_yielded -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_exception_while_yielded ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_link_fails -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_link_fails ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_246_allocations_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_246_allocations_post_admin ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_on_error_hook -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_on_error_hook ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_on_error_hook_exception -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_on_error_hook_exception ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_247_allocations_post_member -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." -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_spawn_fails -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_spawn_fails ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_077_lessee_admin_can_validate_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_077_lessee_admin_can_validate_node ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_iso -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_iso ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_upgrade_lock -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_upgrade_lock ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_upgrade_lock_refreshes_fsm -ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_upgrade_lock_refreshes_fsm ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_248_allocations_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_248_allocations_post_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_078_lessee_manager_can_validate_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_078_lessee_manager_can_validate_node ... ok -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_already_present -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_already_present ... ok -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_change_secure_off -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_change_secure_off ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_249_allocations_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_249_allocations_get_admin ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_iso_boot -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_iso_boot ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_079_owner_member_can_validate_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_079_owner_member_can_validate_node ... ok -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_change_secure_off_to_none -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_change_secure_off_to_none ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_250_allocations_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_250_allocations_get_member ... ok -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_failed_boot_mode -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_failed_boot_mode ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_render_configdrive -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_render_configdrive ... ok -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_failed_secure -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_failed_secure ... ok -GOT:Response: 403 Forbidden +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:16.580766+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"} +API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-a09ee0c5-e6b0-4d53-bbd8-d9e61d4168a4 +Openstack-Request-Id: req-03b5142e-ff4d-4f41-86f3-fb6be849ac07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-a09ee0c5-e6b0-4d53-bbd8-d9e61d4168a4 +Openstack-Request-Id: req-03b5142e-ff4d-4f41-86f3-fb6be849ac07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0e4c9c86-9a8b-40cc-a2a4-03e0a577aae0 +Openstack-Request-Id: req-7257511e-07df-4bb9-95d1-4fbcccefa686 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0e4c9c86-9a8b-40cc-a2a4-03e0a577aae0 +Openstack-Request-Id: req-7257511e-07df-4bb9-95d1-4fbcccefa686 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7cf9572b-857e-4531-80ac-f78f6edaddf1 +Openstack-Request-Id: req-7705812b-f7c9-4fee-bf4d-4e4fed77bca6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7cf9572b-857e-4531-80ac-f78f6edaddf1 +Openstack-Request-Id: req-7705812b-f7c9-4fee-bf4d-4e4fed77bca6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-670506ef-b690-4dc7-861a-f6b5b05513f5 +Openstack-Request-Id: req-5e387987-312e-4d0a-bc1b-bfbe6152c13d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-670506ef-b690-4dc7-861a-f6b5b05513f5 +Openstack-Request-Id: req-5e387987-312e-4d0a-bc1b-bfbe6152c13d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate {} +API ACL Testing Path delete /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GOT:Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-8fd5f278-727e-4df8-b185-37af6e51b693 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-8fd5f278-727e-4df8-b185-37af6e51b693 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_198_nodes_volume_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_198_nodes_volume_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_199_nodes_volume_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_199_nodes_volume_get_member ... ok GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6c8ae556-e9d4-4f1c-a0b1-f429117057b1 +Openstack-Request-Id: req-c8a71f53-1931-470f-91e5-b50ed8620ed5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-6c8ae556-e9d4-4f1c-a0b1-f429117057b1 +Openstack-Request-Id: req-c8a71f53-1931-470f-91e5-b50ed8620ed5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate {} +API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs +POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-f53e3929-59d2-4b1f-af4d-45007f31d6fb +Openstack-Request-Id: req-91128398-e53b-4d74-9c54-02824eb3e4fa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-f53e3929-59d2-4b1f-af4d-45007f31d6fb +Openstack-Request-Id: req-91128398-e53b-4d74-9c54-02824eb3e4fa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate {} +API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs +POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-cca52013-c228-45a8-8755-339795c2756e +Openstack-Request-Id: req-3cf31e38-0d15-4655-b5af-6fd869a9f33c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-cca52013-c228-45a8-8755-339795c2756e +Openstack-Request-Id: req-3cf31e38-0d15-4655-b5af-6fd869a9f33c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate {} +API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs +POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3bd36324-1a65-42ce-be33-08f610a098a1 +Openstack-Request-Id: req-4f916612-949b-45a0-89ed-cce386bc0ee2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3bd36324-1a65-42ce-be33-08f610a098a1 +Openstack-Request-Id: req-4f916612-949b-45a0-89ed-cce386bc0ee2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate {} +API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs +POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f42eb1a5-903b-4393-848f-5b48f0ac1df8 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_080_lessee_member_cannot_validate_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_080_lessee_member_cannot_validate_node ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_251_allocations_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_251_allocations_get_observer ... ok -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_noneness -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_noneness ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_fast_track -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_fast_track ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_081_third_party_admin_cannot_validate_node -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_081_third_party_admin_cannot_validate_node ... ok -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_retreive_and_set -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_retreive_and_set ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_fast_track_impossible -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_fast_track_impossible ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_252_allocations_allocation_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_252_allocations_allocation_id_get_admin ... ok -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_unsupported -ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_unsupported ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_082_owner_admin_can_set_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_082_owner_admin_can_set_maintenance ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_no_config -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_no_config ... ok -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_253_allocations_allocation_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_253_allocations_allocation_id_get_member ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_no_debug -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_no_debug ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_083_owner_manager_can_set_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_083_owner_manager_can_set_maintenance ... ok -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_config_false -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_config_false ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_floppy -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_floppy ... ok -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_disabled_in_driver_info -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_disabled_in_driver_info ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_254_allocations_allocation_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_254_allocations_allocation_id_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_084_lessee_admin_can_set_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_084_lessee_admin_can_set_maintenance ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_params -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_params ... ok -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_disabled_in_driver_info_string -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_disabled_in_driver_info_string ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_255_allocations_allocation_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_255_allocations_allocation_id_patch_admin ... ok -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_error_blocks -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_error_blocks ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_usb -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_usb ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_085_lessee_manager_can_set_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_085_lessee_manager_can_set_maintenance ... ok -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_no_heartbeat -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_no_heartbeat ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_boot_iso -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_boot_iso ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_256_allocations_allocation_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_256_allocations_allocation_id_patch_member ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_correct_vendor -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_correct_vendor ... ok -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_power_off_false -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_power_off_false ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_086_owner_member_can_set_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_086_owner_member_can_set_maintenance ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_inspection -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_inspection ... ok -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_powered_after_heartbeat -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_powered_after_heartbeat ... ok -GOT:Response: 500 Internal Server Error -Content-Type: application/json -Openstack-Request-Id: req-2038ded4-a9b7-4866-bf79-27a4288a35d6 +Openstack-Request-Id: req-56428d2b-4f57-49fb-8ea3-a8246e5b5b10 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors/test-conductor-node -GET: /v1/conductors/test-conductor-node {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-437310c6-cbf0-4cdd-8efc-292965239be7 +Openstack-Request-Id: req-56428d2b-4f57-49fb-8ea3-a8246e5b5b10 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors/test-conductor-node -GET: /v1/conductors/test-conductor-node {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs +POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-87754625-9dfd-41fd-9160-252f741c9b4e +Openstack-Request-Id: req-608059ff-f2d7-4784-8ba6-8335bc83f97c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/conductors/test-conductor-node -GET: /v1/conductors/test-conductor-node {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c74b0ffc-c7b0-4118-bdb1-8b0b8574a69a +Openstack-Request-Id: req-608059ff-f2d7-4784-8ba6-8335bc83f97c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/allocations -POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs +POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f3c57330-91ff-4ae5-9cd8-1bd88868efed +Openstack-Request-Id: req-baa2cd42-46c7-46dc-bdb0-4c9524beb93a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/allocations -POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d3684bda-33c9-4f75-ba75-0977293970ab +Openstack-Request-Id: req-baa2cd42-46c7-46dc-bdb0-4c9524beb93a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations -GET: /v1/allocations {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs +POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a8d4f7c7-04a3-4153-bd2c-049410b54944 +Openstack-Request-Id: req-123bce3c-d755-4732-b3d5-63a2137414f1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations -GET: /v1/allocations {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-10eb91d8-5600-4604-9ab3-33997ecf73e5 +Openstack-Request-Id: req-123bce3c-d755-4732-b3d5-63a2137414f1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations -GET: /v1/allocations {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 +DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_257_owner_admin_delete_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_257_owner_admin_delete_vifs ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_258_owner_manager_delete_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_258_owner_manager_delete_vifs ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_215_drivers_properties_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_215_drivers_properties_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_200_nodes_volume_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_200_nodes_volume_get_reader ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_259_lessee_admin_can_delete_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_259_lessee_admin_can_delete_vifs ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_216_drivers_properties_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_216_drivers_properties_get_observer ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_failed_cleaning +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_failed_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_201_nodes_volume_connectors_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_201_nodes_volume_connectors_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_260_lessee_manager_can_delete_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_260_lessee_manager_can_delete_vifs ... ok +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_failed_deploying +ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_failed_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_217_drivers_raid_logical_disk_properties_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_217_drivers_raid_logical_disk_properties_get_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test__configure_vmedia_boot +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test__configure_vmedia_boot ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_261_owner_member_can_delete_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_261_owner_member_can_delete_vifs ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d1139bd6-6329-439f-9022-4facad92f86a +Openstack-Request-Id: req-d41a1bec-e277-4f97-a75c-75622aeffef3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations/5335020e-d05f-4de5-8458-e4f8c4da8858 -GET: /v1/allocations/5335020e-d05f-4de5-8458-e4f8c4da8858 {} -GOT:Response: 404 Not Found +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-ea5adee0-33ee-4219-965f-e4613c483f44 +Openstack-Request-Id: req-d41a1bec-e277-4f97-a75c-75622aeffef3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 5335020e-d05f-4de5-8458-e4f8c4da8858 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations/b4ac58ce-efa2-45fe-9e02-32c4e0ad2df4 -GET: /v1/allocations/b4ac58ce-efa2-45fe-9e02-32c4e0ad2df4 {} -GOT:Response: 404 Not Found +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-aba8eb10-c9fb-4a32-b090-3ba2d84b8f57 +Openstack-Request-Id: req-ff79ff68-37ab-4255-8cb4-5803133dbf6f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation b4ac58ce-efa2-45fe-9e02-32c4e0ad2df4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations/4d818307-7460-4db6-8366-115fd7122668 -GET: /v1/allocations/4d818307-7460-4db6-8366-115fd7122668 {} -GOT:Response: 404 Not Found +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e7796884-0f44-409e-b29a-0595487a0928 +Openstack-Request-Id: req-ff79ff68-37ab-4255-8cb4-5803133dbf6f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 4d818307-7460-4db6-8366-115fd7122668 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/allocations/46c4dcde-4870-4168-9ff5-bad9f5aaf944 -PATCH: /v1/allocations/46c4dcde-4870-4168-9ff5-bad9f5aaf944 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-468e132d-9d32-498a-9780-d323be641bfc +Openstack-Request-Id: req-c3db11fe-1f5d-41e2-ae36-709ae55cd8d9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 46c4dcde-4870-4168-9ff5-bad9f5aaf944 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/allocations/18550a5d-3128-4f96-9036-d5760ecccb35 -PATCH: /v1/allocations/18550a5d-3128-4f96-9036-d5760ecccb35 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2386a532-6ea6-414f-8319-160c6d0c0a21 +Openstack-Request-Id: req-c3db11fe-1f5d-41e2-ae36-709ae55cd8d9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 18550a5d-3128-4f96-9036-d5760ecccb35 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/allocations/c018543f-391e-442b-aeb0-e0e4768506d3 -PATCH: /v1/allocations/c018543f-391e-442b-aeb0-e0e4768506d3 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_257_allocations_allocation_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_257_allocations_allocation_id_patch_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_inspection_missing -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_inspection_missing ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_kernel_ramdisk -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_kernel_ramdisk ... ok -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_via_driver_info -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_via_driver_info ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_087_lessee_member_cannot_set_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_087_lessee_member_cannot_set_maintenance ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_258_allocations_allocation_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_258_allocations_allocation_id_delete_admin ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_local -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_local ... ok -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_via_driver_info_string -ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_via_driver_info_string ... ok -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_missing -ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_missing ... ok -ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_empty -ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_empty ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_088_third_party_admin_cannot_set_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_088_third_party_admin_cannot_set_maintenance ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_259_allocations_allocation_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_259_allocations_allocation_id_delete_member ... ok -ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_populated -ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_populated ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_create_port_when_its_state_is_none -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_create_port_when_its_state_is_none ... ok -ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_user_data_as_dict -ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_user_data_as_dict ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_get_properties -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_get_properties ... ok -ACL Test GOT Response: 403 Forbidden +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f42eb1a5-903b-4393-848f-5b48f0ac1df8 +Openstack-Request-Id: req-3446d03a-3136-45ba-aaae-89da1f7dbe62 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate {} -GOT:Response: 404 Not Found +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-682f6b2c-f4c9-4413-ad5b-49277cdf40f1 +Openstack-Request-Id: req-3446d03a-3136-45ba-aaae-89da1f7dbe62 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-682f6b2c-f4c9-4413-ad5b-49277cdf40f1 +Openstack-Request-Id: req-009e80d1-dcd4-4099-bf20-16eefed6e316 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance None +{"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"}]} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_202_nodes_volume_connectors_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_202_nodes_volume_connectors_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_218_drivers_raid_logical_disk_properties_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_218_drivers_raid_logical_disk_properties_get_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_262_lessee_member_cannot_delete_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_262_lessee_member_cannot_delete_vifs ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_203_nodes_volume_connectors_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_203_nodes_volume_connectors_get_reader ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_with_secure_boot +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_with_secure_boot ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_219_drivers_raid_logical_disk_properties_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_219_drivers_raid_logical_disk_properties_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_263_third_party_admin_cannot_delete_vifs +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_263_third_party_admin_cannot_delete_vifs ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_with_secure_boot_false +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_with_secure_boot_false ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_204_nodes_volume_targets_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_204_nodes_volume_targets_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_220_drivers_vendor_passthru_methods_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_220_drivers_vendor_passthru_methods_get_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_without_secure_boot +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_without_secure_boot ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_264_owner_readers_can_get_indicators +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_264_owner_readers_can_get_indicators ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_221_drivers_vendor_passthru_methods_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_221_drivers_vendor_passthru_methods_get_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_ramdisk +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_ramdisk ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_205_nodes_volume_targets_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_205_nodes_volume_targets_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_222_drivers_vendor_passthru_methods_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_222_drivers_vendor_passthru_methods_get_observer ... ok GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1d3cf162-4767-4d04-87c1-4fcc73ec55d9 +Openstack-Request-Id: req-34b9aac9-959c-4775-99c7-b238bebcc89f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1d3cf162-4767-4d04-87c1-4fcc73ec55d9 +Openstack-Request-Id: req-34b9aac9-959c-4775-99c7-b238bebcc89f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance None +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 +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-e985c768-56da-4dd6-a3c3-3ae09d52dff1 +Openstack-Request-Id: req-be4f321e-803c-44c0-8842-d747bbe6c67a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e985c768-56da-4dd6-a3c3-3ae09d52dff1 +Openstack-Request-Id: req-be4f321e-803c-44c0-8842-d747bbe6c67a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance None +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 +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-67ae8824-204a-4a64-9aca-2752358a75ac +Openstack-Request-Id: req-c53aa1bb-7492-4798-8688-cb001cf6b596 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-67ae8824-204a-4a64-9aca-2752358a75ac +Openstack-Request-Id: req-c53aa1bb-7492-4798-8688-cb001cf6b596 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance None +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 +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-2976610d-bf68-4aa6-b0f2-5e9a67564fbf +Openstack-Request-Id: req-ba27b37c-d198-484e-a125-33e5ff0e341a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2976610d-bf68-4aa6-b0f2-5e9a67564fbf +Openstack-Request-Id: req-ba27b37c-d198-484e-a125-33e5ff0e341a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance None +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 +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-231e0b23-837b-478a-95dd-dd5df66a7696 +Openstack-Request-Id: req-780bf87c-e2af-4210-a61d-92935bea8683 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-231e0b23-837b-478a-95dd-dd5df66a7696 +Openstack-Request-Id: req-780bf87c-e2af-4210-a61d-92935bea8683 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance None +API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 +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-f4294d48-d02a-4307-881e-3983eb2bada1 +Openstack-Request-Id: req-0d9074fb-76fd-450a-b4b2-37e26a769c4d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f4294d48-d02a-4307-881e-3983eb2bada1 +Openstack-Request-Id: req-0d9074fb-76fd-450a-b4b2-37e26a769c4d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 +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-d5e2e593-8e52-499f-a936-613c1746bf21 +Openstack-Request-Id: req-4148e3bd-1382-4906-8b83-7943ab6c56cd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-d5e2e593-8e52-499f-a936-613c1746bf21 +Openstack-Request-Id: req-4148e3bd-1382-4906-8b83-7943ab6c56cd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_user_data_as_string -ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_user_data_as_string ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_260_allocations_allocation_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_260_allocations_allocation_id_delete_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_089_owner_admin_can_unset_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_089_owner_admin_can_unset_maintenance ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_get_pxe_port_macs -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_get_pxe_port_macs ... ok -ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_no_configdrive -ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_no_configdrive ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_fail_missing_cpu -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_fail_missing_cpu ... ok -ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_string -ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_string ... ok -ironic.tests.unit.conductor.test_utils.GetTokenProjectFromRequestTestCase.test_no_token_info -ironic.tests.unit.conductor.test_utils.GetTokenProjectFromRequestTestCase.test_no_token_info ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_261_nodes_allocation_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_261_nodes_allocation_get_admin ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_fail_missing_memory_mb -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_fail_missing_memory_mb ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_090_owner_manager_can_unset_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_090_owner_manager_can_unset_maintenance ... ok -ironic.tests.unit.conductor.test_utils.GetTokenProjectFromRequestTestCase.test_returns_project_id_if_present -ironic.tests.unit.conductor.test_utils.GetTokenProjectFromRequestTestCase.test_returns_project_id_if_present ... ok -ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history -ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_boot_mode -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_boot_mode ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_262_nodes_allocation_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_262_nodes_allocation_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_091_lessee_admin_can_unset_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_091_lessee_admin_can_unset_maintenance ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_cpu -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_cpu ... ok -ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_disaled -ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_disaled ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_local_gb -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_local_gb ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_263_nodes_allocation_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_263_nodes_allocation_get_observer ... ok -ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_noop -ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_noop ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_092_lessee_manager_can_unset_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_092_lessee_manager_can_unset_maintenance ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_memory_mb -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_memory_mb ... ok -ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_with_error_severity -ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_with_error_severity ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_264_nodes_allocation_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_264_nodes_allocation_delete_admin ... ok -ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_with_user -ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_with_user ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_nics -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_nics ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_093_owner_member_can_unset_maintnenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_093_owner_member_can_unset_maintnenance ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ok ... ok -ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios -ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_preserve_boot_mode -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_preserve_boot_mode ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_265_nodes_allocation_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_265_nodes_allocation_delete_member ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_094_lessee_member_cannot_unset_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_094_lessee_member_cannot_unset_maintenance ... ok -ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios_exception -ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios_exception ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_empty_pxe_port_macs -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_empty_pxe_port_macs ... ok -ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios_unsupported -ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios_unsupported ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_095_third_party_admin_cannot_unset_maintenance -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_095_third_party_admin_cannot_unset_maintenance ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_266_nodes_allocation_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_266_nodes_allocation_delete_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_no_mac -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_no_mac ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_none_pxe_port_macs -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_none_pxe_port_macs ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_096_owner_admin_can_set_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_096_owner_admin_can_set_boot_device ... ok -ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify -ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_267_deploy_templates_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_267_deploy_templates_post_admin ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_set_port_pxe_disabled -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_set_port_pxe_disabled ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_set_port_pxe_enabled -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_set_port_pxe_enabled ... ok -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators {} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-877c0f95-1052-4dbf-ab16-16da239c766d +Openstack-Request-Id: req-0512978b-5b01-471c-a7e7-69410f5915db X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-877c0f95-1052-4dbf-ab16-16da239c766d +Openstack-Request-Id: req-0512978b-5b01-471c-a7e7-69410f5915db X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance -GOT:Response: 503 Service Unavailable +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/indicators +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/indicators {} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_265_lesse_readers_can_get_indicators +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_265_lesse_readers_can_get_indicators ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_partition_image +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_partition_image ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_266_third_party_admin_cannot_get_indicators +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_266_third_party_admin_cannot_get_indicators ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_206_nodes_volume_targets_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_206_nodes_volume_targets_get_reader ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_whole_disk_image +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_whole_disk_image ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_223_drivers_vendor_passthru_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_223_drivers_vendor_passthru_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_267_owner_reader_can_get_indicator_status +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_267_owner_reader_can_get_indicator_status ... skipped 'API appears to be broken and should be patched outside of this work.' +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_207_drivers_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_207_drivers_get_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_with_secure_boot +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_with_secure_boot ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_268_lessee_reader_not_get_indicator_status +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_268_lessee_reader_not_get_indicator_status ... skipped 'API appears to be broken and should be patched outside of this work.' +API ACL Testing Path get /v1/drivers/fake-driverz +GET: /v1/drivers/fake-driverz {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-4afd7903-18fd-485e-8912-79048e8830a8 +Openstack-Request-Id: req-ded03296-e311-4d44-8574-ec95b31ba470 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz +GET: /v1/drivers/fake-driverz {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-4afd7903-18fd-485e-8912-79048e8830a8 +Openstack-Request-Id: req-e01af78e-1739-4761-8895-4f9fce0e8948 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz +GET: /v1/drivers/fake-driverz {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-03b4fe3f-7d3c-4f5e-bdac-f1e6ee903648 +Openstack-Request-Id: req-e2c924cb-554f-4914-8c83-f51092e8e426 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/properties +GET: /v1/drivers/fake-driverz/properties {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-03b4fe3f-7d3c-4f5e-bdac-f1e6ee903648 +Openstack-Request-Id: req-83bdd791-4cb1-49b9-83df-75715d1edeeb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/properties +GET: /v1/drivers/fake-driverz/properties {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-6efcc39a-022a-404a-96db-076bc1df1130 +Openstack-Request-Id: req-3e053d16-890d-4ad4-a3b1-c82278aac067 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/properties +GET: /v1/drivers/fake-driverz/properties {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-6efcc39a-022a-404a-96db-076bc1df1130 +Openstack-Request-Id: req-d354b712-9401-4f99-a9eb-341c43fe8e2e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties +GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-7c73940c-1503-4c3c-9f23-b3011a5bd195 +Openstack-Request-Id: req-712b4753-22b6-44fe-ae3c-1daa3c6d27fb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties +GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-7c73940c-1503-4c3c-9f23-b3011a5bd195 +Openstack-Request-Id: req-45ab31c6-c090-441d-8542-a08db76c7c04 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties +GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-4b4d202a-19ea-420f-aa64-30e24c808f63 +Openstack-Request-Id: req-feef87bc-109d-4d26-bab0-f2613333c1ed X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods +GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-4b4d202a-19ea-420f-aa64-30e24c808f63 +Openstack-Request-Id: req-45b01222-313f-4764-86ad-8d585d4e1729 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -DELETE: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance -GOT:Response: 404 Not Found +{"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}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods +GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-bafb90f5-1fd9-46fc-b71b-5fabb02175bf +Openstack-Request-Id: req-4c1c31f2-7c7e-4362-8492-c9d01cca9f86 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"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}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods +GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-bafb90f5-1fd9-46fc-b71b-5fabb02175bf +Openstack-Request-Id: req-f17b7bd3-c21c-44c5-ac07-e0bbf20fb527 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 503 Service Unavailable +{"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}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test +GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-2448893e-3c47-45ca-965e-f21fdf4edbe6 +Openstack-Request-Id: req-e6d369f8-ff73-4d8e-bfbe-60b7aaa46801 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_224_drivers_vendor_passthru_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_224_drivers_vendor_passthru_get_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_with_secure_boot_false +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_with_secure_boot_false ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_208_drivers_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_208_drivers_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_225_drivers_vendor_passthru_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_225_drivers_vendor_passthru_get_observer ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_without_secure_boot +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_without_secure_boot ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_269_owner_member_can_set_indicator +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_269_owner_member_can_set_indicator ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_209_drivers_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_209_drivers_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_226_drivers_vendor_passthru_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_226_drivers_vendor_passthru_post_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_cleaning +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_270_lessee_member_cannot_set_indicator +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_270_lessee_member_cannot_set_indicator ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_deploying +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_deploying ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2448893e-3c47-45ca-965e-f21fdf4edbe6 +Openstack-Request-Id: req-009e80d1-dcd4-4099-bf20-16eefed6e316 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {'boot_device': 'pxe'} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_097_owner_manager_can_set_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_097_owner_manager_can_set_boot_device ... ok -ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify_get_state_fails -ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify_get_state_fails ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_268_deploy_templates_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_268_deploy_templates_post_member ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_port_creation -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_port_creation ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_098_lessee_admin_cannot_set_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_098_lessee_admin_cannot_set_boot_device ... ok -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_validate -ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_validate ... ok -ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify_validation_fails -ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify_validation_fails ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_269_deploy_templates_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_269_deploy_templates_post_observer ... ok -ironic.tests.unit.conf.test_auth.AuthConfTestCase.test_add_auth_opts -ironic.tests.unit.conf.test_auth.AuthConfTestCase.test_add_auth_opts ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_power_state -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_power_state ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_099_lessee_manager_cannot_set_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_099_lessee_manager_cannot_set_boot_device ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_properties -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_properties ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_270_deploy_templates_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_270_deploy_templates_get_admin ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_supported_power_states -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_supported_power_states ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_100_owner_member_cannot_set_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_100_owner_member_cannot_set_boot_device ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_loading_error -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_loading_error ... ok -GOT:Response: 404 Not Found +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0c9b072c-4bd2-4575-a218-9410d2ad84ca +Openstack-Request-Id: req-6b58123d-3e38-49d7-8c3a-af77a5df6c3a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation c018543f-391e-442b-aeb0-e0e4768506d3 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/fd1a55b7-2cd1-4948-b061-0b31c0f038a5 -DELETE: /v1/allocations/fd1a55b7-2cd1-4948-b061-0b31c0f038a5 -GOT:Response: 404 Not Found +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-07b53897-75a2-4470-adc4-42b21963a4eb +Openstack-Request-Id: req-6b58123d-3e38-49d7-8c3a-af77a5df6c3a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation fd1a55b7-2cd1-4948-b061-0b31c0f038a5 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/831f68b8-9319-4ade-9236-4ae53ca5ad12 -DELETE: /v1/allocations/831f68b8-9319-4ade-9236-4ae53ca5ad12 -GOT:Response: 404 Not Found +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0e6a1e18-3060-4ee0-9478-60368a914bd9 +Openstack-Request-Id: req-0666bee6-d624-483b-8621-9ccce7f6cfa8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 831f68b8-9319-4ade-9236-4ae53ca5ad12 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/15d7689d-b8fd-4853-8c49-0bb4e166336e -DELETE: /v1/allocations/15d7689d-b8fd-4853-8c49-0bb4e166336e -GOT:Response: 404 Not Found +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-1e51975f-a190-4912-80e5-f3e843e7b99c +Openstack-Request-Id: req-0666bee6-d624-483b-8621-9ccce7f6cfa8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 15d7689d-b8fd-4853-8c49-0bb4e166336e could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} -GOT:Response: 404 Not Found +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-521c696c-6898-46ff-809e-df6e72ae1e97 +Openstack-Request-Id: req-4cb3d6bd-5153-4c1a-81eb-659852694ef0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} -GOT:Response: 404 Not Found +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a872b8f7-36de-4cb9-ae11-0bfa1b7cfd42 +Openstack-Request-Id: req-4cb3d6bd-5153-4c1a-81eb-659852694ef0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} -GOT:Response: 404 Not Found +{"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"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8f6569b3-1b9f-4b3f-9763-4d3c9d5b292f +Openstack-Request-Id: req-89903209-6216-4eaa-8172-41b405fffca7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GOT:Response: 404 Not Found +{"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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e9a95b58-18b9-41d6-aef6-8154c9d94692 +Openstack-Request-Id: req-89903209-6216-4eaa-8172-41b405fffca7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GOT:Response: 404 Not Found +{"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"}]} +API ACL Testing Path get /v1/drivers +GET: /v1/drivers {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-94f47d42-2adb-418e-b677-f93f40020f29 +Openstack-Request-Id: req-9df1c730-24fd-4675-a7a9-7ab95aecec91 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation -GOT:Response: 404 Not Found +{"drivers": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4c7a0a45-1972-4509-a7ad-34aaf3dda95b +Openstack-Request-Id: req-9df1c730-24fd-4675-a7a9-7ab95aecec91 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/deploy_templates -POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} -GOT:Response: 500 Internal Server Error +{"drivers": []} +API ACL Testing Path get /v1/drivers +GET: /v1/drivers {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9b5e4f41-c229-42c9-a8bc-09e36d7d1440 +Openstack-Request-Id: req-a16115d6-74ed-43e3-a2f9-701da58f4133 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/deploy_templates -POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} -GOT:Response: 500 Internal Server Error +{"drivers": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b3d361a7-8205-405a-b3fb-089d75cdf626 +Openstack-Request-Id: req-a16115d6-74ed-43e3-a2f9-701da58f4133 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/deploy_templates -POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} -GOT:Response: 500 Internal Server Error +{"drivers": []} +API ACL Testing Path get /v1/drivers +GET: /v1/drivers {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4616ee7c-9ece-43a9-b703-8422d580a493 +Openstack-Request-Id: req-ac7d63ed-be77-4f3d-90e5-32212546b51b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates -GET: /v1/deploy_templates {} -GOT:Response: 500 Internal Server Error +{"drivers": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-aaade0d0-eba0-4994-b8ed-2517fdabe578 +Openstack-Request-Id: req-ac7d63ed-be77-4f3d-90e5-32212546b51b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates -GET: /v1/deploy_templates {} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_271_deploy_templates_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_271_deploy_templates_get_member ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_fail -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_101_lessee_member_cannot_set_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_101_lessee_member_cannot_set_boot_device ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_272_deploy_templates_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_272_deploy_templates_get_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_fail_on_power_on -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_fail_on_power_on ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_102_third_party_admin_cannot_set_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_102_third_party_admin_cannot_set_boot_device ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_from_power_off -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_from_power_off ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_273_deploy_templates_deploy_template_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_273_deploy_templates_deploy_template_id_get_admin ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_from_power_on -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_from_power_on ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_103_owner_admin_can_get_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_103_owner_admin_can_get_boot_device ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_not_reached -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_not_reached ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_274_deploy_templates_deploy_template_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_274_deploy_templates_deploy_template_id_get_member ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_104_owner_manager_can_get_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_104_owner_manager_can_get_boot_device ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_275_deploy_templates_deploy_template_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_275_deploy_templates_deploy_template_id_get_observer ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_fail -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_fail ... ok +{"drivers": []} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_210_drivers_driver_name_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_210_drivers_driver_name_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_227_drivers_vendor_passthru_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_227_drivers_vendor_passthru_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_211_drivers_driver_name_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_211_drivers_driver_name_get_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_rescuing +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_rescuing ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_271_third_party_admin_cannot_set_indicator +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_271_third_party_admin_cannot_set_indicator ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_228_drivers_vendor_passthru_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_228_drivers_vendor_passthru_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_212_drivers_driver_name_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_212_drivers_driver_name_get_reader ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_not_deploying_not_cleaning +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_not_deploying_not_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_272_owner_reader_can_list_portgroups +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_272_owner_reader_can_list_portgroups ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_remote_image_share_type_values +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_remote_image_share_type_values ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_229_drivers_vendor_passthru_put_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_229_drivers_vendor_passthru_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_213_drivers_properties_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_213_drivers_properties_get_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_273_lessee_reader_can_list_portgroups +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_273_lessee_reader_can_list_portgroups ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_230_drivers_vendor_passthru_put_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_230_drivers_vendor_passthru_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_214_drivers_properties_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_214_drivers_properties_get_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue_no_rescue_ramdisk +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue_no_rescue_ramdisk ... ok GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-feb6c602-85bf-4b35-8b3a-fc08d328c66f +Openstack-Request-Id: req-ef21be35-77cc-499d-bc35-19d7e65c5719 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-feb6c602-85bf-4b35-8b3a-fc08d328c66f +Openstack-Request-Id: req-ef21be35-77cc-499d-bc35-19d7e65c5719 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 403 Forbidden +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b720c9f9-fdee-46c2-b29b-be4439f881eb +Openstack-Request-Id: req-67372768-63cd-4a56-9153-e8f1a099b11f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b720c9f9-fdee-46c2-b29b-be4439f881eb +Openstack-Request-Id: req-67372768-63cd-4a56-9153-e8f1a099b11f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators/component/magic_light +PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators/component/magic_light None +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-608ac567-398c-48b2-bb27-8511e6a7e4e0 +Openstack-Request-Id: req-e383a714-c6ce-4b11-9763-c10fcbbf60cf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-608ac567-398c-48b2-bb27-8511e6a7e4e0 +Openstack-Request-Id: req-e383a714-c6ce-4b11-9763-c10fcbbf60cf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {'boot_device': 'pxe'} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/indicators/component/magic_light +PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/indicators/component/magic_light None GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-77d5a535-8340-4177-a13c-be01e671aef9 +Openstack-Request-Id: req-91af8aab-afd7-438b-b9d9-ffdcc83369a3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_indicator_state\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-77d5a535-8340-4177-a13c-be01e671aef9 +Openstack-Request-Id: req-91af8aab-afd7-438b-b9d9-ffdcc83369a3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_indicator_state\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/component/magic_light +PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/component/magic_light None +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9e516ebf-4488-41d9-abdd-f2c592a4b242 +Openstack-Request-Id: req-a513ea7a-3476-4352-8ec3-4d200548c274 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9e516ebf-4488-41d9-abdd-f2c592a4b242 +Openstack-Request-Id: req-a513ea7a-3476-4352-8ec3-4d200548c274 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {'boot_device': 'pxe'} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-53b7c5c0-d8ff-467f-82dc-41b44bb30396 +Openstack-Request-Id: req-781feee2-4d44-4c93-85bb-dfa37feb5882 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"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": "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-53b7c5c0-d8ff-467f-82dc-41b44bb30396 +Openstack-Request-Id: req-781feee2-4d44-4c93-85bb-dfa37feb5882 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {} -GOT:Response: 503 Service Unavailable +{"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": "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"}]}]} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a429a2d4-48f8-4837-b4b3-ea3cdf6c697d +Openstack-Request-Id: req-1666864d-3cf4-4799-8403-084407a6b26d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-a429a2d4-48f8-4837-b4b3-ea3cdf6c697d +Openstack-Request-Id: req-1666864d-3cf4-4799-8403-084407a6b26d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {} -GOT:Response: 503 Service Unavailable +{"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"}]}]} +API ACL Testing Path get /v1/portgroups +GET: /v1/portgroups {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_231_drivers_vendor_passthru_put_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_231_drivers_vendor_passthru_put_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_215_drivers_properties_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_215_drivers_properties_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_274_third_party_admin_cannot_list_portgroups +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_274_third_party_admin_cannot_list_portgroups ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue_ramdisk_not_exist +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue_ramdisk_not_exist ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_275_owner_reader_can_read_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_275_owner_reader_can_read_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_dir_path_verify_ca +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_dir_path_verify_ca ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_232_drivers_vendor_passthru_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_232_drivers_vendor_passthru_delete_admin ... skipped 'not updated for scope testing' +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_216_drivers_raid_logical_disk_properties_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_216_drivers_raid_logical_disk_properties_get_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_file_path_verify_ca +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_file_path_verify_ca ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_auth_method +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_auth_method ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_276_lessee_reader_can_read_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_276_lessee_reader_can_read_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_233_drivers_vendor_passthru_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_233_drivers_vendor_passthru_delete_observer ... skipped 'not updated for scope testing' +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_port +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_port ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_217_drivers_raid_logical_disk_properties_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_217_drivers_raid_logical_disk_properties_get_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_sensor_method +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_sensor_method ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_auth_password +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_auth_password ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_277_third_party_admin_cannot_read_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_277_third_party_admin_cannot_read_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_234_nodes_bios_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_234_nodes_bios_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_218_drivers_raid_logical_disk_properties_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_218_drivers_raid_logical_disk_properties_get_reader ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_auth_proto +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_auth_proto ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_community +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_community ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_port +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_port ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_235_nodes_bios_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_235_nodes_bios_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_278_owner_admin_can_add_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_278_owner_admin_can_add_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_priv_password +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_priv_password ... ok +API ACL Testing Path get /v1/drivers/fake-driverz +GET: /v1/drivers/fake-driverz {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bbf9357d-fa2e-41f7-8dbd-ca7c7b7d1df8 +Openstack-Request-Id: req-cf9b7366-a5f4-432f-83d0-88ceebdd6e6f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bbf9357d-fa2e-41f7-8dbd-ca7c7b7d1df8 +Openstack-Request-Id: req-cf9b7366-a5f4-432f-83d0-88ceebdd6e6f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device {} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_105_lessee_admin_cannot_get_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_105_lessee_admin_cannot_get_boot_device ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_not_reached -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_not_reached ... ok -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_validate -ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_validate ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_276_deploy_templates_deploy_template_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_276_deploy_templates_deploy_template_id_patch_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_106_owner_member_cannot_get_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_106_owner_member_cannot_get_boot_device ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_fail -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_277_deploy_templates_deploy_template_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_277_deploy_templates_deploy_template_id_patch_member ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_107_lessee_member_cannot_get_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_107_lessee_member_cannot_get_boot_device ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_fail_by_agent_consumed_memory -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_fail_by_agent_consumed_memory ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_108_owner_reader_cannot_get_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_108_owner_reader_cannot_get_boot_device ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_278_deploy_templates_deploy_template_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_278_deploy_templates_deploy_template_id_patch_observer ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_disabled -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_disabled ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_109_lessee_reader_cannot_get_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_109_lessee_reader_cannot_get_boot_device ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_279_deploy_templates_deploy_template_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_279_deploy_templates_deploy_template_id_delete_admin ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled_format_qcow2 -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled_format_qcow2 ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled_format_raw -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled_format_raw ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_110_third_party_admin_cannot_get_boot_device -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_110_third_party_admin_cannot_get_boot_device ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_280_deploy_templates_deploy_template_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_280_deploy_templates_deploy_template_id_delete_member ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_without_memory_mb -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_without_memory_mb ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_http_image -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_http_image ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_111_owner_admin_can_get_supported_boot_devices -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_111_owner_admin_can_get_supported_boot_devices ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_281_deploy_templates_deploy_template_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_281_deploy_templates_deploy_template_id_delete_observer ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_invalid_image_download_source -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_invalid_image_download_source ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_invalid_image_download_source2 -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_invalid_image_download_source2 ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_112_owner_manager_can_get_supported_boot_devices -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_112_owner_manager_can_get_supported_boot_devices ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_282_chassis_post_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_282_chassis_post_admin ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_file -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_file ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_local_http -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_local_http ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_local_via_node -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_local_via_node ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_not_http -ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_not_http ... ok -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz +GET: /v1/drivers/fake-driverz {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-51684ed5-24ff-4cdc-8e65-e07b979d192d +Openstack-Request-Id: req-8fb85571-18f7-4c65-82ea-2b66d2959c4b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates -GET: /v1/deploy_templates {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1c47a0ef-aadd-4c50-8d70-06dc48517d99 +Openstack-Request-Id: req-8fb85571-18f7-4c65-82ea-2b66d2959c4b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates/633c565a-4ac8-4b91-8c18-3fd0d11053fa -GET: /v1/deploy_templates/633c565a-4ac8-4b91-8c18-3fd0d11053fa {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz +GET: /v1/drivers/fake-driverz {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-64c72fe5-0d7b-4344-b306-ceab6b694eea +Openstack-Request-Id: req-d381c25b-f4ed-490e-8571-1326475893e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates/0177959a-b790-4661-93cd-e89c8f8d4f73 -GET: /v1/deploy_templates/0177959a-b790-4661-93cd-e89c8f8d4f73 {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-613e49f5-2471-4ae7-9f5c-114d05936036 +Openstack-Request-Id: req-d381c25b-f4ed-490e-8571-1326475893e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/deploy_templates/67f24e93-8acd-49f3-8e96-9b885a645846 -GET: /v1/deploy_templates/67f24e93-8acd-49f3-8e96-9b885a645846 {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/properties +GET: /v1/drivers/fake-driverz/properties {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8d5201a9-bd02-4033-8d65-7b218ced2eac +Openstack-Request-Id: req-30f9ea02-7310-47e8-90cb-3c9145e39f42 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/deploy_templates/26d6dece-7fea-41ab-81a3-57eb677cd3f1 -PATCH: /v1/deploy_templates/26d6dece-7fea-41ab-81a3-57eb677cd3f1 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-833003cd-37ee-4ed3-9d42-4f1819060995 +Openstack-Request-Id: req-30f9ea02-7310-47e8-90cb-3c9145e39f42 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:update\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/deploy_templates/e370b10a-7212-4d38-b681-26a0438fc71c -PATCH: /v1/deploy_templates/e370b10a-7212-4d38-b681-26a0438fc71c [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/properties +GET: /v1/drivers/fake-driverz/properties {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bc438e5a-772a-408c-8881-a8f80c398671 +Openstack-Request-Id: req-085955f7-7203-4b02-b9ad-01db6b4481e9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:update\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/deploy_templates/204be832-c133-4a50-9bc4-d2db83d2a581 -PATCH: /v1/deploy_templates/204be832-c133-4a50-9bc4-d2db83d2a581 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a9b3e844-7a7d-4847-9ac2-4ad24a89337a +Openstack-Request-Id: req-085955f7-7203-4b02-b9ad-01db6b4481e9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:update\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/deploy_templates/86301d63-4ec8-47b1-8682-22f66a1b0f06 -DELETE: /v1/deploy_templates/86301d63-4ec8-47b1-8682-22f66a1b0f06 -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/properties +GET: /v1/drivers/fake-driverz/properties {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-0ee285cf-62e4-43c6-ad82-8125bc3d3b44 +Openstack-Request-Id: req-b729964e-6de4-4bc5-be05-9d14b0393620 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/deploy_templates/07beab2b-4b72-43da-88c6-64703f679059 -DELETE: /v1/deploy_templates/07beab2b-4b72-43da-88c6-64703f679059 -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-41707894-7c34-42ba-93d3-8c7de3a45706 +Openstack-Request-Id: req-b729964e-6de4-4bc5-be05-9d14b0393620 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/deploy_templates/27c01904-0a82-4e96-9fda-c9c8c6b617f7 -DELETE: /v1/deploy_templates/27c01904-0a82-4e96-9fda-c9c8c6b617f7 -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties +GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a16cea91-b25d-494d-a4b5-583096f8c308 +Openstack-Request-Id: req-30ab820a-bdb3-403a-bb33-8db5483f7f27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/chassis -POST: /v1/chassis {'description': 'test-chassis'} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-51cc07a5-6bda-4a93-ae93-e370c1f93ee6 +Openstack-Request-Id: req-30ab820a-bdb3-403a-bb33-8db5483f7f27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path post /v1/chassis -POST: /v1/chassis {'description': 'test-chassis'} -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_283_chassis_post_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_283_chassis_post_member ... ok -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties +GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c6dcd152-290c-480a-b545-fa5b446cbba1 +Openstack-Request-Id: req-b466d8aa-73ea-4d31-bc3b-83bc07646aca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c6dcd152-290c-480a-b545-fa5b446cbba1 +Openstack-Request-Id: req-b466d8aa-73ea-4d31-bc3b-83bc07646aca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/raid/logical_disk_properties +GET: /v1/drivers/fake-driverz/raid/logical_disk_properties {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-044bb0d1-a1c9-48cf-b83b-b511c1d41e01 +Openstack-Request-Id: req-70739cf2-73b5-4f98-b799-e7203e1aaac0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-044bb0d1-a1c9-48cf-b83b-b511c1d41e01 +Openstack-Request-Id: req-70739cf2-73b5-4f98-b799-e7203e1aaac0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods +GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_219_drivers_vendor_passthru_methods_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_219_drivers_vendor_passthru_methods_get_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_priv_proto +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_priv_proto ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_236_nodes_bios_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_236_nodes_bios_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_220_drivers_vendor_passthru_methods_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_220_drivers_vendor_passthru_methods_get_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_security +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_security ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_user +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_user ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8fe01cf2-b0b8-4762-a4ba-b5934b33cf80 +Openstack-Request-Id: req-c6a101f3-7d2e-42c0-ae48-91ae0dac5301 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"portgroups": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8fe01cf2-b0b8-4762-a4ba-b5934b33cf80 +Openstack-Request-Id: req-c6a101f3-7d2e-42c0-ae48-91ae0dac5301 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device {} -GOT:Response: 403 Forbidden +{"portgroups": []} +API ACL Testing Path get /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc +GET: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5c6e3aa1-3321-41e3-875d-fb9ae5a80882 +Openstack-Request-Id: req-fafcb565-84ea-4afa-aaf1-5b20ab3e89cb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "created_at": "2024-01-06T14:13:22.410546+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, "links": [{"href": "http://localhost/v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "self"}, {"href": "http://localhost/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5c6e3aa1-3321-41e3-875d-fb9ae5a80882 +Openstack-Request-Id: req-fafcb565-84ea-4afa-aaf1-5b20ab3e89cb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device {} -GOT:Response: 403 Forbidden +{"uuid": "b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "created_at": "2024-01-06T14:13:22.410546+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, "links": [{"href": "http://localhost/v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "self"}, {"href": "http://localhost/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "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"}]} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-da159525-a6c6-47e1-ba77-da9d030e32bc +Openstack-Request-Id: req-ec505e63-15f6-4cbc-b1a9-8d00ac0898cd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:13:22.730810+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "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"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-da159525-a6c6-47e1-ba77-da9d030e32bc +Openstack-Request-Id: req-ec505e63-15f6-4cbc-b1a9-8d00ac0898cd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device {} +{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T14:13:22.730810+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "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"}]} +API ACL Testing Path get /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc +GET: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-0b6e0f0a-d567-4fa9-9652-cf49d803f4c4 +Openstack-Request-Id: req-7131f9e5-6c19-49d4-b504-b6d6dc1313d9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-0b6e0f0a-d567-4fa9-9652-cf49d803f4c4 +Openstack-Request-Id: req-7131f9e5-6c19-49d4-b504-b6d6dc1313d9 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} +GOT:Response: 201 Created +Content-Type: application/json +Location: http://localhost/v1/portgroups/682cd077-5cd8-4b24-aef9-49e75fe555ce +Openstack-Request-Id: req-ac67b5b8-a322-4820-a967-5a7e253ad120 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "682cd077-5cd8-4b24-aef9-49e75fe555ce", "created_at": "2024-01-06T14:13:23.327388+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/682cd077-5cd8-4b24-aef9-49e75fe555ce", "rel": "self"}, {"href": "http://localhost/portgroups/682cd077-5cd8-4b24-aef9-49e75fe555ce", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "ports": [{"href": "http://localhost/v1/portgroups/682cd077-5cd8-4b24-aef9-49e75fe555ce/ports", "rel": "self"}, {"href": "http://localhost/portgroups/682cd077-5cd8-4b24-aef9-49e75fe555ce/ports", "rel": "bookmark"}]} +ACL Test GOT Response: 201 Created +Content-Type: application/json +Location: http://localhost/v1/portgroups/682cd077-5cd8-4b24-aef9-49e75fe555ce +Openstack-Request-Id: req-ac67b5b8-a322-4820-a967-5a7e253ad120 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "682cd077-5cd8-4b24-aef9-49e75fe555ce", "created_at": "2024-01-06T14:13:23.327388+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/682cd077-5cd8-4b24-aef9-49e75fe555ce", "rel": "self"}, {"href": "http://localhost/portgroups/682cd077-5cd8-4b24-aef9-49e75fe555ce", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "ports": [{"href": "http://localhost/v1/portgroups/682cd077-5cd8-4b24-aef9-49e75fe555ce/ports", "rel": "self"}, {"href": "http://localhost/portgroups/682cd077-5cd8-4b24-aef9-49e75fe555ce/ports", "rel": "bookmark"}]} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_279_owner_manager_can_add_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_279_owner_manager_can_add_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_version +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_version ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_221_drivers_vendor_passthru_methods_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_221_drivers_vendor_passthru_methods_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_237_nodes_bios_bios_setting_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_237_nodes_bios_bios_setting_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_280_owner_member_cannot_add_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_280_owner_member_cannot_add_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_version_fips +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_version_fips ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_timeout +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_timeout ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_verify_ca +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_verify_ca ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_222_drivers_vendor_passthru_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_222_drivers_vendor_passthru_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_238_nodes_bios_bios_setting_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_238_nodes_bios_bios_setting_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_281_lessee_admin_cannot_add_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_281_lessee_admin_cannot_add_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_address +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_address ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_multiple_params +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_multiple_params ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_223_drivers_vendor_passthru_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_223_drivers_vendor_passthru_get_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_password +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_password ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_auth_password +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_auth_password ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_282_lessee_manager_cannot_add_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_282_lessee_manager_cannot_add_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_priv_password +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_priv_password ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_user +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_user ... ok +GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-a96827fe-728e-40df-8397-60dbb778a839 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test +GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-8080d7f4-b7df-4769-8549-823442034bff +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test +POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-3b28f029-ecf5-4338-af3d-1495efc70761 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test +POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-62f5b020-18ad-4a35-9c43-7092ac06a6c7 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test +POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-e7f78d72-7be3-41af-8d59-3fed30ea4bc5 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test +PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-00f67f9d-98c0-4f1c-a148-8a1b586dd938 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test +PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-28f99fc3-f16e-4d10-bfcd-1a67056a7540 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test +PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-99cb4aab-482b-45ee-a8fc-aae7ceffc25e +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-4b54d031-9698-464e-9dbe-9f9d425bc901 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported {} -GOT:Response: 503 Service Unavailable +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-67ac55b6-085f-49e3-8a86-893c491facbd +Openstack-Request-Id: req-3f0acc24-170c-4464-af22-eb8c5d0e0870 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-67ac55b6-085f-49e3-8a86-893c491facbd +Openstack-Request-Id: req-dffa1659-13cf-476e-968f-de58c1b00d67 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cba26806-3488-44e6-ad68-8e053ef98749 +Openstack-Request-Id: req-f322cd8c-c997-451d-8a78-0c477db78982 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cba26806-3488-44e6-ad68-8e053ef98749 +Openstack-Request-Id: req-ff11dd48-2a6d-404a-9489-9f8db8a0aeb4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported {} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_113_owner_member_cannot_get_supported_boot_devices -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_113_owner_member_cannot_get_supported_boot_devices ... ok -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_clean_up -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_clean_up ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_114_lessee_admin_cannot_get_supported_boot_devices -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_114_lessee_admin_cannot_get_supported_boot_devices ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_284_chassis_post_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_284_chassis_post_observer ... ok -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy ... ok -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_fast_track -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_fast_track ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_115_lessee_manager_cannot_get_supported_boot_devices -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_115_lessee_manager_cannot_get_supported_boot_devices ... ok -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_storage_should_write_image_false -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_storage_should_write_image_false ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_285_chassis_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_285_chassis_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_116_third_party_admin_cannot_get_supported_boot_devices -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_116_third_party_admin_cannot_get_supported_boot_devices ... ok -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_with_deployment_reboot -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_with_deployment_reboot ... ok -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_get_properties -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_get_properties ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_286_chassis_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_286_chassis_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_117_owner_admin_can_send_non_masking_interrupt -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_117_owner_admin_can_send_non_masking_interrupt ... ok -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_prepare -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_prepare ... ok -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_prepare_fast_track -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_prepare_fast_track ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_287_chassis_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_287_chassis_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_118_owner_manager_can_send_non_masking_interrupt -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_118_owner_manager_can_send_non_masking_interrupt ... ok -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_validate -ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_validate ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_288_chassis_detail_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_288_chassis_detail_get_admin ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue -ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_119_lessee_admin_cannot_send_non_masking_interrupt -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_119_lessee_admin_cannot_send_non_masking_interrupt ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_bad_command_result -ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_bad_command_result ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_exc -ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_exc ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_289_chassis_detail_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_289_chassis_detail_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_120_lessee_manager_cannot_send_non_masking_interrupt -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_120_lessee_manager_cannot_send_non_masking_interrupt ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_missing_command_result -ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_missing_command_result ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_with_smartnic_port -ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_with_smartnic_port ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_290_chassis_detail_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_290_chassis_detail_get_observer ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_bios -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_bios ... ok -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_239_nodes_bios_bios_setting_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_239_nodes_bios_bios_setting_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_224_drivers_vendor_passthru_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_224_drivers_vendor_passthru_get_reader ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_username +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_username ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_240_conductors_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_240_conductors_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_283_lessee_member_cannot_add_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_283_lessee_member_cannot_add_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_short_snmp_auth_password +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_short_snmp_auth_password ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_short_snmp_priv_password +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_short_snmp_priv_password ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_225_drivers_vendor_passthru_post_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_225_drivers_vendor_passthru_post_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_snmpv3 +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_snmpv3 ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_string_bool_verify_ca +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_string_bool_verify_ca ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_241_conductors_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_241_conductors_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_284_third_party_admin_cannot_add_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_284_third_party_admin_cannot_add_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_using_snmp_security +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_using_snmp_security ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_226_drivers_vendor_passthru_post_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_226_drivers_vendor_passthru_post_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_option_default +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_option_default ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_242_conductors_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_242_conductors_get_observer ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_get_properties +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_get_properties ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_285_owner_admin_can_modify_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_285_owner_admin_can_modify_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_exception +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_exception ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-22f53234-82c3-45cb-b075-3155e2ced7ad +Openstack-Request-Id: req-105b027e-0d54-4a36-b850-1bccb23ffc43 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-22f53234-82c3-45cb-b075-3155e2ced7ad +Openstack-Request-Id: req-105b027e-0d54-4a36-b850-1bccb23ffc43 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device/supported -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device/supported {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods +GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1725e4d6-fff3-4a1b-bd48-fe493f4963ca +Openstack-Request-Id: req-2b4e223b-52a8-4417-9e41-ea01d2de82db X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1725e4d6-fff3-4a1b-bd48-fe493f4963ca +Openstack-Request-Id: req-2b4e223b-52a8-4417-9e41-ea01d2de82db X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device/supported -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device/supported {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru/methods +GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0bd86cd5-15f7-476e-af61-c38907c893fc +Openstack-Request-Id: req-9d832c47-2867-40de-a61e-1d1b9b2effcf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0bd86cd5-15f7-476e-af61-c38907c893fc +Openstack-Request-Id: req-9d832c47-2867-40de-a61e-1d1b9b2effcf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test +GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-642492fd-b650-4501-9206-7c85254b285c +Openstack-Request-Id: req-60e86970-7f0d-4ce5-b3fe-0c07fb9a1afa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-642492fd-b650-4501-9206-7c85254b285c +Openstack-Request-Id: req-60e86970-7f0d-4ce5-b3fe-0c07fb9a1afa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/inject_nmi -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/inject_nmi {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test +GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f2f3b9bd-efcb-41d9-a127-97daa764c7bb +Openstack-Request-Id: req-6b284995-29ad-441b-8f54-d902cb87e0a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f2f3b9bd-efcb-41d9-a127-97daa764c7bb +Openstack-Request-Id: req-6b284995-29ad-441b-8f54-d902cb87e0a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/inject_nmi -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/inject_nmi {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/drivers/fake-driverz/vendor_passthru?method=test +GET: /v1/drivers/fake-driverz/vendor_passthru?method=test {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1472c0c0-2702-4175-9fbb-5403e9e9bcf0 +Openstack-Request-Id: req-94b54d84-695d-46d4-a933-b84370981863 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1472c0c0-2702-4175-9fbb-5403e9e9bcf0 +Openstack-Request-Id: req-94b54d84-695d-46d4-a933-b84370981863 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/inject_nmi -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/inject_nmi {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test +POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-68d5721a-7ae0-485d-87fc-a60d2b17a40c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-68d5721a-7ae0-485d-87fc-a60d2b17a40c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test +POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ff066000-5617-471f-8acf-7083fc0dcd90 +Openstack-Request-Id: req-1c256500-b671-4a7d-9999-89f65ff00ec0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ff066000-5617-471f-8acf-7083fc0dcd90 +Openstack-Request-Id: req-1c256500-b671-4a7d-9999-89f65ff00ec0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/inject_nmi -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/inject_nmi {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/drivers/fake-driverz/vendor_passthru?method=test +POST: /v1/drivers/fake-driverz/vendor_passthru?method=test None GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f75c4aba-1c2e-4b96-a684-d8fe9e6a704a +Openstack-Request-Id: req-96bbcf57-d6d5-47e9-ae26-cde29b7e3eb9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_227_drivers_vendor_passthru_post_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_227_drivers_vendor_passthru_post_reader ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_ipmitool_ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_ipmitool_ok ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_228_drivers_vendor_passthru_put_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_228_drivers_vendor_passthru_put_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_243_conductors_hostname_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_243_conductors_hostname_get_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ng +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ng ... ok +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-f75c4aba-1c2e-4b96-a684-d8fe9e6a704a +Location: http://localhost/v1/portgroups/be36525e-e440-4cfd-95bb-9bed486af7b5 +Openstack-Request-Id: req-f4ed44e5-675c-4329-a734-70a8e6ae2950 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi {} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_121_third_party_admin_cannot_send_non_masking_interrupt -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_121_third_party_admin_cannot_send_non_masking_interrupt ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_bios_default -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_bios_default ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_default -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_default ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_122_owner_reader_get_states -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_122_owner_reader_get_states ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_default_set -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_default_set ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_291_chassis_chassis_id_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_291_chassis_chassis_id_get_admin ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_capabilities -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_capabilities ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info_cap -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info_cap ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_292_chassis_chassis_id_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_292_chassis_chassis_id_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_123_lessee_reader_get_states -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_123_lessee_reader_get_states ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info_secure_boot -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info_secure_boot ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_uefi -ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_uefi ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_get_async_step_return_state_cleaning -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_get_async_step_return_state_cleaning ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_293_chassis_chassis_id_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_293_chassis_chassis_id_get_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_124_third_part_admin_cannot_get_states -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_124_third_part_admin_cannot_get_states ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_get_async_step_return_state_deploying -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_get_async_step_return_state_deploying ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_cleaning_set_all -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_cleaning_set_all ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_cleaning_set_one -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_cleaning_set_one ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_294_chassis_chassis_id_patch_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_294_chassis_chassis_id_patch_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_125_owner_admin_can_put_power_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_125_owner_admin_can_put_power_state_change ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_clears_non_pregenerated_token -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_clears_non_pregenerated_token ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncMysql.test_models_sync -ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncMysql.test_models_sync ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_deploying_set_all -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_deploying_set_all ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_295_chassis_chassis_id_patch_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_295_chassis_chassis_id_patch_member ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_deploying_set_one -ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_deploying_set_one ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_126_owner_manager_can_put_power_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_126_owner_manager_can_put_power_state_change ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_boot_iso_only -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_boot_iso_only ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_create_schema_and_version -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_create_schema_and_version ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_upgrade_and_create_schema -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_upgrade_and_create_schema ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" -GOT:Response: 500 Internal Server Error +{"uuid": "be36525e-e440-4cfd-95bb-9bed486af7b5", "created_at": "2024-01-06T14:13:23.630366+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/be36525e-e440-4cfd-95bb-9bed486af7b5", "rel": "self"}, {"href": "http://localhost/portgroups/be36525e-e440-4cfd-95bb-9bed486af7b5", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "ports": [{"href": "http://localhost/v1/portgroups/be36525e-e440-4cfd-95bb-9bed486af7b5/ports", "rel": "self"}, {"href": "http://localhost/portgroups/be36525e-e440-4cfd-95bb-9bed486af7b5/ports", "rel": "bookmark"}]} +ACL Test GOT Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-2e47cc37-d486-4364-8330-624022af8833 +Location: http://localhost/v1/portgroups/be36525e-e440-4cfd-95bb-9bed486af7b5 +Openstack-Request-Id: req-f4ed44e5-675c-4329-a734-70a8e6ae2950 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path post /v1/chassis -POST: /v1/chassis {'description': 'test-chassis'} -GOT:Response: 500 Internal Server Error +{"uuid": "be36525e-e440-4cfd-95bb-9bed486af7b5", "created_at": "2024-01-06T14:13:23.630366+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/be36525e-e440-4cfd-95bb-9bed486af7b5", "rel": "self"}, {"href": "http://localhost/portgroups/be36525e-e440-4cfd-95bb-9bed486af7b5", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "ports": [{"href": "http://localhost/v1/portgroups/be36525e-e440-4cfd-95bb-9bed486af7b5/ports", "rel": "self"}, {"href": "http://localhost/portgroups/be36525e-e440-4cfd-95bb-9bed486af7b5/ports", "rel": "bookmark"}]} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-087a7d08-9803-40ae-970a-7314041ef0e8 +Openstack-Request-Id: req-2697ed89-09bf-4b0d-84b9-52ce6d75a153 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/chassis -GET: /v1/chassis {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-77b9200a-32c2-4bcd-95f4-63832adb45d6 +Openstack-Request-Id: req-2697ed89-09bf-4b0d-84b9-52ce6d75a153 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis -GET: /v1/chassis {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1bce7721-b9bd-43fb-8b2a-a2cc41dc5c7f +Openstack-Request-Id: req-2ccff260-ec7e-4188-b075-dfab2e8c1716 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis -GET: /v1/chassis {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-275091e7-4303-42a1-a7e3-38ad350ff5d8 +Openstack-Request-Id: req-2ccff260-ec7e-4188-b075-dfab2e8c1716 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/detail -GET: /v1/chassis/detail {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0cc7ddc8-6096-46e5-b7d4-8d5934ad8d24 +Openstack-Request-Id: req-1fb7621f-0f44-4fcd-9010-7060af744e14 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/detail -GET: /v1/chassis/detail {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7ca2b85b-4e88-4623-b5da-c6fa1c48b342 +Openstack-Request-Id: req-1fb7621f-0f44-4fcd-9010-7060af744e14 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/detail -GET: /v1/chassis/detail {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-14c0bddd-176b-4db6-b2d9-06f14e9c39df +Openstack-Request-Id: req-3d6ce3e7-8f59-4634-b35f-bc6124fcab36 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1302e4bc-78d8-4ecc-a852-b57ef17d39b5 +Openstack-Request-Id: req-3d6ce3e7-8f59-4634-b35f-bc6124fcab36 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/portgroups +POST: /v1/portgroups {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-10d5bd93-c077-4e31-ad0f-d667409aae8a +Openstack-Request-Id: req-48e96910-a077-4d22-a897-040b3b87007a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6b00fcb6-c67e-471b-b346-22cc6b6de051 +Openstack-Request-Id: req-48e96910-a077-4d22-a897-040b3b87007a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc +PATCH: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3251b90c-4fe5-4259-bc76-b3e95a6fb0d8 +Openstack-Request-Id: req-223297aa-38aa-40c1-bd51-ed2c19256e20 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"role:member and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] -GOT:Response: 500 Internal Server Error +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-f63e34f0-2110-4c45-aa68-7ae80faf053a +Openstack-Request-Id: req-223297aa-38aa-40c1-bd51-ed2c19256e20 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"role:member and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_296_chassis_chassis_id_patch_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_296_chassis_chassis_id_patch_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_127_lessee_admin_can_put_power_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_127_lessee_admin_can_put_power_state_change ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_upgrade_and_version -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_upgrade_and_version ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_297_chassis_chassis_id_delete_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_297_chassis_chassis_id_delete_admin ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_upgrade_twice -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_upgrade_twice ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good_non_glance_image -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good_non_glance_image ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_128_lessee_manager_can_put_power_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_128_lessee_manager_can_put_power_state_change ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_298_chassis_chassis_id_delete_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_298_chassis_chassis_id_delete_member ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_walk_versions -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_walk_versions ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good_non_glance_image_anaconda -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good_non_glance_image_anaconda ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_missing_image_source -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_missing_image_source ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_299_chassis_chassis_id_delete_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_299_chassis_chassis_id_delete_observer ... ok -ironic.tests.unit.db.test_api.GetNotVersionsTestCase.test_get_not_versions -ironic.tests.unit.db.test_api.GetNotVersionsTestCase.test_get_not_versions ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_non_glance_image_missing_kernel -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_non_glance_image_missing_kernel ... ok +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc +PATCH: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_286_owner_manager_can_modify_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_286_owner_manager_can_modify_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_229_drivers_vendor_passthru_put_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_229_drivers_vendor_passthru_put_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_244_conductors_hostname_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_244_conductors_hostname_get_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ok ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_287_owner_member_cannot_modify_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_287_owner_member_cannot_modify_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_supported_boot_devices +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_supported_boot_devices ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_230_drivers_vendor_passthru_put_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_230_drivers_vendor_passthru_put_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_245_conductors_hostname_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_245_conductors_hostname_get_observer ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_inject_nmi_fail +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_inject_nmi_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_288_lessee_admin_cannot_modify_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_288_lessee_admin_cannot_modify_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_inject_nmi_ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_inject_nmi_ok ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_231_drivers_vendor_passthru_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_231_drivers_vendor_passthru_delete_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_restore_irmc_bios_config +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_restore_irmc_bios_config ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_246_allocations_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_246_allocations_post_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_289_lessee_manager_cannot_modify_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_289_lessee_manager_cannot_modify_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ng +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ng ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_232_drivers_vendor_passthru_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_232_drivers_vendor_passthru_delete_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_247_allocations_post_member +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." +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_290_lessee_member_cannot_modify_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_290_lessee_member_cannot_modify_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_bios +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_bios ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_233_nodes_bios_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_233_nodes_bios_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_248_allocations_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_248_allocations_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_291_third_party_admin_cannot_modify_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_291_third_party_admin_cannot_modify_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_cdrom +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_cdrom ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_249_allocations_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_249_allocations_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_234_nodes_bios_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_234_nodes_bios_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_292_owner_admin_can_delete_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_292_owner_admin_can_delete_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_disk +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_disk ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_250_allocations_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_250_allocations_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_293_owner_manager_can_delete_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_293_owner_manager_can_delete_portgroup ... ok +ACL Test GOT Response: 403 Forbidden +Content-Type: application/json +Openstack-Request-Id: req-96bbcf57-d6d5-47e9-ae26-cde29b7e3eb9 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test +PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-703268b9-e67f-4314-ba02-810ae230ccd1 +Openstack-Request-Id: req-5aa886f6-9b9b-4c67-9573-7f4baba72f26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-703268b9-e67f-4314-ba02-810ae230ccd1 +Openstack-Request-Id: req-5aa886f6-9b9b-4c67-9573-7f4baba72f26 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test +PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-db95d709-d1db-4ab8-947f-cc94589edace +Openstack-Request-Id: req-a899a1e9-4710-4008-b637-d031f88d9125 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-db95d709-d1db-4ab8-947f-cc94589edace +Openstack-Request-Id: req-a899a1e9-4710-4008-b637-d031f88d9125 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states {} -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path put /v1/drivers/fake-driverz/vendor_passthru?method=test +PUT: /v1/drivers/fake-driverz/vendor_passthru?method=test None +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-dfdaf033-e21d-424d-ae88-a068e1b67817 +Openstack-Request-Id: req-fb9803e7-4b70-4f7a-9c42-85cf89823572 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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} -ACL Test GOT Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-dfdaf033-e21d-424d-ae88-a068e1b67817 +Openstack-Request-Id: req-fb9803e7-4b70-4f7a-9c42-85cf89823572 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/drivers/fake-driverz/vendor_passthru?method=test +DELETE: /v1/drivers/fake-driverz/vendor_passthru?method=test GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1ba34516-3a6f-4d0d-a87a-9792391ccd7c +Openstack-Request-Id: req-1f11adba-81a3-4af0-9875-fec18fe9ead5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1ba34516-3a6f-4d0d-a87a-9792391ccd7c +Openstack-Request-Id: req-1f11adba-81a3-4af0-9875-fec18fe9ead5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power {'target': 'power on'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/drivers/fake-driverz/vendor_passthru?method=test +DELETE: /v1/drivers/fake-driverz/vendor_passthru?method=test +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-316455bf-f2e4-4254-aa2b-8aea4b9f835b +Openstack-Request-Id: req-6ee776a6-88c8-44a2-9965-cfd928c83ffb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-316455bf-f2e4-4254-aa2b-8aea4b9f835b +Openstack-Request-Id: req-6ee776a6-88c8-44a2-9965-cfd928c83ffb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power {'target': 'power on'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b11bb267-1a45-4c61-b00f-d57cc5094bb9 +Openstack-Request-Id: req-a43bf483-ad1f-4b0e-b3b8-31b78879c19a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"bios": [{"created_at": "2024-01-06T14:13:26.753122+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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b11bb267-1a45-4c61-b00f-d57cc5094bb9 +Openstack-Request-Id: req-a43bf483-ad1f-4b0e-b3b8-31b78879c19a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power {'target': 'power on'} -GOT:Response: 503 Service Unavailable +{"bios": [{"created_at": "2024-01-06T14:13:26.753122+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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f6c4cecd-19bd-4b44-9c7b-36e0de5cddf9 +Openstack-Request-Id: req-a92e5d89-24ed-444e-acd5-863a4bfa73c7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"bios": [{"created_at": "2024-01-06T14:13:27.014347+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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f6c4cecd-19bd-4b44-9c7b-36e0de5cddf9 +Openstack-Request-Id: req-a92e5d89-24ed-444e-acd5-863a4bfa73c7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power {'target': 'power on'} +{"bios": [{"created_at": "2024-01-06T14:13:27.014347+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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_235_nodes_bios_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_235_nodes_bios_get_reader ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_pxe +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_pxe ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_251_allocations_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_251_allocations_get_observer ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_safe +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_safe ... ok GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c6177b91-007c-4404-8f28-f1f841ecf3ab +Openstack-Request-Id: req-0ee759d9-48fa-42bc-8a27-71fea75261ad X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c6177b91-007c-4404-8f28-f1f841ecf3ab +Openstack-Request-Id: req-0ee759d9-48fa-42bc-8a27-71fea75261ad X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_129_owner_member_can_put_power_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_129_owner_member_can_put_power_state_change ... ok -ironic.tests.unit.db.test_api.GetNotVersionsTestCase.test_get_not_versions_no_model -ironic.tests.unit.db.test_api.GetNotVersionsTestCase.test_get_not_versions_no_model ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_non_glance_image_missing_ramdisk -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_non_glance_image_missing_ramdisk ... ok -ironic.tests.unit.db.test_api.GetNotVersionsTestCase.test_get_not_versions_null -ironic.tests.unit.db.test_api.GetNotVersionsTestCase.test_get_not_versions_null ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_ramdisk_deploy -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_ramdisk_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_300_node_history_get_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_300_node_history_get_admin ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_130_lessee_member_can_put_power_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_130_lessee_member_can_put_power_state_change ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_whole_disk_image -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_whole_disk_image ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_amount_not_satisfied -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_amount_not_satisfied ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_cache_still_large -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_cache_still_large ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_301_node_history_get_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_301_node_history_get_member ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_131_owner_reader_cannot_put_power_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_131_owner_reader_cannot_put_power_state_change ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_ensure_cache_size -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_ensure_cache_size ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_ensure_cache_size_with_amount -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_ensure_cache_size_with_amount ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_302_node_history_get_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_302_node_history_get_observer ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_files_with_links_untouched -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_files_with_links_untouched ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_132_lessee_reader_cannot_put_power_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_132_lessee_reader_cannot_put_power_state_change ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_old_deleted -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_old_deleted ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_303_node_history_get_entry_admin -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_303_node_history_get_entry_admin ... ok -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_old_with_amount -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_old_with_amount ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_cleanup_ordering -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_cleanup_ordering ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_133_third_party_admin_cannot_put_power_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_133_third_party_admin_cannot_put_power_state_change ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_304_node_history_get_entry_member -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_304_node_history_get_entry_member ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_temp_dir_exception -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_temp_dir_exception ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_temp_images_not_cleaned -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_temp_images_not_cleaned ... ok -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_305_node_history_get_entry_observer -ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_305_node_history_get_entry_observer ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_134_owner_admin_can_put_boot_mode_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_134_owner_admin_can_put_boot_mode_state_change ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_no_dest -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_no_dest ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_no_master -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_no_master ... ok -ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_disable_audit_request -ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_disable_audit_request ... ok -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_conductor -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_conductor ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_out_of_date -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_out_of_date ... ok -ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_enable_audit_request -ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_enable_audit_request ... ok -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_conductor_old -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_conductor_old ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_up_to_date -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_up_to_date ... ok -ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_enable_audit_request_error -ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_enable_audit_request_error ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_135_owner_manager_can_put_boot_mode_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_135_owner_manager_can_put_boot_mode_state_change ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_glance_img -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_glance_img ... ok -ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_get_arg -ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_get_arg ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_glance_img_not_cached -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_glance_img_not_cached ... ok -ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_set_arg_types -ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_set_arg_types ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_master_same_time -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_master_same_time ... ok -ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_signature -ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_signature ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_136_lessee_admin_can_put_boot_mode_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_136_lessee_admin_can_put_boot_mode_state_change ... ok -ironic.tests.unit.api.test_hooks.TestPolicyDeprecation.test_policy_deprecation_check -ironic.tests.unit.api.test_hooks.TestPolicyDeprecation.test_policy_deprecation_check ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_master_up_to_date -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_master_up_to_date ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_no_master -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_no_master ... ok -ironic.tests.unit.api.test_method.TestExpose.test_exception -ironic.tests.unit.api.test_method.TestExpose.test_exception ... ok -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_emptyDB -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_emptyDB ... ok -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_handles_missing_table -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_handles_missing_table ... ok -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power {'target': 'power on'} -GOT:Response: 503 Service Unavailable +API ACL Testing Path patch /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc +PATCH: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6977a1b9-cde8-4c3b-b209-b800a1963a6b +Openstack-Request-Id: req-219dbeac-8325-46e5-9581-321e2806452e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6977a1b9-cde8-4c3b-b209-b800a1963a6b +Openstack-Request-Id: req-219dbeac-8325-46e5-9581-321e2806452e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power {'target': 'power on'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7108db8d-c221-4853-aa4e-918417ef2124 +Openstack-Request-Id: req-6a5e3694-ec6d-43ca-82f7-48b74a5c3578 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7108db8d-c221-4853-aa4e-918417ef2124 +Openstack-Request-Id: req-6a5e3694-ec6d-43ca-82f7-48b74a5c3578 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power {'target': 'power on'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ae26d6e2-17c9-4d26-9dd7-28b7b28878f9 +Openstack-Request-Id: req-4a6bb751-70a7-4f7d-b9e7-c653d22329d8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ae26d6e2-17c9-4d26-9dd7-28b7b28878f9 +Openstack-Request-Id: req-4a6bb751-70a7-4f7d-b9e7-c653d22329d8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power {'target': 'power on'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-27af3fae-6ac4-4b79-9784-6e27c207ebc4 +Openstack-Request-Id: req-43ed3237-bd62-4571-90e5-7c445a364bcf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-27af3fae-6ac4-4b79-9784-6e27c207ebc4 +Openstack-Request-Id: req-43ed3237-bd62-4571-90e5-7c445a364bcf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power {'target': 'power on'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e43ca61e-f093-4452-bb40-3f581d658cc7 +Openstack-Request-Id: req-e01474a0-ef94-4fd8-aac2-b5bf2714bce9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-e43ca61e-f093-4452-bb40-3f581d658cc7 +Openstack-Request-Id: req-e01474a0-ef94-4fd8-aac2-b5bf2714bce9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode {'target': 'uefi'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc +DELETE: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-942c5dc2-e169-467f-81af-cd852c0a9d9e +Openstack-Request-Id: req-9a81b8e5-bbb1-4d5d-aa5a-934052a5f8a8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-942c5dc2-e169-467f-81af-cd852c0a9d9e +Openstack-Request-Id: req-9a81b8e5-bbb1-4d5d-aa5a-934052a5f8a8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode {'target': 'uefi'} +API ACL Testing Path delete /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc +DELETE: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0757fe06-2406-4ecf-b31a-332737185216 +Openstack-Request-Id: req-686c2b11-fe5b-4c7e-9156-49552436e59a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0757fe06-2406-4ecf-b31a-332737185216 +Openstack-Request-Id: req-686c2b11-fe5b-4c7e-9156-49552436e59a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode {'target': 'uefi'} -GOT:Response: 503 Service Unavailable +API ACL Testing Path delete /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc +DELETE: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_294_owner_member_cannot_delete_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_294_owner_member_cannot_delete_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_252_allocations_allocation_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_252_allocations_allocation_id_get_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_295_lessee_admin_cannot_delete_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_295_lessee_admin_cannot_delete_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_236_nodes_bios_bios_setting_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_236_nodes_bios_bios_setting_get_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate_fail +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_253_allocations_allocation_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_253_allocations_allocation_id_get_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_power_state +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_power_state ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_296_lessee_manager_cannot_delete_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_296_lessee_manager_cannot_delete_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_254_allocations_allocation_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_254_allocations_allocation_id_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_237_nodes_bios_bios_setting_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_237_nodes_bios_bios_setting_get_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_properties +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_power_on +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_power_on ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_297_lessee_member_cannot_delete_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_297_lessee_member_cannot_delete_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_power_on_timeout +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_power_on_timeout ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_238_nodes_bios_bios_setting_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_238_nodes_bios_bios_setting_get_reader ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-5e86b2ad-a1ee-4fe5-a187-4b838f195120 +Openstack-Request-Id: req-22a29ca9-0b58-4c96-9c44-2375077af78e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors +GET: /v1/conductors {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-5e86b2ad-a1ee-4fe5-a187-4b838f195120 +Openstack-Request-Id: req-c04f837d-5f68-4529-90eb-e1031fd534ce X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode {'target': 'uefi'} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_137_lessee_manager_can_put_boot_mode_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_137_lessee_manager_can_put_boot_mode_state_change ... ok -ironic.tests.unit.api.test_method.TestExpose.test_expose -ironic.tests.unit.api.test_method.TestExpose.test_expose ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_no_updated_at -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_no_updated_at ... ok -ironic.tests.unit.api.test_method.TestExpose.test_expose_validation -ironic.tests.unit.api.test_method.TestExpose.test_expose_validation ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_out_of_date -ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_out_of_date ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_138_owner_member_can_put_boot_mode_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_138_owner_member_can_put_boot_mode_state_change ... ok -ironic.tests.unit.api.test_method.TestExpose.test_post_body -ironic.tests.unit.api.test_method.TestExpose.test_post_body ... ok -ironic.tests.unit.api.test_method.TestExpose.test_post_body_validation -ironic.tests.unit.api.test_method.TestExpose.test_post_body_validation ... ok -ironic.tests.unit.api.test_method.TestExpose.test_response_204 -ironic.tests.unit.api.test_method.TestExpose.test_response_204 ... ok -ironic.tests.unit.drivers.modules.test_image_utils.IloImageHandlerTestCase.test_ilo_kernel_param_config -ironic.tests.unit.drivers.modules.test_image_utils.IloImageHandlerTestCase.test_ilo_kernel_param_config ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_139_lessee_member_can_put_boot_mode_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_139_lessee_member_can_put_boot_mode_state_change ... ok -ironic.tests.unit.api.test_method.TestExpose.test_response_content -ironic.tests.unit.api.test_method.TestExpose.test_response_content ... ok -ironic.tests.unit.api.test_method.TestExpose.test_response_custom_status -ironic.tests.unit.api.test_method.TestExpose.test_response_custom_status ... ok -ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_authenticated -ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_authenticated ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_140_owner_reader_cannot_put_boot_mode_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_140_owner_reader_cannot_put_boot_mode_state_change ... ok -ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist -ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist ... ok -ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_not_authenticated -ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_not_authenticated ... ok -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_ignore_node -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_ignore_node ... ok -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_missing_version_columns -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_missing_version_columns ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_141_lessee_reader_cannot_put_boot_mode_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_141_lessee_reader_cannot_put_boot_mode_state_change ... ok +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors +GET: /v1/conductors {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-8c183542-f3b3-4b92-b957-bed698c350ea +Openstack-Request-Id: req-2944b875-92b4-4871-a1cd-ddf7c9306c86 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"role:member and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors +GET: /v1/conductors {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-4f438187-ef90-4e68-ac6c-a328e53b7d8c +Openstack-Request-Id: req-94a0ee90-0472-45a4-96ec-e5cf4bab663a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors/test-conductor-node +GET: /v1/conductors/test-conductor-node {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-fdda9e69-81b4-4b03-a8e8-81e949197e84 +Openstack-Request-Id: req-4304eb36-2635-4e97-a8ae-ad280724a077 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 -DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors/test-conductor-node +GET: /v1/conductors/test-conductor-node {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-fd52cf19-4cd9-4150-9c69-894e41336f06 +Openstack-Request-Id: req-d5f69392-a0c6-4d56-a747-0e143869a22c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/conductors/test-conductor-node +GET: /v1/conductors/test-conductor-node {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-0703b8be-7a8c-43b2-a420-48110bfbdba5 +Openstack-Request-Id: req-47fc96ba-b1d2-40ec-882e-43a8d4cc61f7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/allocations +POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f5369c4b-6524-4d98-8324-8c6b47724228 +Openstack-Request-Id: req-8bf579f8-e095-4be0-ab77-32a367615a65 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/allocations +POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-53565e48-de16-46f2-92be-a27008e2e7c7 +Openstack-Request-Id: req-c0b5eb73-843e-4e73-8091-7be1e306fddf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/9ccd4f06-45cc-4e9e-89bf-4de39e773793 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/9ccd4f06-45cc-4e9e-89bf-4de39e773793 {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations +GET: /v1/allocations {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1cc94848-1edd-4294-9db4-2d25d8257a4e +Openstack-Request-Id: req-2ad4f40b-7648-4083-b1ee-b65bafefaa2b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/60c2aa4f-359b-47fe-941c-e43b9c67881f -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/60c2aa4f-359b-47fe-941c-e43b9c67881f {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations +GET: /v1/allocations {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bc4b8093-f8fd-42fb-9caa-60efd40efc40 +Openstack-Request-Id: req-df591539-e931-4c8c-b00e-7e9e5dd3a72d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/b50c3e15-9667-4a1c-bed6-785bb148d5ad -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/b50c3e15-9667-4a1c-bed6-785bb148d5ad {} -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations +GET: /v1/allocations {} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-ce900a29-6976-4ee1-b105-7c50fe2c682a +Openstack-Request-Id: req-a8702a51-064f-45bd-89ee-26789e5ef110 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -GET: /v1/things/ouch {} -GOT:Response: 500 Internal Server Error -Content-Type: application/json -Openstack-Request-Id: req-2c29cfb4-c732-49e1-b6cb-161b17cd5380 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"ouch\", \"debuginfo\": null}"} -GET: /v1/things {'name': 'foo', 'flag': True} -GOT:{'foo': True} -GET: /v1/things {'name': 'foo', 'flag': 'truish'} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-4a4cfee6-3b11-4b29-ad94-94b5f6071d38 -{"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}"} -POST: /v1/things/ {'three': 'three', 'four': 'four', 'five': 'five'} -GOT:Response: 201 Created -Content-Type: application/json -Openstack-Request-Id: req-51966609-66bc-4218-89d9-4529324d5b39 -{"three": "three", "four": "four", "five": "five"} -POST: /v1/things/ {'three': 'three', 'four': 'fourrrr', 'five': 'five'} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-ddb71a78-cba9-454f-8d08-523ab08efc35 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for body: 'fourrrr' is too long\", \"debuginfo\": null}"} -GET: /v1/things/no_content {} -GOT:Response: 204 No Content -Openstack-Request-Id: req-64ed92aa-934d-4480-91a3-4e03d3f18f05 - -GET: /v1/things/response_content {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-c830ac22-95ba-4550-b89e-90054691ffe1 -"nothing" -GET: /v1/things/response_custom_status {} -GOT:Response: 202 Accepted +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations/996c2141-96ba-4eef-8a32-ad227f2becb0 +GET: /v1/allocations/996c2141-96ba-4eef-8a32-ad227f2becb0 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-340acf10-e865-40c5-8403-b5c7532dce80 -"accepted" -GET: /v1/chassis {} -GOT:{'chassis': []} -GET: /v1/chassis {} -GOT:Response: 401 Unauthorized +Openstack-Request-Id: req-0cb1f9cb-2e3f-4942-901f-216a437bdda4 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 996c2141-96ba-4eef-8a32-ad227f2becb0 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations/b3ee224e-7c07-4656-80e6-92086cbf7e52 +GET: /v1/allocations/b3ee224e-7c07-4656-80e6-92086cbf7e52 {} +GOT:Response: 404 Not Found Content-Type: application/json -Www-Authenticate: Basic realm="Baremetal API" -{"error":{"message":"Authorization required","code":401}} -GET: /v1/ {} -ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_public_unauthenticated -ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_public_unauthenticated ... ok -ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist_attempts_port_creation_blindly -ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist_attempts_port_creation_blindly ... ok -ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_invalid_cors_get_request -ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_invalid_cors_get_request ... ok -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_node_no_version -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_node_no_version ... ok -ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_invalid_cors_options_request -ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_invalid_cors_options_request ... ok -ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist_mac_exception -ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist_mac_exception ... ok -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_node_old -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_node_old ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_exception_ignored -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_exception_ignored ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_142_third_party_admin_cannot_put_boot_mode_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_142_third_party_admin_cannot_put_boot_mode_state_change ... ok -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_raises_missing_table -ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_raises_missing_table ... ok -ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_valid_cors_get_request -ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_valid_cors_get_request ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_check_inspecting -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_check_inspecting ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create ... ok -ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_valid_cors_options_request -ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_valid_cors_options_request ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_duplicate_name -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_duplicate_name ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_finished -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_finished ... ok -ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_22_root -ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_22_root ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_duplicate_uuid -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_duplicate_uuid ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_inspecting -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_inspecting ... ok -ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_23_root -ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_23_root ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_143_owner_admin_can_put_secure_boot_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_143_owner_admin_can_put_secure_boot_state_change ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_invalid_step_no_interface -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_invalid_step_no_interface ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_inspector -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_inspector ... ok -ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_32_root -ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_32_root ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_no_steps -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_no_steps ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_boot_clean_up_failed -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_boot_clean_up_failed ... ok -ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_root -ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_root ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_destroy -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_destroy ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_error -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_error ... ok -ironic.tests.unit.common.test_args.ValidateTypesTest.test_types -ironic.tests.unit.common.test_args.ValidateTypesTest.test_types ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_144_owner_manager_can_put_secure_boot_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_144_owner_manager_can_put_secure_boot_state_change ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_id -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_id ... ok -ironic.tests.unit.common.test_cinder.TestCinderClient.test_get_client -ironic.tests.unit.common.test_cinder.TestCinderClient.test_get_client ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_error_managed -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_error_managed ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_name -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_name ... ok -ironic.tests.unit.common.test_cinder.TestCinderUtils.test__create_metadata_dictionary -ironic.tests.unit.common.test_cinder.TestCinderUtils.test__create_metadata_dictionary ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_error_managed_no_power_off -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_error_managed_no_power_off ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_uuid -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_uuid ... ok -ironic.tests.unit.common.test_cinder.TestCinderUtils.test__get_attachment_id -ironic.tests.unit.common.test_cinder.TestCinderUtils.test__get_attachment_id ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list ... ok -ironic.tests.unit.common.test_cinder.TestCinderUtils.test_is_volume_attached -ironic.tests.unit.common.test_cinder.TestCinderUtils.test_is_volume_attached ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_network_clean_up_failed -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_network_clean_up_failed ... ok -GOT:Response: 503 Service Unavailable +Openstack-Request-Id: req-10ab491f-6d50-49ed-a76a-2f355d88338f +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation b3ee224e-7c07-4656-80e6-92086cbf7e52 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations/8c76c045-06b4-4608-b782-c1f7f91c4c41 +GET: /v1/allocations/8c76c045-06b4-4608-b782-c1f7f91c4c41 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-512ccf00-e0bd-436d-9595-f8a2562e0b0f +Openstack-Request-Id: req-35bcad0b-436c-4b11-b6ce-2926edd6b5be X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 8c76c045-06b4-4608-b782-c1f7f91c4c41 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/allocations/7d1c2584-6b0e-4ea8-a5af-68325bf9bbcc +PATCH: /v1/allocations/7d1c2584-6b0e-4ea8-a5af-68325bf9bbcc [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_255_allocations_allocation_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_255_allocations_allocation_id_patch_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_reboot +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_reboot ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_256_allocations_allocation_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_256_allocations_allocation_id_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_298_third_party_admin_cannot_delete_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_298_third_party_admin_cannot_delete_portgroup ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_reboot_timeout +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_reboot_timeout ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_239_conductors_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_239_conductors_get_admin ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_set_power_state +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_set_power_state ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_set_power_state_timeout +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_set_power_state_timeout ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_257_allocations_allocation_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_257_allocations_allocation_id_patch_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_299_owner_reader_can_get_node_portgroups +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_299_owner_reader_can_get_node_portgroups ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-512ccf00-e0bd-436d-9595-f8a2562e0b0f +Openstack-Request-Id: req-c3119f24-4156-4d14-9ce4-af592811bfb8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode {'target': 'uefi'} -GOT:Response: 503 Service Unavailable +{"bios": [{"created_at": "2024-01-06T14:13:27.292734+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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e4a15921-e42d-4217-bbb6-02274749d44e +Openstack-Request-Id: req-c3119f24-4156-4d14-9ce4-af592811bfb8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"bios": [{"created_at": "2024-01-06T14:13:27.292734+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"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e4a15921-e42d-4217-bbb6-02274749d44e +Openstack-Request-Id: req-b5c55c81-bccb-414a-9f47-a7393dcfe5a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode {'target': 'uefi'} -GOT:Response: 503 Service Unavailable +{"FAKE_SETTING": {"created_at": "2024-01-06T14:13:28.025254+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"}]}} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-642d8159-66c2-4cc4-b05b-d5b7c5a8c624 +Openstack-Request-Id: req-b5c55c81-bccb-414a-9f47-a7393dcfe5a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"FAKE_SETTING": {"created_at": "2024-01-06T14:13:28.025254+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"}]}} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-642d8159-66c2-4cc4-b05b-d5b7c5a8c624 +Openstack-Request-Id: req-f4200554-9d53-4457-b309-44eb8249ec6f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode {'target': 'uefi'} -GOT:Response: 403 Forbidden +{"FAKE_SETTING": {"created_at": "2024-01-06T14:13:28.274778+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"}]}} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9e535c60-5d8c-404e-bfca-a3a22406d675 +Openstack-Request-Id: req-f4200554-9d53-4457-b309-44eb8249ec6f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"FAKE_SETTING": {"created_at": "2024-01-06T14:13:28.274778+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"}]}} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9e535c60-5d8c-404e-bfca-a3a22406d675 +Openstack-Request-Id: req-c6aa156e-9ba6-4594-8b2c-24566d187c81 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode {'target': 'uefi'} -GOT:Response: 403 Forbidden +{"FAKE_SETTING": {"created_at": "2024-01-06T14:13:28.556970+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"}]}} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b5a6d894-959c-472e-9909-90f362e3ae7f +Openstack-Request-Id: req-c6aa156e-9ba6-4594-8b2c-24566d187c81 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"FAKE_SETTING": {"created_at": "2024-01-06T14:13:28.556970+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"}]}} +API ACL Testing Path get /v1/conductors +GET: /v1/conductors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b5a6d894-959c-472e-9909-90f362e3ae7f +Openstack-Request-Id: req-cfd1b1c9-9241-41a3-b58b-5e5af5a9519b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode {'target': 'uefi'} -GOT:Response: 404 Not Found +{"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}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d70fa9a2-a6cf-447f-b877-028615b27672 +Openstack-Request-Id: req-cfd1b1c9-9241-41a3-b58b-5e5af5a9519b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"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}]} +API ACL Testing Path get /v1/conductors +GET: /v1/conductors {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_240_conductors_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_240_conductors_get_member ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_fail +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_241_conductors_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_241_conductors_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_300_lessee_reader_can_get_node_porgtroups +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_300_lessee_reader_can_get_node_porgtroups ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_258_allocations_allocation_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_258_allocations_allocation_id_delete_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address_VIF_MAC_update_fail +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address_VIF_MAC_update_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_242_conductors_hostname_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_242_conductors_hostname_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_259_allocations_allocation_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_259_allocations_allocation_id_delete_member ... ok +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d70fa9a2-a6cf-447f-b877-028615b27672 +Openstack-Request-Id: req-b4e22519-3d53-4fcf-913e-523384e5ccab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot {'target': 'true'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5eed02fd-07cd-4246-b294-dec507771e2b +Openstack-Request-Id: req-b4e22519-3d53-4fcf-913e-523384e5ccab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5eed02fd-07cd-4246-b294-dec507771e2b +Openstack-Request-Id: req-b85051cb-a928-4e80-a266-91a749853aff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot {'target': 'true'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b75caa98-44b8-4117-a828-454df4838397 +Openstack-Request-Id: req-b85051cb-a928-4e80-a266-91a749853aff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b75caa98-44b8-4117-a828-454df4838397 +Openstack-Request-Id: req-7f94ab10-30e8-498b-8727-5a19a52f9863 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot {'target': 'true'} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_145_lessee_admin_can_put_secure_boot_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_145_lessee_admin_can_put_secure_boot_state_change ... ok -ironic.tests.unit.common.test_cinder.TestCinderUtils.test_is_volume_available -ironic.tests.unit.common.test_cinder.TestCinderUtils.test_is_volume_available ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_by_names -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_by_names ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok ... ok -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_dynamic_driver_interfaces_set -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_dynamic_driver_interfaces_set ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_by_names_no_match -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_by_names_no_match ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok_managed -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok_managed ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_146_lessee_manager_can_put_secure_boot_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_146_lessee_manager_can_put_secure_boot_state_change ... ok -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_invalid_network_interface -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_invalid_network_interface ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_sorted -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_sorted ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok_managed_no_power_off -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok_managed_no_power_off ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_duplicate_name -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_duplicate_name ... ok -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_invalid_network_interface_instance_info_override -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_invalid_network_interface_instance_info_override ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_147_owner_member_can_put_secure_boot_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_147_owner_member_can_put_secure_boot_state_change ... ok -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok_managed_no_power_off_on_fast_track -ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok_managed_no_power_off_on_fast_track ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_extra -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_extra ... ok -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_valid_interfaces -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_valid_interfaces ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_name -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_name ... ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareAbortTestCase.test_abort_error -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareAbortTestCase.test_abort_error ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_not_found -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_not_found ... ok -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_valid_network_interface_instance_info_override -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_valid_network_interface_instance_info_override ... ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareAbortTestCase.test_abort_ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareAbortTestCase.test_abort_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_148_lessee_member_can_put_secure_boot_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_148_lessee_member_can_put_secure_boot_state_change ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_add -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_add ... ok -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_no_network_interface -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_no_network_interface ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__allocate_port -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__allocate_port ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_remove_all -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_remove_all ... ok -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_no_network_interface_default_from_conf -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_no_network_interface_default_from_conf ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_149_owner_reader_cannot_put_secure_boot_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_149_owner_reader_cannot_put_secure_boot_state_change ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_replace -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_replace ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_cold -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_cold ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_replace_args -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_replace_args ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_fail ... ok -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_node_update_dynamic_driver_set_interfaces -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_node_update_dynamic_driver_set_interfaces ... ok -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_uuid_not_allowed -ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_uuid_not_allowed ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_150_lessee_reader_cannot_put_secure_boot_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_150_lessee_reader_cannot_put_secure_boot_state_change ... ok -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_none_network_interface -ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_none_network_interface ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_ok ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_allocations_get_destroyed_after_destroying_a_node_by_uuid -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_allocations_get_destroyed_after_destroying_a_node_by_uuid ... ok -ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_is_glance_image -ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_is_glance_image ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_debug -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_debug ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list ... ok -ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_fail -ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_fail ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_failed -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_failed ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list_impossible -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list_impossible ... ok -ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_glance -ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_glance ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_missing_sensor_reading -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_missing_sensor_reading ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_151_third_party_admin_cannot_put_secure_boot_state_change -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_151_third_party_admin_cannot_put_secure_boot_state_change ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list_non_existing -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list_non_existing ... ok -ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_glance_fail -ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_glance_fail ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_ok ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node ... ok -ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_uuid -ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_uuid ... ok -ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_add_items_to_cache -ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_add_items_to_cache ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__release_allocated_port -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__release_allocated_port ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_already_exists -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_already_exists ... ok -ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_do_not_return_expired_tempurls -ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_do_not_return_expired_tempurls ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_instance_already_associated -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_instance_already_associated ... ok -ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_remove_expired_items_from_cache -ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_remove_expired_items_from_cache ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_152_owner_admin_can_change_provision_state -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_152_owner_admin_can_change_provision_state ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_detect_vendor -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_detect_vendor ... ok -ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_return_cached_tempurl -ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_return_cached_tempurl ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_name_duplicate -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_name_duplicate ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_dump_sdr_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_dump_sdr_fail ... ok -ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_swift_temp_url_cache_disabled -ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_swift_temp_url_cache_disabled ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_with_tags -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_with_tags ... ok -ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_swift_temp_url_cache_enabled -ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_swift_temp_url_cache_enabled ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_with_traits -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_with_traits ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_dump_sdr_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_dump_sdr_ok ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test__create_root_fs -ironic.tests.unit.common.test_images.FsImageTestCase.test__create_root_fs ... ok -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c73efbc0-cd75-413c-b240-346340d5af70 +Openstack-Request-Id: req-7f94ab10-30e8-498b-8727-5a19a52f9863 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c73efbc0-cd75-413c-b240-346340d5af70 +Openstack-Request-Id: req-f973059f-048d-4b45-983c-8f22c8e4a5eb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot {'target': 'true'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2d02606a-df37-435b-8df2-85e7cc656e97 +Openstack-Request-Id: req-f973059f-048d-4b45-983c-8f22c8e4a5eb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-2d02606a-df37-435b-8df2-85e7cc656e97 +Openstack-Request-Id: req-399cd11b-104d-4ed8-861f-d1562568eb8e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot {'target': 'true'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-085c1fd0-bcf7-47cd-b43d-3dde172ad8e8 +Openstack-Request-Id: req-399cd11b-104d-4ed8-861f-d1562568eb8e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/portgroups +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-085c1fd0-bcf7-47cd-b43d-3dde172ad8e8 +Openstack-Request-Id: req-5f4d8f87-960e-43f3-9186-0eccdccc31a3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot {'target': 'true'} -GOT:Response: 503 Service Unavailable +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-44b70c6d-07a2-457f-93c9-842505dd0f47 +Openstack-Request-Id: req-5f4d8f87-960e-43f3-9186-0eccdccc31a3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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"}]}]} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-44b70c6d-07a2-457f-93c9-842505dd0f47 +Openstack-Request-Id: req-3e59aa32-0a02-4e80-b91a-7c537d13b145 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot {'target': 'true'} -GOT:Response: 403 Forbidden +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3cf1fb54-e0fc-43cb-96fd-6d415f1b8490 +Openstack-Request-Id: req-3e59aa32-0a02-4e80-b91a-7c537d13b145 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"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"}]}]} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-3cf1fb54-e0fc-43cb-96fd-6d415f1b8490 +Openstack-Request-Id: req-7a7595e1-3fd3-4a5f-a752-5efaeeb65516 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot {'target': 'true'} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_301_third_party_admin_cannot_get_portgroups +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_301_third_party_admin_cannot_get_portgroups ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address_no_vif_id +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address_no_vif_id ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_260_allocations_allocation_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_260_allocations_allocation_id_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_302_owner_reader_can_list_ports +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_302_owner_reader_can_list_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_243_conductors_hostname_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_243_conductors_hostname_get_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id_fail +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id_fail ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_261_nodes_allocation_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_261_nodes_allocation_get_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id_no_vif_id +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id_no_vif_id ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_244_conductors_hostname_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_244_conductors_hostname_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_303_lessee_reader_can_list_ports +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_303_lessee_reader_can_list_ports ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_extra_add_new_key +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_extra_add_new_key ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_262_nodes_allocation_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_262_nodes_allocation_get_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_message_format_failure +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_message_format_failure ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_304_third_party_admin_cannot_list_ports +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_304_third_party_admin_cannot_list_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_245_allocations_post_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_245_allocations_post_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_noportgroup +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_noportgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_263_nodes_allocation_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_263_nodes_allocation_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_305_owner_reader_can_read_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_305_owner_reader_can_read_port ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_246_allocations_post_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_246_allocations_post_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_portgroup_nostandalone_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_portgroup_nostandalone_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_264_nodes_allocation_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_264_nodes_allocation_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_306_lessee_reader_can_read_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_306_lessee_reader_can_read_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_portgroup_standalone_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_portgroup_standalone_ports ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-187889a6-c6f2-430c-b0ff-74eca996b288 +Openstack-Request-Id: req-078e2ef2-bafc-4d46-9818-7a6fd47b6dd8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"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}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-187889a6-c6f2-430c-b0ff-74eca996b288 +Openstack-Request-Id: req-078e2ef2-bafc-4d46-9818-7a6fd47b6dd8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot {'target': 'true'} -GOT:Response: 404 Not Found +{"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}]} +API ACL Testing Path get /v1/conductors +GET: /v1/conductors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-7673edfb-1fd9-4a20-89cb-e7f05d3c04d8 +Openstack-Request-Id: req-331e2a5d-2e2c-4b5e-8ffb-9f5adea66704 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"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}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-7673edfb-1fd9-4a20-89cb-e7f05d3c04d8 +Openstack-Request-Id: req-331e2a5d-2e2c-4b5e-8ffb-9f5adea66704 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision {'target': 'deploy'} -GOT:Response: 503 Service Unavailable +{"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}]} +API ACL Testing Path get /v1/conductors/test-conductor-node +GET: /v1/conductors/test-conductor-node {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-bde50f01-b4f6-40a6-87b7-fdbd7642ec80 +Openstack-Request-Id: req-60b217f2-e211-4f82-a144-4167875a7c40 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"created_at": "2024-01-06T14:13:29.615800+00:00", "updated_at": "2024-01-06T14:13:29.621630+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} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-bde50f01-b4f6-40a6-87b7-fdbd7642ec80 +Openstack-Request-Id: req-60b217f2-e211-4f82-a144-4167875a7c40 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision {'target': 'deploy'} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_153_owner_manager_can_change_provision_state -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_153_owner_manager_can_change_provision_state ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test__generate_grub_cfg -ironic.tests.unit.common.test_images.FsImageTestCase.test__generate_grub_cfg ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_force_boot_device_persistent -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_force_boot_device_persistent ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test__generate_isolinux_cfg -ironic.tests.unit.common.test_images.FsImageTestCase.test__generate_isolinux_cfg ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_154_owner_member_can_change_provision_state -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_154_owner_member_can_change_provision_state ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node_by_uuid -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node_by_uuid ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files -ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_power_state -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_power_state ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fail_no_esp_imageimg -ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fail_no_esp_imageimg ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node_that_does_not_exist -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node_that_does_not_exist ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fail_with_ExecutionError -ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fail_with_ExecutionError ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fails_no_grub_cfg -ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fails_no_grub_cfg ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_id -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_id ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_power_state_exception -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_power_state_exception ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_bios -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_bios ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_bios_with_no_boot_mode -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_bios_with_no_boot_mode ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_properties -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_properties ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_155_lessee_admin_can_change_provision_state -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_155_lessee_admin_can_change_provision_state ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_deploy_iso -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_deploy_iso ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance_invalid_uuid -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance_invalid_uuid ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_force_set_boot_device_ok_bios -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_force_set_boot_device_ok_bios ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_deploy_iso_for_hrefs -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_deploy_iso_for_hrefs ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance_wrong_uuid -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance_wrong_uuid ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_esp_image -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_esp_image ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_esp_image_for_hrefs -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_esp_image_for_hrefs ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_name -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_name ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_156_lessee_manager_can_change_provision_state -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_156_lessee_manager_can_change_provision_state ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_fail ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_for_uefi_with_deploy_iso -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_for_uefi_with_deploy_iso ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_for_uefi_with_esp_image -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_for_uefi_with_esp_image ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_persistent -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_persistent ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses_multiple_found -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses_multiple_found ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_mkisofs_fails -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_mkisofs_fails ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_157_lessee_member_cannot_change_provision_state -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_157_lessee_member_cannot_change_provision_state ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses_not_found -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses_not_found ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_uefi_rootfs_fails -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_uefi_rootfs_fails ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_unknown_dev -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_unknown_dev ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_bios_mkisofs_fails -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_bios_mkisofs_fails ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_uuid -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_uuid ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_supported_boot_devices -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_supported_boot_devices ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_bios_rootfs_fails -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_bios_rootfs_fails ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_158_third_party_admin_cannot_change_provision_state -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_158_third_party_admin_cannot_change_provision_state ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_inject_nmi_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_inject_nmi_fail ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_chassis_not_found -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_chassis_not_found ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_conf_ldlinux -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_conf_ldlinux ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_inject_nmi_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_inject_nmi_ok ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_description -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_description ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_default_ldlinux -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_default_ldlinux ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_159_owner_admin_can_set_raid_config -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_159_owner_admin_can_set_raid_config ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_no_force_set_boot_device_bios -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_no_force_set_boot_device_bios ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_inject_files -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_inject_files ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_filter_by_project -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_filter_by_project ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_bad_device -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_bad_device ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image_dd_fails -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image_dd_fails ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image_mkfs_fails -ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image_mkfs_fails ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_includes_traits -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_includes_traits ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_exec_failed -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_exec_failed ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_default_all -ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_default_all ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_160_owner_manager_can_set_raid_config -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_160_owner_manager_can_set_raid_config ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_requested_fields_no_traits -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_requested_fields_no_traits ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_no_such_prop -ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_no_such_prop ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_ok_bios -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_ok_bios ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_requested_fields_with_traits -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_requested_fields_with_traits ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_with_prop_subset -ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_with_prop_subset ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_persistent_bios -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_persistent_bios ... ok -ironic.tests.unit.common.test_images.FsImageTestCase.test_get_temp_url_for_glance_image -ironic.tests.unit.common.test_images.FsImageTestCase.test_get_temp_url_for_glance_image ... ok -GOT:Response: 503 Service Unavailable +{"created_at": "2024-01-06T14:13:29.615800+00:00", "updated_at": "2024-01-06T14:13:29.621630+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} +API ACL Testing Path get /v1/conductors/test-conductor-node +GET: /v1/conductors/test-conductor-node {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3a2dbb02-ce9d-4b99-900d-f30b59326d49 +Openstack-Request-Id: req-b96ac689-064c-4569-8330-30ff95fc2f31 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"created_at": "2024-01-06T14:13:29.893280+00:00", "updated_at": "2024-01-06T14:13:29.896437+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} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3a2dbb02-ce9d-4b99-900d-f30b59326d49 +Openstack-Request-Id: req-b96ac689-064c-4569-8330-30ff95fc2f31 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision {'target': 'deploy'} -GOT:Response: 503 Service Unavailable +{"created_at": "2024-01-06T14:13:29.893280+00:00", "updated_at": "2024-01-06T14:13:29.896437+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} +API ACL Testing Path get /v1/conductors/test-conductor-node +GET: /v1/conductors/test-conductor-node {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-59a67419-1480-4ae1-a2a7-9fba429d0169 +Openstack-Request-Id: req-10d6caf9-44a5-4565-9f2e-d258fc27c6de X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"created_at": "2024-01-06T14:13:30.146693+00:00", "updated_at": "2024-01-06T14:13:30.149886+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} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-59a67419-1480-4ae1-a2a7-9fba429d0169 +Openstack-Request-Id: req-10d6caf9-44a5-4565-9f2e-d258fc27c6de X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision {'target': 'deploy'} +{"created_at": "2024-01-06T14:13:30.146693+00:00", "updated_at": "2024-01-06T14:13:30.149886+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} +API ACL Testing Path post /v1/allocations +POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1c606b42-d6f0-44c5-9fbc-c2074062fdc4 +Openstack-Request-Id: req-515ebaab-de8c-490d-9e35-bdaadfc88dbe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1c606b42-d6f0-44c5-9fbc-c2074062fdc4 +Openstack-Request-Id: req-515ebaab-de8c-490d-9e35-bdaadfc88dbe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision {'target': 'deploy'} +API ACL Testing Path post /v1/allocations +POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3906f9e4-fdf7-40d4-b97e-c7a42f05ca34 +Openstack-Request-Id: req-3c08cb58-c474-4f2c-9fbc-da2938e5cbe7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3906f9e4-fdf7-40d4-b97e-c7a42f05ca34 +Openstack-Request-Id: req-3c08cb58-c474-4f2c-9fbc-da2938e5cbe7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision {'target': 'deploy'} -GOT:Response: 403 Forbidden +API ACL Testing Path post /v1/allocations +POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_247_allocations_post_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_247_allocations_post_reader ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_noportgroup +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_noportgroup ... ok +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b334953a-7598-4be2-9c9d-02f894af390c +Openstack-Request-Id: req-7a7595e1-3fd3-4a5f-a752-5efaeeb65516 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/ports +GET: /v1/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b334953a-7598-4be2-9c9d-02f894af390c +Openstack-Request-Id: req-cd63fef9-675a-4e32-aad4-50ca9ea64f6c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision {'target': 'deploy'} -GOT:Response: 404 Not Found +{"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": "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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d6219b0d-4fa2-4e71-876b-3d0178bac2d2 +Openstack-Request-Id: req-cd63fef9-675a-4e32-aad4-50ca9ea64f6c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"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": "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"}]}]} +API ACL Testing Path get /v1/ports +GET: /v1/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-d6219b0d-4fa2-4e71-876b-3d0178bac2d2 +Openstack-Request-Id: req-15eabdcd-d038-4658-8b99-66a9ba415546 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/raid -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 503 Service Unavailable +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8187ed81-28c8-479e-9f41-0c656cde2191 +Openstack-Request-Id: req-15eabdcd-d038-4658-8b99-66a9ba415546 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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"}]}]} +API ACL Testing Path get /v1/ports +GET: /v1/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8187ed81-28c8-479e-9f41-0c656cde2191 +Openstack-Request-Id: req-16f6ee8c-8833-46d3-9af4-5a231ef0552d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/raid -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 503 Service Unavailable +{"ports": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c3fe8a31-4167-488e-87d9-6c5f9de3da42 +Openstack-Request-Id: req-16f6ee8c-8833-46d3-9af4-5a231ef0552d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"ports": []} +API ACL Testing Path get /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c +GET: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c3fe8a31-4167-488e-87d9-6c5f9de3da42 +Openstack-Request-Id: req-306dd8fd-2e98-4d08-869b-af766b379f9b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_161_lessee_admin_cannot_set_raid_config -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_161_lessee_admin_cannot_set_raid_config ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_custom -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_custom ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_default -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_default ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_162_lessee_manager_cannot_set_raid_config -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_162_lessee_manager_cannot_set_raid_config ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_raw_smaller -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_raw_smaller ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_with_filters -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_with_filters ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_onetime_smci -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_onetime_smci ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_download_size -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_download_size ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_that_does_not_exist -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_that_does_not_exist ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_persistent -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_persistent ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_force_raw -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_force_raw ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_defaults -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_defaults ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_163_owner_member_can_set_raid_config -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_163_owner_member_can_set_raid_config ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_show_image_service -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_show_image_service ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_description -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_description ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_show_no_image_service -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_show_no_image_service ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_persistent_smci -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_persistent_smci ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_inspection -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_inspection ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_164_lessee_member_cannot_set_raid_config -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_164_lessee_member_cannot_set_raid_config ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_already_raw_format -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_already_raw_format ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_provision -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_provision ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_unknown_exception -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_unknown_exception ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_backing_file_present -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_backing_file_present ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_with_cols -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_with_cols ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_no_file_format -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_no_file_format ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_1_bios -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_1_bios ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_165_third_party_admin_cannot_set_raid_config -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_165_third_party_admin_cannot_set_raid_config ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_not_raw_after_conversion -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_not_raw_after_conversion ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_with_filters -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_with_filters ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_content_length -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_content_length ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_1_uefi -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_1_uefi ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_history_get_destroyed_after_destroying_a_node_by_uuid -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_history_get_destroyed_after_destroying_a_node_by_uuid ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_content_type -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_content_type ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_other_error -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_other_error ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_node_provision_state_count -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_node_provision_state_count ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_2_bios -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_2_bios ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_166_owner_admin_can_get_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_166_owner_admin_can_get_console ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_redirect -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_redirect ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_ports_get_destroyed_after_destroying_a_node -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_ports_get_destroyed_after_destroying_a_node ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_returns_none -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_returns_none ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_2_uefi -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_2_uefi ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_simple -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_simple ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_ports_get_destroyed_after_destroying_a_node_by_uuid -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_ports_get_destroyed_after_destroying_a_node_by_uuid ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_167_owner_manager_can_get_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_167_owner_manager_can_get_console ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_explicit -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_explicit ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_non_existent_node -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_non_existent_node ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_validate_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_validate_fail ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_no_img_src -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_no_img_src ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_168_lessee_admin_cannot_get_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_168_lessee_admin_cannot_get_console ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_image -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_image ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_non_locked_node -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_non_locked_node ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_validate_good -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_validate_good ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_image_with_type -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_image_with_type ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_reservation -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_reservation ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_non_glance -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_non_glance ... ok -GOT:Response: 403 Forbidden +{"uuid": "ebe30f19-358d-41e1-8d28-fd7357a0164c", "created_at": "2024-01-06T14:13:30.610483+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, "links": [{"href": "http://localhost/v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "self"}, {"href": "http://localhost/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "portgroup_uuid": null} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4ed41ff7-df31-4e55-96f1-2ff48447ea6d +Openstack-Request-Id: req-306dd8fd-2e98-4d08-869b-af766b379f9b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "ebe30f19-358d-41e1-8d28-fd7357a0164c", "created_at": "2024-01-06T14:13:30.610483+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, "links": [{"href": "http://localhost/v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "self"}, {"href": "http://localhost/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "portgroup_uuid": null} +API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4ed41ff7-df31-4e55-96f1-2ff48447ea6d +Openstack-Request-Id: req-230e4a23-98b7-4c43-b21d-6ff6a7982be0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:30.900153+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "portgroup_uuid": null} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-230e4a23-98b7-4c43-b21d-6ff6a7982be0 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:30.900153+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "portgroup_uuid": null} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_307_third_party_admin_cannot_read_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_307_third_party_admin_cannot_read_port ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_248_allocations_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_248_allocations_get_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_portgroup_nostandalone_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_portgroup_nostandalone_ports ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_portgroup_standalone_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_portgroup_standalone_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_265_nodes_allocation_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_265_nodes_allocation_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_249_allocations_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_249_allocations_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_308_owner_admin_can_add_ports +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_308_owner_admin_can_add_ports ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_noportgroup +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_noportgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_266_nodes_allocation_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_266_nodes_allocation_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_250_allocations_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_250_allocations_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_309_owner_manager_can_add_ports +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_309_owner_manager_can_add_ports ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_portgroup_nostandalone_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_portgroup_nostandalone_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_251_allocations_allocation_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_251_allocations_allocation_id_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_267_deploy_templates_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_267_deploy_templates_post_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_310_owner_admin_cannot_add_ports_to_other_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_310_owner_admin_cannot_add_ports_to_other_nodes ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_portgroup_standalone_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_portgroup_standalone_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_268_deploy_templates_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_268_deploy_templates_post_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_noportgroup +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_noportgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_311_owner_manager_cannot_add_ports_to_other_nodes +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_311_owner_manager_cannot_add_ports_to_other_nodes ... ok GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1db7d254-3ede-4df1-b819-c7cda268dd0c +Openstack-Request-Id: req-21b2a999-dc55-4b23-b409-90b5c0fcf9f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1db7d254-3ede-4df1-b819-c7cda268dd0c +Openstack-Request-Id: req-21b2a999-dc55-4b23-b409-90b5c0fcf9f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/allocations +GET: /v1/allocations {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e4f57855-7165-464c-8b37-a68ae55abc96 +Openstack-Request-Id: req-a76aefe2-6982-45ad-b3be-51347307b23b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"allocations": [{"uuid": "2cfe7f9e-868b-4027-b0ec-6bd05d4866b6", "created_at": "2024-01-06T14:13:31.230513+00:00", "updated_at": "2024-01-06T14:13:31.255047+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/2cfe7f9e-868b-4027-b0ec-6bd05d4866b6", "rel": "self"}, {"href": "http://localhost/allocations/2cfe7f9e-868b-4027-b0ec-6bd05d4866b6", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e4f57855-7165-464c-8b37-a68ae55abc96 +Openstack-Request-Id: req-a76aefe2-6982-45ad-b3be-51347307b23b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 403 Forbidden +{"allocations": [{"uuid": "2cfe7f9e-868b-4027-b0ec-6bd05d4866b6", "created_at": "2024-01-06T14:13:31.230513+00:00", "updated_at": "2024-01-06T14:13:31.255047+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/2cfe7f9e-868b-4027-b0ec-6bd05d4866b6", "rel": "self"}, {"href": "http://localhost/allocations/2cfe7f9e-868b-4027-b0ec-6bd05d4866b6", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} +API ACL Testing Path get /v1/allocations +GET: /v1/allocations {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b6fa3abe-8871-4f41-b702-76a98b5598c0 +Openstack-Request-Id: req-0e907b68-4ecc-461e-bf04-d0c6d5f3df34 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"allocations": [{"uuid": "16650a03-3114-4a36-a9f8-90a4ed8a0970", "created_at": "2024-01-06T14:13:31.501852+00:00", "updated_at": "2024-01-06T14:13:31.526008+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/16650a03-3114-4a36-a9f8-90a4ed8a0970", "rel": "self"}, {"href": "http://localhost/allocations/16650a03-3114-4a36-a9f8-90a4ed8a0970", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b6fa3abe-8871-4f41-b702-76a98b5598c0 +Openstack-Request-Id: req-0e907b68-4ecc-461e-bf04-d0c6d5f3df34 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} -GOT:Response: 404 Not Found +{"allocations": [{"uuid": "16650a03-3114-4a36-a9f8-90a4ed8a0970", "created_at": "2024-01-06T14:13:31.501852+00:00", "updated_at": "2024-01-06T14:13:31.526008+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/16650a03-3114-4a36-a9f8-90a4ed8a0970", "rel": "self"}, {"href": "http://localhost/allocations/16650a03-3114-4a36-a9f8-90a4ed8a0970", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} +API ACL Testing Path get /v1/allocations +GET: /v1/allocations {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5d60ff06-b1cb-4194-8ae4-4a5900d98a8e +Openstack-Request-Id: req-6ca1bc6d-df88-48ca-8558-cba606d50167 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"allocations": [{"uuid": "58b870bd-8f56-4568-a6ed-318ad0c3ac4f", "created_at": "2024-01-06T14:13:31.763242+00:00", "updated_at": "2024-01-06T14:13:31.786801+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/58b870bd-8f56-4568-a6ed-318ad0c3ac4f", "rel": "self"}, {"href": "http://localhost/allocations/58b870bd-8f56-4568-a6ed-318ad0c3ac4f", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-5d60ff06-b1cb-4194-8ae4-4a5900d98a8e +Openstack-Request-Id: req-6ca1bc6d-df88-48ca-8558-cba606d50167 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {} -GOT:Response: 503 Service Unavailable +{"allocations": [{"uuid": "58b870bd-8f56-4568-a6ed-318ad0c3ac4f", "created_at": "2024-01-06T14:13:31.763242+00:00", "updated_at": "2024-01-06T14:13:31.786801+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/58b870bd-8f56-4568-a6ed-318ad0c3ac4f", "rel": "self"}, {"href": "http://localhost/allocations/58b870bd-8f56-4568-a6ed-318ad0c3ac4f", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} +API ACL Testing Path get /v1/allocations/4cf0f306-df76-43cc-9b29-87a598210e06 +GET: /v1/allocations/4cf0f306-df76-43cc-9b29-87a598210e06 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0a35e888-954d-4496-ad76-5a248cd65072 +Openstack-Request-Id: req-a56ef0a6-4898-42b0-8fc0-8753382eb5e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "4cf0f306-df76-43cc-9b29-87a598210e06", "created_at": "2024-01-06T14:13:32.001901+00:00", "updated_at": "2024-01-06T14:13:32.025651+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/4cf0f306-df76-43cc-9b29-87a598210e06", "rel": "self"}, {"href": "http://localhost/allocations/4cf0f306-df76-43cc-9b29-87a598210e06", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0a35e888-954d-4496-ad76-5a248cd65072 +Openstack-Request-Id: req-a56ef0a6-4898-42b0-8fc0-8753382eb5e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {} -GOT:Response: 503 Service Unavailable +{"uuid": "4cf0f306-df76-43cc-9b29-87a598210e06", "created_at": "2024-01-06T14:13:32.001901+00:00", "updated_at": "2024-01-06T14:13:32.025651+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/4cf0f306-df76-43cc-9b29-87a598210e06", "rel": "self"}, {"href": "http://localhost/allocations/4cf0f306-df76-43cc-9b29-87a598210e06", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +API ACL Testing Path get /v1/allocations/87b3b3bd-0ff9-45b5-b77a-57ca18a1b185 +GET: /v1/allocations/87b3b3bd-0ff9-45b5-b77a-57ca18a1b185 {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_252_allocations_allocation_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_252_allocations_allocation_id_get_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_portgroup_nostandalone_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_portgroup_nostandalone_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_312_owner_member_cannot_add_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_312_owner_member_cannot_add_port ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_253_allocations_allocation_id_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_253_allocations_allocation_id_get_reader ... ok +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cf154360-7bd8-455f-ab1c-9a7fc6a534b6 +Openstack-Request-Id: req-ff43ed5d-e086-439c-b69b-407a8eacc286 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 7d1c2584-6b0e-4ea8-a5af-68325bf9bbcc could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/allocations/14bb43d5-b622-4161-87a2-7b33beffd883 +PATCH: /v1/allocations/14bb43d5-b622-4161-87a2-7b33beffd883 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cf154360-7bd8-455f-ab1c-9a7fc6a534b6 +Openstack-Request-Id: req-0fba2257-2dfe-4b60-8e06-cf7cfe633d3b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 14bb43d5-b622-4161-87a2-7b33beffd883 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/allocations/f58de733-2adf-4108-afcd-5e210292e8ec +PATCH: /v1/allocations/f58de733-2adf-4108-afcd-5e210292e8ec [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ec0b83b8-1c34-4939-80c5-ba55b15cbdc2 +Openstack-Request-Id: req-5424c31c-0619-4169-9ac3-3ac70d24cc6e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation f58de733-2adf-4108-afcd-5e210292e8ec could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/allocations/e29598b5-43b9-4ccc-9544-a6503bf05464 +DELETE: /v1/allocations/e29598b5-43b9-4ccc-9544-a6503bf05464 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-ec0b83b8-1c34-4939-80c5-ba55b15cbdc2 +Openstack-Request-Id: req-d4bb7969-d2b9-4740-8385-7fe03d43a73e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_169_lessee_manager_cannot_get_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_169_lessee_manager_cannot_get_console ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_power_validate -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_power_validate ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_after_release -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_after_release ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_whole_disk_image -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_whole_disk_image ... ok -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_whole_disk_non_glance -ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_whole_disk_non_glance ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_in_exception_message -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_in_exception_message ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_already_off -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_already_off ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_non_existent_node -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_non_existent_node ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_170_owner_member_can_get_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_170_owner_member_can_get_console ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_connection_error -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_connection_error ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_fail_power_off -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_fail_power_off ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_of_reserved_node_fails -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_of_reserved_node_fails ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_empty -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_empty ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_fail_power_on -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_fail_power_on ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reserve_node -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reserve_node ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_171_lessee_member_cannot_get_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_171_lessee_member_cannot_get_console ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_ok ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_tags_get_destroyed_after_destroying_a_node -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_tags_get_destroyed_after_destroying_a_node ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http_error -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http_error ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_timeout_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_timeout_fail ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_tags_get_destroyed_after_destroying_a_node_by_uuid -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_tags_get_destroyed_after_destroying_a_node_by_uuid ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http_noauth -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http_noauth ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_timeout_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_timeout_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_172_owner_reader_cannot_get_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_172_owner_reader_cannot_get_console ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_touch_node_provisioning -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_touch_node_provisioning ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_invalid_json -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_invalid_json ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_touch_node_provisioning_not_found -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_touch_node_provisioning_not_found ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_fail ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_mold_connection_error_exceeded -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_mold_connection_error_exceeded ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_traits_get_destroyed_after_destroying_a_node -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_traits_get_destroyed_after_destroying_a_node ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_173_lessee_reader_cannot_get_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_173_lessee_reader_cannot_get_console ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_swift -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_swift ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_traits_get_destroyed_after_destroying_a_node_by_uuid -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_traits_get_destroyed_after_destroying_a_node_by_uuid ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_returns -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_returns ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_swift_noauth -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_swift_noauth ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_174_third_party_admin_cannot_get_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_174_third_party_admin_cannot_get_console ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_invalid_state -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_invalid_state ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_associate_and_disassociate -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_associate_and_disassociate ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_connection_error -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_connection_error ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_finished_at -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_finished_at ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_off_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_off_ok ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_connection_error_exceeded -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_connection_error_exceeded ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_started_at -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_started_at ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_175_owner_admin_can_set_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_175_owner_admin_can_set_console ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_off_timeout_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_off_timeout_ok ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_instance_already_associated -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_instance_already_associated ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http_error -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http_error ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_fail ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_name_duplicate -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_name_duplicate ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http_noauth -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http_noauth ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_176_owner_manager_can_set_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_176_owner_manager_can_set_console ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_no_provision -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_no_provision ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_ok ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_swift -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_swift ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_not_found -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_not_found ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_timeout_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_timeout_fail ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_provision -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_provision ... ok -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_swift_noauth -ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_swift_noauth ... ok -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation e29598b5-43b9-4ccc-9544-a6503bf05464 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/allocations/b1ddc3f2-d66e-4a74-9b2e-d99031060cd0 +DELETE: /v1/allocations/b1ddc3f2-d66e-4a74-9b2e-d99031060cd0 +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1fcc0e51-0ee4-436f-9cc4-0477a20883cd +Openstack-Request-Id: req-d5efe360-7f57-41b7-a29c-bad3b0889cf2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation b1ddc3f2-d66e-4a74-9b2e-d99031060cd0 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/allocations/de2c8dfd-cbb2-49fc-9b00-028b5214c44e +DELETE: /v1/allocations/de2c8dfd-cbb2-49fc-9b00-028b5214c44e +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1fcc0e51-0ee4-436f-9cc4-0477a20883cd +Openstack-Request-Id: req-a3a20718-d37e-43f7-9a8e-e86b80f50ede X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation de2c8dfd-cbb2-49fc-9b00-028b5214c44e could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7cce6e1c-ad75-4ba4-87e1-78f681a6b18f +Openstack-Request-Id: req-86d466be-7421-43c4-8c6b-55f8e76b236f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-7cce6e1c-ad75-4ba4-87e1-78f681a6b18f +Openstack-Request-Id: req-af54413b-7acc-4d91-80b5-41687e3f7034 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-782a37bb-97d7-4bd2-aaaa-57d229c210de +Openstack-Request-Id: req-cffa9d57-75c5-4f1e-ada5-02c0c6e6232f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-782a37bb-97d7-4bd2-aaaa-57d229c210de +Openstack-Request-Id: req-49668b65-4557-40f4-a1fc-c6a7ee88100e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9d3812b3-6552-4ee1-93ba-9ec99549edae +Openstack-Request-Id: req-e81fa8a1-8530-4d13-b566-77b333b3a563 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-9d3812b3-6552-4ee1-93ba-9ec99549edae +Openstack-Request-Id: req-0fb44417-c884-49ec-a361-6222b968cb0d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/deploy_templates +POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-d4cce23c-a1cd-46ba-8e1a-85ec6044a5c8 +Openstack-Request-Id: req-3e919027-5866-4291-9d88-5405d00cfa25 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/deploy_templates +POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-d4cce23c-a1cd-46ba-8e1a-85ec6044a5c8 +Openstack-Request-Id: req-dd5d8634-c806-4739-8de0-31b2f5b92c8b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/deploy_templates +POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_269_deploy_templates_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_269_deploy_templates_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_270_deploy_templates_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_270_deploy_templates_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_254_allocations_allocation_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_254_allocations_allocation_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_313_lessee_admin_cannot_add_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_313_lessee_admin_cannot_add_port ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_271_deploy_templates_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_271_deploy_templates_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_255_allocations_allocation_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_255_allocations_allocation_id_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_314_lessee_manager_cannot_add_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_314_lessee_manager_cannot_add_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_portgroup_standalone_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_portgroup_standalone_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_272_deploy_templates_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_272_deploy_templates_get_observer ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_256_allocations_allocation_id_patch_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_256_allocations_allocation_id_patch_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_273_deploy_templates_deploy_template_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_273_deploy_templates_deploy_template_id_get_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address_fail +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address_fail ... ok +API ACL Testing Path get /v1/ports/abfd8dbb-1732-449a-b760-2224035c6b99 +GET: /v1/ports/abfd8dbb-1732-449a-b760-2224035c6b99 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-73e36720-b737-4639-801c-838d16208c39 +Openstack-Request-Id: req-b473d26d-fc77-45cc-97cc-3c2d458af52d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port abfd8dbb-1732-449a-b760-2224035c6b99 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-73e36720-b737-4639-801c-838d16208c39 +Openstack-Request-Id: req-b473d26d-fc77-45cc-97cc-3c2d458af52d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {'enabled': True} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port abfd8dbb-1732-449a-b760-2224035c6b99 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-addb2867-d725-4d79-92ab-e0f1f08e89e2 +Openstack-Request-Id: req-211b5837-3951-42e0-938e-ffa0365096b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-addb2867-d725-4d79-92ab-e0f1f08e89e2 +Openstack-Request-Id: req-211b5837-3951-42e0-938e-ffa0365096b0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {'enabled': True} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-7996b4ab-e572-4957-b29d-eaa0b95095be +Openstack-Request-Id: req-c3c4252c-e78c-4393-973f-cfaffd0cce32 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7996b4ab-e572-4957-b29d-eaa0b95095be +Openstack-Request-Id: req-c3c4252c-e78c-4393-973f-cfaffd0cce32 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {'enabled': True} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_177_lessee_admin_cannot_set_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_177_lessee_admin_cannot_set_console ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_uuid -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_uuid ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_timeout_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_timeout_ok ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__add_ip_addresses_for_ipv6_stateful -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__add_ip_addresses_for_ipv6_stateful ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_with_tags -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_with_tags ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__uncidr_ipv4 -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__uncidr_ipv4 ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_with_next_boot -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_with_next_boot ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_178_lessee_manager_cannot_set_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_178_lessee_manager_cannot_set_console ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_with_traits -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_with_traits ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__uncidr_ipv6 -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__uncidr_ipv6 ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_connector_get_destroyed_after_destroying_a_node -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_connector_get_destroyed_after_destroying_a_node ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_with_next_boot_timeout -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_with_next_boot_timeout ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_179_owner_member_can_set_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_179_owner_member_can_set_console ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_connector_get_destroyed_after_destroying_a_node_uuid -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_connector_get_destroyed_after_destroying_a_node_uuid ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_all_ports_fail -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_all_ports_fail ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_power_off_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_power_off_ok ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_target_gets_destroyed_after_destroying_a_node -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_target_gets_destroyed_after_destroying_a_node ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_power_off_timeout_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_power_off_timeout_ok ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_180_lessee_member_cannot_set_console -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_180_lessee_member_cannot_set_console ... ok -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_target_gets_destroyed_after_destroying_a_node_uuid -ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_target_gets_destroyed_after_destroying_a_node_uuid ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_create_some_ports_fail -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_create_some_ports_fail ... ok -ironic.tests.unit.dhcp.test_factory.CompareBasetoModules.test_drivers_match_dhcp_base -ironic.tests.unit.dhcp.test_factory.CompareBasetoModules.test_drivers_match_dhcp_base ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_ok ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_no_port -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_no_port ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test__ansible_deploy -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test__ansible_deploy ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_181_owner_admin_cannot_get_vendor_passthru_methods -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_181_owner_admin_cannot_get_vendor_passthru_methods ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_timeout_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_timeout_fail ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test__ansible_deploy_iwdi -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test__ansible_deploy_iwdi ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_no_pxe_enabled_ports -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_no_pxe_enabled_ports ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_timeout_ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_timeout_ok ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_clean_up -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_clean_up ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_182_owner_manager_cannot_get_vendor_passthru_methods -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_182_owner_manager_cannot_get_vendor_passthru_methods ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_deploy -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_deploy ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_bmc_reset_cold -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_bmc_reset_cold ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_execute_clean_step -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_execute_clean_step ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_183_owner_member_cannot_get_vendor_passthru_methods -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_183_owner_member_cannot_get_vendor_passthru_methods ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_all_ports -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_all_ports ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_execute_clean_step_no_success_log -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_execute_clean_step_no_success_log ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_bmc_reset_warm -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_bmc_reset_warm ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_184_owner_reader_cannot_get_vendor_passthru_methods -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_184_owner_reader_cannot_get_vendor_passthru_methods ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_clean_steps -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_clean_steps ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_clean_steps_priority -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_clean_steps_priority ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_properties -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_properties ... ok +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-417d17bf-7a14-4c69-a5ca-864aeb29c93b +Openstack-Request-Id: req-2d1ddec0-5337-4467-9bf2-f06984068018 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-417d17bf-7a14-4c69-a5ca-864aeb29c93b +Openstack-Request-Id: req-2d1ddec0-5337-4467-9bf2-f06984068018 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {'enabled': True} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-dfd259d5-69b8-4d6a-afca-b57d53a311a5 +Openstack-Request-Id: req-87e43fd9-0fd3-4934-b62c-7ed7955d53bb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-dfd259d5-69b8-4d6a-afca-b57d53a311a5 +Openstack-Request-Id: req-87e43fd9-0fd3-4934-b62c-7ed7955d53bb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console {'enabled': True} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-4922c955-db2a-429b-98a0-8604e3080ca9 +Openstack-Request-Id: req-44fe5106-82c3-4880-a6f4-ee86cb50022c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4922c955-db2a-429b-98a0-8604e3080ca9 +Openstack-Request-Id: req-44fe5106-82c3-4880-a6f4-ee86cb50022c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console {'enabled': True} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-d62d3d90-89ba-468d-b838-32e6bd1a0557 +Openstack-Request-Id: req-0dae4e4d-df50-4be6-b4cd-d87140d23b55 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d62d3d90-89ba-468d-b838-32e6bd1a0557 +Openstack-Request-Id: req-0dae4e4d-df50-4be6-b4cd-d87140d23b55 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-562d138f-7afe-4106-85fb-ab843e274514 +Openstack-Request-Id: req-3764bfd9-6a4e-4b2e-9968-3b3e19181870 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-562d138f-7afe-4106-85fb-ab843e274514 +Openstack-Request-Id: req-3764bfd9-6a4e-4b2e-9968-3b3e19181870 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-9bb651c0-c41e-4a83-b0b6-f8040d06fdc3 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-9bb651c0-c41e-4a83-b0b6-f8040d06fdc3 +Openstack-Request-Id: req-5de53fa5-4333-47a6-9383-80b449b6a406 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_315_lessee_member_cannot_add_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_315_lessee_member_cannot_add_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address_no_vif +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address_no_vif ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_274_deploy_templates_deploy_template_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_274_deploy_templates_deploy_template_id_get_member ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-762c80f8-0b46-440a-ba0b-f89a65e82c45 +Openstack-Request-Id: req-072462a1-2136-4041-ae6d-774ba539bc2a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "87b3b3bd-0ff9-45b5-b77a-57ca18a1b185", "created_at": "2024-01-06T14:13:32.255840+00:00", "updated_at": "2024-01-06T14:13:32.279944+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/87b3b3bd-0ff9-45b5-b77a-57ca18a1b185", "rel": "self"}, {"href": "http://localhost/allocations/87b3b3bd-0ff9-45b5-b77a-57ca18a1b185", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-762c80f8-0b46-440a-ba0b-f89a65e82c45 +Openstack-Request-Id: req-072462a1-2136-4041-ae6d-774ba539bc2a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods {} -GOT:Response: 403 Forbidden +{"uuid": "87b3b3bd-0ff9-45b5-b77a-57ca18a1b185", "created_at": "2024-01-06T14:13:32.255840+00:00", "updated_at": "2024-01-06T14:13:32.279944+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/87b3b3bd-0ff9-45b5-b77a-57ca18a1b185", "rel": "self"}, {"href": "http://localhost/allocations/87b3b3bd-0ff9-45b5-b77a-57ca18a1b185", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +API ACL Testing Path get /v1/allocations/f6ed1072-ba4a-42f3-9397-99bf93265b43 +GET: /v1/allocations/f6ed1072-ba4a-42f3-9397-99bf93265b43 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-46bbcd23-03d9-48b7-ad9a-ad1bd1ae3219 +Openstack-Request-Id: req-9ecc7223-99ae-4aef-a347-be3d1bf8668f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "f6ed1072-ba4a-42f3-9397-99bf93265b43", "created_at": "2024-01-06T14:13:32.635400+00:00", "updated_at": "2024-01-06T14:13:32.659395+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/f6ed1072-ba4a-42f3-9397-99bf93265b43", "rel": "self"}, {"href": "http://localhost/allocations/f6ed1072-ba4a-42f3-9397-99bf93265b43", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-46bbcd23-03d9-48b7-ad9a-ad1bd1ae3219 +Openstack-Request-Id: req-9ecc7223-99ae-4aef-a347-be3d1bf8668f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods {} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_185_lessee_admin_cannot_get_vendor_passthru_methods -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_185_lessee_admin_cannot_get_vendor_passthru_methods ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_instance_uuid -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_instance_uuid ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_186_lessee_manager_cannot_get_vendor_passthru_methods -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_186_lessee_manager_cannot_get_vendor_passthru_methods ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_send_raw_bytes -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_send_raw_bytes ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_with_sg -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_with_sg ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_driver_routes -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_driver_routes ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning_callback_no_steps -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning_callback_no_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_187_lessee_member_cannot_get_vendor_passthru_methods -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_187_lessee_member_cannot_get_vendor_passthru_methods ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_with_client_id_to_network -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_with_client_id_to_network ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_cold_good -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_cold_good ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning_with_smartnic_port -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning_with_smartnic_port ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_good -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_good ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_smartnic_port_to_network -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_smartnic_port_to_network ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_with_smartnic_port -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_with_smartnic_port ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_188_lessee_reader_cannot_get_vendor_passthru_methods -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_188_lessee_reader_cannot_get_vendor_passthru_methods ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_warm_good -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_warm_good ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_local_group_information -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_local_group_information ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__parse_driver_info_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__parse_driver_info_fail ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_neutron_port_data -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_neutron_port_data ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_189_owner_admin_cannot_get_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_189_owner_admin_cannot_get_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_agent_force_reboot -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_agent_force_reboot ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__send_raw_bytes_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__send_raw_bytes_fail ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_neutron_port_data_ipv6 -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_neutron_port_data_ipv6 ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_agent_soft_poweroff_retry -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_agent_soft_poweroff_retry ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__send_raw_bytes_good -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__send_raw_bytes_good ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_190_owner_manager_cannot_get_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_190_owner_manager_cannot_get_vendor_passthru ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_node_portmap -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_node_portmap ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_vendor_routes -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_vendor_routes ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_is_smartnic_port_false -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_is_smartnic_port_false ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_maintenance -ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_maintenance ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_191_owner_member_cannot_get_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_191_owner_member_cannot_get_vendor_passthru ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_is_smartnic_port_true -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_is_smartnic_port_true ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_cleaning -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_cleaning ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_not_retry_with_token -ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_not_retry_with_token ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_cleaning_with_smartnic_port -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_cleaning_with_smartnic_port ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_recent_power_change -ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_recent_power_change ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_192_owner_reader_cannot_get_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_192_owner_reader_cannot_get_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_validate -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_validate ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_delete_fail -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_delete_fail ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_retry -ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_retry ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_write_image -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_write_image ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_delete_race -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_delete_race ... ok -GOT:Response: 403 Forbidden +{"uuid": "f6ed1072-ba4a-42f3-9397-99bf93265b43", "created_at": "2024-01-06T14:13:32.635400+00:00", "updated_at": "2024-01-06T14:13:32.659395+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/f6ed1072-ba4a-42f3-9397-99bf93265b43", "rel": "self"}, {"href": "http://localhost/allocations/f6ed1072-ba4a-42f3-9397-99bf93265b43", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +API ACL Testing Path patch /v1/allocations/b35c0b9c-0503-4961-b3ab-404a2f7fb90f +PATCH: /v1/allocations/b35c0b9c-0503-4961-b3ab-404a2f7fb90f [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-35671e5a-bffc-48a3-b640-f0281957389f +Openstack-Request-Id: req-0bbd5b5a-18b8-4f73-b1a8-e98279fa185c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "b35c0b9c-0503-4961-b3ab-404a2f7fb90f", "created_at": "2024-01-06T14:13:32.938978+00:00", "updated_at": "2024-01-06T14:13:33.087895+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/b35c0b9c-0503-4961-b3ab-404a2f7fb90f", "rel": "self"}, {"href": "http://localhost/allocations/b35c0b9c-0503-4961-b3ab-404a2f7fb90f", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-35671e5a-bffc-48a3-b640-f0281957389f +Openstack-Request-Id: req-0bbd5b5a-18b8-4f73-b1a8-e98279fa185c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods {} -GOT:Response: 403 Forbidden +{"uuid": "b35c0b9c-0503-4961-b3ab-404a2f7fb90f", "created_at": "2024-01-06T14:13:32.938978+00:00", "updated_at": "2024-01-06T14:13:33.087895+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/b35c0b9c-0503-4961-b3ab-404a2f7fb90f", "rel": "self"}, {"href": "http://localhost/allocations/b35c0b9c-0503-4961-b3ab-404a2f7fb90f", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +API ACL Testing Path patch /v1/allocations/2ebe6e0f-0859-4050-8a4a-bd03216f780c +PATCH: /v1/allocations/2ebe6e0f-0859-4050-8a4a-bd03216f780c [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-67b82feb-71f8-4b48-b0c8-3900d60b9f50 +Openstack-Request-Id: req-ff16d3b6-ffe8-4620-83e9-d86764e4fba4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "2ebe6e0f-0859-4050-8a4a-bd03216f780c", "created_at": "2024-01-06T14:13:33.202968+00:00", "updated_at": "2024-01-06T14:13:33.343343+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/2ebe6e0f-0859-4050-8a4a-bd03216f780c", "rel": "self"}, {"href": "http://localhost/allocations/2ebe6e0f-0859-4050-8a4a-bd03216f780c", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-67b82feb-71f8-4b48-b0c8-3900d60b9f50 +Openstack-Request-Id: req-ff16d3b6-ffe8-4620-83e9-d86764e4fba4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods {} +{"uuid": "2ebe6e0f-0859-4050-8a4a-bd03216f780c", "created_at": "2024-01-06T14:13:33.202968+00:00", "updated_at": "2024-01-06T14:13:33.343343+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/2ebe6e0f-0859-4050-8a4a-bd03216f780c", "rel": "self"}, {"href": "http://localhost/allocations/2ebe6e0f-0859-4050-8a4a-bd03216f780c", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +API ACL Testing Path patch /v1/allocations/9431cbc0-efa3-4c6d-b1cc-37918dc22c9d +PATCH: /v1/allocations/9431cbc0-efa3-4c6d-b1cc-37918dc22c9d [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f40e0830-e160-413b-9bea-66fb29059cf7 +Openstack-Request-Id: req-ef26d27f-bf7c-4ead-a578-625743aa71bb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-f40e0830-e160-413b-9bea-66fb29059cf7 +Openstack-Request-Id: req-ef26d27f-bf7c-4ead-a578-625743aa71bb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:update\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_257_allocations_allocation_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_257_allocations_allocation_id_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_316_third_party_admin_cannot_add_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_316_third_party_admin_cannot_add_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_novif_nopxe_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_novif_nopxe_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_275_deploy_templates_deploy_template_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_275_deploy_templates_deploy_template_id_get_observer ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_novif_pxe_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_novif_pxe_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_258_allocations_allocation_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_258_allocations_allocation_id_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_317_owner_admin_can_modify_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_317_owner_admin_can_modify_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_pxe_ports_exc +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_pxe_ports_exc ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_276_deploy_templates_deploy_template_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_276_deploy_templates_deploy_template_id_patch_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_259_allocations_allocation_id_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_259_allocations_allocation_id_delete_reader ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_vif_nopxe_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_vif_nopxe_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_318_owner_manager_can_modify_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_318_owner_manager_can_modify_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_vif_pxe_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_vif_pxe_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_277_deploy_templates_deploy_template_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_277_deploy_templates_deploy_template_id_patch_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_260_nodes_allocation_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_260_nodes_allocation_get_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_remove_address +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_remove_address ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_319_owner_member_cannot_modify_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_319_owner_member_cannot_modify_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_noports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_noports ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_278_deploy_templates_deploy_template_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_278_deploy_templates_deploy_template_id_patch_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_261_nodes_allocation_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_261_nodes_allocation_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_320_lessee_admin_cannot_modify_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_320_lessee_admin_cannot_modify_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_novif_nopxe_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_novif_nopxe_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_279_deploy_templates_deploy_template_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_279_deploy_templates_deploy_template_id_delete_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_novif_pxe_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_novif_pxe_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_262_nodes_allocation_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_262_nodes_allocation_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_321_lessee_manager_cannot_modify_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_321_lessee_manager_cannot_modify_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_vif_nopxe_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_vif_nopxe_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_280_deploy_templates_deploy_template_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_280_deploy_templates_deploy_template_id_delete_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_vif_pxe_ports +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_vif_pxe_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_322_lessee_member_cannot_modify_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_322_lessee_member_cannot_modify_port ... ok +API ACL Testing Path delete /v1/allocations/c9c39aa0-233e-4e2d-aadb-8c0891b9e234 +DELETE: /v1/allocations/c9c39aa0-233e-4e2d-aadb-8c0891b9e234 +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-89e8ec3b-559d-43dd-9494-6c420113ef97 +Openstack-Request-Id: req-84118011-77c3-490e-8d88-cd4f8fb12614 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-89e8ec3b-559d-43dd-9494-6c420113ef97 +Openstack-Request-Id: req-84118011-77c3-490e-8d88-cd4f8fb12614 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/allocations/e7c001e9-83a6-4f96-be6f-c249af0ee6a6 +DELETE: /v1/allocations/e7c001e9-83a6-4f96-be6f-c249af0ee6a6 +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-8c033675-f1b2-4a38-99a4-3eccd8c9740e +Openstack-Request-Id: req-6b8b6428-9ca0-4523-90bd-c0aca22f1a92 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-8c033675-f1b2-4a38-99a4-3eccd8c9740e +Openstack-Request-Id: req-6b8b6428-9ca0-4523-90bd-c0aca22f1a92 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/allocations/f4cc8844-70d4-430d-994c-2cf53bdac64d +DELETE: /v1/allocations/f4cc8844-70d4-430d-994c-2cf53bdac64d GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-32cb65ac-9071-4494-b4a3-b90d3807be1e +Openstack-Request-Id: req-e1808a23-7773-4427-a6f1-2168a2f63eef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-32cb65ac-9071-4494-b4a3-b90d3807be1e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test {} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-86c92b41-8caa-4088-9e9e-3aa9f39bb2bb +Openstack-Request-Id: req-e1808a23-7773-4427-a6f1-2168a2f63eef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-86c92b41-8caa-4088-9e9e-3aa9f39bb2bb +Openstack-Request-Id: req-a27c39d7-bb33-4035-9fd9-2d44412da4fc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test {} -GOT:Response: 403 Forbidden +{"uuid": "07b35274-c662-40ff-8b63-8ea8eb2d4322", "created_at": "2024-01-06T14:13:34.594770+00:00", "updated_at": "2024-01-06T14:13:34.616638+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/07b35274-c662-40ff-8b63-8ea8eb2d4322", "rel": "self"}, {"href": "http://localhost/allocations/07b35274-c662-40ff-8b63-8ea8eb2d4322", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-fd8684b4-b015-4c68-9ba7-71d919220625 +Openstack-Request-Id: req-a27c39d7-bb33-4035-9fd9-2d44412da4fc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "07b35274-c662-40ff-8b63-8ea8eb2d4322", "created_at": "2024-01-06T14:13:34.594770+00:00", "updated_at": "2024-01-06T14:13:34.616638+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/07b35274-c662-40ff-8b63-8ea8eb2d4322", "rel": "self"}, {"href": "http://localhost/allocations/07b35274-c662-40ff-8b63-8ea8eb2d4322", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-fd8684b4-b015-4c68-9ba7-71d919220625 +Openstack-Request-Id: req-5260aa8a-0623-4561-b48a-870f3169a0d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test {} -ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_wrong_state -ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_wrong_state ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_193_lessee_admin_cannot_get_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_193_lessee_admin_cannot_get_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__calculate_memory_req -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__calculate_memory_req ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_list_fail -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_list_fail ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_clean_steps -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_clean_steps ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_timeouts -ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_timeouts ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_configdrive_path -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_configdrive_path ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_smartnic_ports -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_smartnic_ports ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_194_lessee_manager_cannot_get_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_194_lessee_manager_cannot_get_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_node_ip -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_node_ip ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_python_interpreter -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_python_interpreter ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_195_lessee_member_cannot_get_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_195_lessee_member_cannot_get_vendor_passthru ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network_not_all_pxe_enabled -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network_not_all_pxe_enabled ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info_defaults -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info_defaults ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy_with_configdrive -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy_with_configdrive ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network_not_all_pxe_enabled_all_ports -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network_not_all_pxe_enabled_all_ports ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info_no_playbook -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info_no_playbook ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_196_lessee_reader_cannot_get_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_196_lessee_reader_cannot_get_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_partitioning_info_all_gpt -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_partitioning_info_all_gpt ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_rollback_ports -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_rollback_ports ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_partitioning_info_root_msdos -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_partitioning_info_root_msdos ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy_with_smartnic_port -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy_with_smartnic_port ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_197_owner_admin_cannot_post_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_197_owner_admin_cannot_post_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_rollback_ports_exception -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_rollback_ports_exception ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_execute_clean_step -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_execute_clean_step ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_agent_down -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_agent_down ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_fail_advanced -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_fail_advanced ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_get_clean_steps -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_get_clean_steps ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_agent_up -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_agent_up ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_iinfo -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_iinfo ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_198_owner_manager_cannot_post_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_198_owner_manager_cannot_post_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_get_deploy_steps -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_get_deploy_steps ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_override -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_override ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_flat_interface -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_flat_interface ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_extra_vars -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_extra_vars ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_199_owner_member_cannot_post_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_199_owner_member_cannot_post_vendor_passthru ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_flat_interface_with_client_id -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_flat_interface_with_client_id ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_active -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_active ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_file -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_file ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_200_owner_reader_cannot_post_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_200_owner_reader_cannot_post_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_cleaning -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_cleaning ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface_missed_info -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface_missed_info ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_json -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_json ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface_with_client_id -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface_with_client_id ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_instance_ramdisk -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_instance_ramdisk ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_url -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_url ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_network_type_unmanaged -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_network_type_unmanaged ... ok -GOT:Response: 403 Forbidden +{"uuid": "05abfc8a-e309-497c-a790-9fa087fe85eb", "created_at": "2024-01-06T14:13:34.833188+00:00", "updated_at": "2024-01-06T14:13:34.855141+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/05abfc8a-e309-497c-a790-9fa087fe85eb", "rel": "self"}, {"href": "http://localhost/allocations/05abfc8a-e309-497c-a790-9fa087fe85eb", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f86b7427-6807-40a2-a7f1-cc13a3440655 +Openstack-Request-Id: req-5260aa8a-0623-4561-b48a-870f3169a0d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "05abfc8a-e309-497c-a790-9fa087fe85eb", "created_at": "2024-01-06T14:13:34.833188+00:00", "updated_at": "2024-01-06T14:13:34.855141+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/05abfc8a-e309-497c-a790-9fa087fe85eb", "rel": "self"}, {"href": "http://localhost/allocations/05abfc8a-e309-497c-a790-9fa087fe85eb", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +API ACL Testing Path get /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GET: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f86b7427-6807-40a2-a7f1-cc13a3440655 +Openstack-Request-Id: req-c32f9654-8115-474a-8a2a-1665134956bd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test {} -GOT:Response: 403 Forbidden +{"uuid": "67410799-58d3-4a06-9666-538bcf463bd3", "created_at": "2024-01-06T14:13:35.073944+00:00", "updated_at": "2024-01-06T14:13:35.095905+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/67410799-58d3-4a06-9666-538bcf463bd3", "rel": "self"}, {"href": "http://localhost/allocations/67410799-58d3-4a06-9666-538bcf463bd3", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8278b926-2793-4a8e-b1b4-ea8589b6feae +Openstack-Request-Id: req-c32f9654-8115-474a-8a2a-1665134956bd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"uuid": "67410799-58d3-4a06-9666-538bcf463bd3", "created_at": "2024-01-06T14:13:35.073944+00:00", "updated_at": "2024-01-06T14:13:35.095905+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/67410799-58d3-4a06-9666-538bcf463bd3", "rel": "self"}, {"href": "http://localhost/allocations/67410799-58d3-4a06-9666-538bcf463bd3", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_263_nodes_allocation_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_263_nodes_allocation_delete_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_active_node +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_active_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_264_nodes_allocation_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_264_nodes_allocation_delete_member ... ok ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8278b926-2793-4a8e-b1b4-ea8589b6feae +Openstack-Request-Id: req-5de53fa5-4333-47a6-9383-80b449b6a406 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/ports +POST: /v1/ports {'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-a16df4bd-75b6-4679-a97d-e8658b45ed33 +Openstack-Request-Id: req-57ecb2e9-8feb-4e37-a753-e5a7b0d51b0c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-a16df4bd-75b6-4679-a97d-e8658b45ed33 +Openstack-Request-Id: req-57ecb2e9-8feb-4e37-a753-e5a7b0d51b0c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test {} -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c +PATCH: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e227b2b5-482b-414d-9501-55bf7dca3256 +Openstack-Request-Id: req-add102b2-d0d8-471f-91a5-ea27b7740318 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e227b2b5-482b-414d-9501-55bf7dca3256 +Openstack-Request-Id: req-add102b2-d0d8-471f-91a5-ea27b7740318 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c +PATCH: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-02343d14-49d4-480b-b1d6-5ff0a83329cb +Openstack-Request-Id: req-7885ca21-a19a-4f17-b142-79a30cbcb5d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-02343d14-49d4-480b-b1d6-5ff0a83329cb +Openstack-Request-Id: req-7885ca21-a19a-4f17-b142-79a30cbcb5d0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c +PATCH: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-71ee93d7-7049-4eb7-9f12-cc5d1bec8339 +Openstack-Request-Id: req-315e08fd-3185-4ed4-ba88-4c4da294b9e9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-71ee93d7-7049-4eb7-9f12-cc5d1bec8339 +Openstack-Request-Id: req-315e08fd-3185-4ed4-ba88-4c4da294b9e9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2b104e6b-8807-411b-aa95-5834b1c314b8 +Openstack-Request-Id: req-2eb6ef61-fac3-4dc9-97d8-110dfa06bb72 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2b104e6b-8807-411b-aa95-5834b1c314b8 +Openstack-Request-Id: req-2eb6ef61-fac3-4dc9-97d8-110dfa06bb72 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0b97626d-ec05-4d06-92f8-bcdc11c959c2 +Openstack-Request-Id: req-efe755cf-6187-4f62-b187-9a0fabece4dd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-0b97626d-ec05-4d06-92f8-bcdc11c959c2 +Openstack-Request-Id: req-efe755cf-6187-4f62-b187-9a0fabece4dd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_201_lessee_admin_cannot_post_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_201_lessee_admin_cannot_post_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_unrescuing -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_unrescuing ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_insecure_activated -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_insecure_activated ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_tear_down_cleaning -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_tear_down_cleaning ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_no_smartnic_and_link_info -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_no_smartnic_and_link_info ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_root_device_hints -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_root_device_hints ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_202_lessee_manager_cannot_post_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_202_lessee_manager_cannot_post_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_smartnic_and_link_info -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_smartnic_and_link_info ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_calls_boot_validate -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_calls_boot_validate ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_ansible_interpreter_override -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_ansible_interpreter_override ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_203_lessee_member_cannot_post_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_203_lessee_member_cannot_post_vendor_passthru ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_smartnic_and_no_link_info -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_smartnic_and_no_link_info ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_ansible_interpreter_python3 -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_ansible_interpreter_python3 ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_interface_mismatch -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_interface_mismatch ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_default_verbosity_debug -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_default_verbosity_debug ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_204_lessee_reader_cannot_post_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_204_lessee_reader_cannot_post_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_default_verbosity_nodebug -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_default_verbosity_nodebug ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_exception_by_neutronclient -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_exception_by_neutronclient ... ok -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_with_boot_iso -ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_with_boot_iso ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_fail -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_fail ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_less_than_configured -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_less_than_configured ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test___init__ -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test___init__ ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_205_owner_admin_cannot_put_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_205_owner_admin_cannot_put_vendor_passthru ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_more_than_configured -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_more_than_configured ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps_missing -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps_missing ... ok -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps_names_not_unique -ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps_names_not_unique ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_no_sg_from_neutron -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_no_sg_from_neutron ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v1_read -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v1_read ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_206_owner_manager_cannot_put_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_206_owner_manager_cannot_put_vendor_passthru ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_down_target_state_down -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_down_target_state_down ... ok -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_get_drac_client -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_get_drac_client ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_down_target_state_up -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_down_target_state_up ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v1_write -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v1_write ... ok -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_207_owner_member_cannot_put_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_207_owner_member_cannot_put_vendor_passthru ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_up_target_state_down -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_up_target_state_down ... ok -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_invalid_port -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_invalid_port ... ok -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_invalid_protocol -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_invalid_protocol ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_up_target_state_up -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_up_target_state_up ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_208_owner_reader_cannot_put_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_208_owner_reader_cannot_put_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v3 -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v3 ... ok -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_host -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_host ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_active_max_retry -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_active_max_retry ... ok -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_password -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_password ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_down -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_down ... ok -POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-10fa6bad-47d5-433e-8e2b-6db54e1b2161 +Openstack-Request-Id: req-2f78287f-e9f5-43c3-8113-7d981a629c2f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-10fa6bad-47d5-433e-8e2b-6db54e1b2161 +Openstack-Request-Id: req-2f78287f-e9f5-43c3-8113-7d981a629c2f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-2167eded-6400-4cff-85d0-2942571b049d +Openstack-Request-Id: req-19d90b03-dfc0-4ebe-8c3f-efe131d88729 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_323_third_party_admin_cannot_modify_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_323_third_party_admin_cannot_modify_port ... ok +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-2167eded-6400-4cff-85d0-2942571b049d +Openstack-Request-Id: req-fb4e1213-d93b-4a0a-8ab2-67f736756a64 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates +GET: /v1/deploy_templates {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-cb3ab136-52d1-4bba-ba20-14a6e9e60df1 +Openstack-Request-Id: req-ecbcaab6-d8d9-44cb-8855-5650f0bcebe9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates +GET: /v1/deploy_templates {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-cb3ab136-52d1-4bba-ba20-14a6e9e60df1 +Openstack-Request-Id: req-4297e3ad-44e3-4a3c-9f0f-33b6e5b61ea7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates +GET: /v1/deploy_templates {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-c2b52909-102e-4ffa-ba03-ce5e575fedb4 +Openstack-Request-Id: req-cf30ac40-31e7-42c7-a512-4ca2d00ca90d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates/396cc777-316c-468f-ab8a-b9c516b65866 +GET: /v1/deploy_templates/396cc777-316c-468f-ab8a-b9c516b65866 {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-c2b52909-102e-4ffa-ba03-ce5e575fedb4 +Openstack-Request-Id: req-575fdf2a-a459-4ecc-8454-0e9385e2c7ff X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates/74c8fcd4-b036-456d-94a2-9df5c9a334a9 +GET: /v1/deploy_templates/74c8fcd4-b036-456d-94a2-9df5c9a334a9 {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-efe1291d-875e-4399-a428-74dc791bd838 +Openstack-Request-Id: req-0b317cb9-4967-4c73-9e7c-cc331825f466 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates/b6382fa6-37b6-4751-ae5d-8ba6e6f23ad3 +GET: /v1/deploy_templates/b6382fa6-37b6-4751-ae5d-8ba6e6f23ad3 {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-efe1291d-875e-4399-a428-74dc791bd838 +Openstack-Request-Id: req-9e0c3b93-09ab-48fd-ba97-04a246a67e18 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/deploy_templates/5df10348-25d3-41a1-8217-b77f24a0d33c +PATCH: /v1/deploy_templates/5df10348-25d3-41a1-8217-b77f24a0d33c [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-2733bb1b-4efe-4d57-97f4-d22ab7504df7 +Openstack-Request-Id: req-277023d8-f33f-4e7c-aef5-6641406466e6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:update\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/deploy_templates/2d0f4422-e0ec-47ac-affd-0930947631e4 +PATCH: /v1/deploy_templates/2d0f4422-e0ec-47ac-affd-0930947631e4 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-2733bb1b-4efe-4d57-97f4-d22ab7504df7 +Openstack-Request-Id: req-b2098f06-d6b0-4d0b-a16f-b976352c2f6a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:update\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/deploy_templates/7f5165d5-027c-4da7-bb81-3914fa2b91da +PATCH: /v1/deploy_templates/7f5165d5-027c-4da7-bb81-3914fa2b91da [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-7e4f68cb-8e36-46c7-ad7f-78c3f9d08a26 +Openstack-Request-Id: req-a780e3c8-70d2-4794-8b77-77006653ae27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:update\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/deploy_templates/886f340f-cd42-4c98-aeb4-be6047f0e37d +DELETE: /v1/deploy_templates/886f340f-cd42-4c98-aeb4-be6047f0e37d +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-7e4f68cb-8e36-46c7-ad7f-78c3f9d08a26 +Openstack-Request-Id: req-22b02f63-8596-4ef2-a8cd-fc837e40bcdd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/deploy_templates/08c4c8dd-d521-4c18-8a61-7796ddc0262f +DELETE: /v1/deploy_templates/08c4c8dd-d521-4c18-8a61-7796ddc0262f +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-2575527d-aa38-44f3-a454-a539def7d1a6 +Openstack-Request-Id: req-1415b9f9-803f-4ac4-9bd2-f611277b4fe2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/deploy_templates/0e69fedf-1765-4925-850f-4fbebeedd739 +DELETE: /v1/deploy_templates/0e69fedf-1765-4925-850f-4fbebeedd739 +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_281_deploy_templates_deploy_template_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_281_deploy_templates_deploy_template_id_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_282_chassis_post_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_282_chassis_post_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_active_node_failure +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_active_node_failure ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_324_owner_admin_can_delete_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_324_owner_admin_can_delete_port ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_265_nodes_allocation_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_265_nodes_allocation_delete_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_283_chassis_post_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_283_chassis_post_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_failure +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_failure ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_325_owner_manager_can_delete_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_325_owner_manager_can_delete_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_multiple_segment_mappings +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_multiple_segment_mappings ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_284_chassis_post_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_284_chassis_post_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_266_deploy_templates_post_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_266_deploy_templates_post_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_portgroup_no_address +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_portgroup_no_address ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_326_owner_member_cannot_delete_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_326_owner_member_cannot_delete_port ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_285_chassis_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_285_chassis_get_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_portgroup_physnet_inconsistent +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_portgroup_physnet_inconsistent ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_267_deploy_templates_post_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_267_deploy_templates_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_327_lessee_admin_cannot_delete_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_327_lessee_admin_cannot_delete_port ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_286_chassis_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_286_chassis_get_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_update_port_exception +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_update_port_exception ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_268_deploy_templates_post_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_268_deploy_templates_post_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_287_chassis_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_287_chassis_get_observer ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_with_physnet +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_with_physnet ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_328_lessee_manager_cannot_delete_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_328_lessee_manager_cannot_delete_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_288_chassis_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_288_chassis_detail_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_269_deploy_templates_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_269_deploy_templates_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_329_lessee_member_cannot_delete_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_329_lessee_member_cannot_delete_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_active_node +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_active_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_289_chassis_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_289_chassis_detail_get_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_active_node_failure +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_active_node_failure ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_330_third_party_admin_cannot_delete_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_330_third_party_admin_cannot_delete_port ... ok +API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2575527d-aa38-44f3-a454-a539def7d1a6 +Openstack-Request-Id: req-34244440-5261-41f8-a301-a45653f20737 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_path -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_path ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_209_lessee_admin_cannot_put_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_209_lessee_admin_cannot_put_vendor_passthru ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_down_max_retry -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_down_max_retry ... ok -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_port -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_port ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_context -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_context ... ok -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_up -ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_up ... ok -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_protocol -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_protocol ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_210_lessee_manager_cannot_put_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_210_lessee_manager_cannot_put_vendor_passthru ... ok -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config ... ok -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_username -ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_username ... ok -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_empty_target_raid_config -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_empty_target_raid_config ... ok -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_get_job -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_get_job ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_211_lessee_member_cannot_put_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_211_lessee_member_cannot_put_vendor_passthru ... ok -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_no_target_raid_config_after_skipping -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_no_target_raid_config_after_skipping ... ok -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_get_job_fail -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_get_job_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_list_unfinished_jobs -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_list_unfinished_jobs ... ok -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_skip_nonroot -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_skip_nonroot ... ok -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_list_unfinished_jobs_fail -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_list_unfinished_jobs_fail ... ok -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_skip_root -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_skip_root ... ok -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_212_lessee_reader_cannot_put_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_212_lessee_reader_cannot_put_vendor_passthru ... ok -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_get_logical_disk_properties -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_get_logical_disk_properties ... ok -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_fail -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_fail ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_custom_retries -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_custom_retries ... ok -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_get_logical_disk_properties_custom_schema -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_get_logical_disk_properties_custom_schema ... ok -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_invalid -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_invalid ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_213_owner_admin_cannot_delete_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_213_owner_admin_cannot_delete_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_name_prefix -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_name_prefix ... ok -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_multiple_root_volumes -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_multiple_root_volumes ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_custom_timeout -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_custom_timeout ... ok -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_name_prefix_invalid -ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_name_prefix_invalid ... ok -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_214_owner_manager_cannot_delete_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_214_owner_manager_cannot_delete_vendor_passthru ... ok -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay_current_capabilities_empty -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay_current_capabilities_empty ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task ... ok -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay_no_root_volumes -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay_no_root_volumes ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_err -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_err ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_failed -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_failed ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_215_owner_member_cannot_delete_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_215_owner_member_cannot_delete_vendor_passthru ... ok -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_skip_MAX -ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_skip_MAX ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_missing -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_missing ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_additional_property -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_additional_property ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_partial_failed -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_partial_failed ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_custom_schema -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_custom_schema ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_disk_type -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_disk_type ... ok -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3d11d0e1-08a2-4301-9248-2bbf6c2207eb +Openstack-Request-Id: req-34244440-5261-41f8-a301-a45653f20737 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-3d11d0e1-08a2-4301-9248-2bbf6c2207eb +Openstack-Request-Id: req-5417ce0c-c80e-4944-b281-c804504ce82e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-5417ce0c-c80e-4944-b281-c804504ce82e +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation +DELETE: /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2711accd-c6bc-4d26-81a4-cf8789d948ba +Openstack-Request-Id: req-832473b1-d2d4-410d-9a91-a936e72c7283 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-2711accd-c6bc-4d26-81a4-cf8789d948ba +Openstack-Request-Id: req-832473b1-d2d4-410d-9a91-a936e72c7283 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/deploy_templates +POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-70cea5de-4db0-4995-9df2-0eb2c45d56a8 +Location: http://localhost/v1/deploy_templates/0525c65e-2c27-4fa2-a3ad-b417d7e1c970 +Openstack-Request-Id: req-5ef9ef01-8b73-44da-8cd9-93b7d6809a85 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "0525c65e-2c27-4fa2-a3ad-b417d7e1c970", "created_at": "2024-01-06T14:13:36.501609+00:00", "updated_at": null, "name": "CUSTOM_TEST_TEMPLATE", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/0525c65e-2c27-4fa2-a3ad-b417d7e1c970", "rel": "self"}, {"href": "http://localhost/deploy_templates/0525c65e-2c27-4fa2-a3ad-b417d7e1c970", "rel": "bookmark"}], "steps": [{"interface": "deploy", "step": "noop", "args": {}, "priority": 0}]} +ACL Test GOT Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-70cea5de-4db0-4995-9df2-0eb2c45d56a8 +Location: http://localhost/v1/deploy_templates/0525c65e-2c27-4fa2-a3ad-b417d7e1c970 +Openstack-Request-Id: req-5ef9ef01-8b73-44da-8cd9-93b7d6809a85 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test None +{"uuid": "0525c65e-2c27-4fa2-a3ad-b417d7e1c970", "created_at": "2024-01-06T14:13:36.501609+00:00", "updated_at": null, "name": "CUSTOM_TEST_TEMPLATE", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/0525c65e-2c27-4fa2-a3ad-b417d7e1c970", "rel": "self"}, {"href": "http://localhost/deploy_templates/0525c65e-2c27-4fa2-a3ad-b417d7e1c970", "rel": "bookmark"}], "steps": [{"interface": "deploy", "step": "noop", "args": {}, "priority": 0}]} +API ACL Testing Path post /v1/deploy_templates +POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7f56672b-d939-45b2-9885-efb613085429 +Openstack-Request-Id: req-136ab59f-52be-4bdd-98c2-ae9f8de0f72f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-7f56672b-d939-45b2-9885-efb613085429 +Openstack-Request-Id: req-136ab59f-52be-4bdd-98c2-ae9f8de0f72f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/deploy_templates +POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-09545bf2-f55a-4806-8ac2-2fdc4a34530b +Openstack-Request-Id: req-e6da5d8c-8615-474c-966e-6a6f75ca122d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-09545bf2-f55a-4806-8ac2-2fdc4a34530b +Openstack-Request-Id: req-e6da5d8c-8615-474c-966e-6a6f75ca122d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/deploy_templates +GET: /v1/deploy_templates {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-61d3b8f9-0260-45e6-8bf0-231544f83e1b +Openstack-Request-Id: req-5f4258b1-e48e-4137-b0a6-c1724daf6f29 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"deploy_templates": [{"uuid": "7af39433-0f34-4454-b3b9-ff564ac7f01d", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/7af39433-0f34-4454-b3b9-ff564ac7f01d", "rel": "self"}, {"href": "http://localhost/deploy_templates/7af39433-0f34-4454-b3b9-ff564ac7f01d", "rel": "bookmark"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-61d3b8f9-0260-45e6-8bf0-231544f83e1b +Openstack-Request-Id: req-5f4258b1-e48e-4137-b0a6-c1724daf6f29 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -GOT:Response: 403 Forbidden +{"deploy_templates": [{"uuid": "7af39433-0f34-4454-b3b9-ff564ac7f01d", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/7af39433-0f34-4454-b3b9-ff564ac7f01d", "rel": "self"}, {"href": "http://localhost/deploy_templates/7af39433-0f34-4454-b3b9-ff564ac7f01d", "rel": "bookmark"}]}]} +API ACL Testing Path get /v1/deploy_templates +GET: /v1/deploy_templates {} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_270_deploy_templates_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_270_deploy_templates_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_290_chassis_detail_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_290_chassis_detail_get_observer ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_deleting_node +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_deleting_node ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_271_deploy_templates_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_271_deploy_templates_get_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_291_chassis_chassis_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_291_chassis_chassis_id_get_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_not_attached +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_not_attached ... ok +ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f79e4831-4b83-434a-9f29-75fbafe70921 +Openstack-Request-Id: req-19d90b03-dfc0-4ebe-8c3f-efe131d88729 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c +DELETE: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-f79e4831-4b83-434a-9f29-75fbafe70921 +Openstack-Request-Id: req-e101d62b-ba66-457b-955c-77ce68ccc873 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-44d70845-c59f-4132-a97f-b0a46e946560 +Openstack-Request-Id: req-e101d62b-ba66-457b-955c-77ce68ccc873 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_216_owner_reader_cannot_delete_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_216_owner_reader_cannot_delete_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_partial_failed_idrac5 -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_partial_failed_idrac5 ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_int_type -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_int_type ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_is_root_volume -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_is_root_volume ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_still_processing -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_still_processing ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_217_lessee_admin_cannot_delete_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_217_lessee_admin_cannot_delete_vendor_passthru ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_multiple_is_root_volume -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_multiple_is_root_volume ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_with_export -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_with_export ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_err_engine -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_err_engine ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_number_of_phy_disks -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_number_of_phy_disks ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_physical_disks -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_physical_disks ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_with_export_failed -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_with_export_failed ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_218_lessee_manager_cannot_delete_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_218_lessee_manager_cannot_delete_vendor_passthru ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_raid_level -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_raid_level ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_not_drac -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_not_drac ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_share_physical_disks -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_share_physical_disks ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_err_transport -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_err_transport ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_size_gb -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_size_gb ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_219_lessee_member_cannot_delete_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_219_lessee_member_cannot_delete_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_no_task_monitor_url -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_no_task_monitor_url ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_max_size_gb -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_max_size_gb ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_logical_disk -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_logical_disk ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_node_locked -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_node_locked ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_raid_level -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_raid_level ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_220_lessee_reader_cannot_delete_vendor_passthru -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_220_lessee_reader_cannot_delete_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_node_notfound -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_node_notfound ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_size_gb -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_size_gb ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_okay -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_okay ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_failed_clean -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_failed_clean ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_okay_software -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_okay_software ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next_err_engine -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next_err_engine ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_too_few_physical_disks -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_too_few_physical_disks ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_failed_deploy -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_failed_deploy ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_with_jbod_volume -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_with_jbod_volume ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_zero_logical_disks -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_zero_logical_disks ... ok -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_zero_size_gb -ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_zero_size_gb ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_success_clean -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_success_clean ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_221_owner_reader_get_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_221_owner_reader_get_traits ... ok -ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions -ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next_err_transport -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next_err_transport ... ok -ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_objects -ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_objects ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_success_deploy -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_success_deploy ... ok -ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_releases -ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_releases ... ok -ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_releases_objects -ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_releases_objects ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_222_lessee_reader_get_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_222_lessee_reader_get_traits ... ok -ironic.tests.unit.common.test_rpc_service.TestRPCService.test_start -ironic.tests.unit.common.test_rpc_service.TestRPCService.test_start ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_data_empty -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_data_empty ... ok -ironic.tests.unit.common.test_rpc_service.TestRPCService.test_start_failure -ironic.tests.unit.common.test_rpc_service.TestRPCService.test_start_failure ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_data_missing -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_data_missing ... ok -ironic.tests.unit.common.test_rpc_service.TestRPCService.test_start_no_rpc -ironic.tests.unit.common.test_rpc_service.TestRPCService.test_start_no_rpc ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_223_third_party_admin_cannot_get_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_223_third_party_admin_cannot_get_traits ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_interface_missing -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_interface_missing ... ok -ironic.tests.unit.common.test_states.StatesTest.test_state_values_length -ironic.tests.unit.common.test_states.StatesTest.test_state_values_length ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_interface_not_supported -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_interface_not_supported ... ok -ironic.tests.unit.common.test_swift.SwiftTestCase.test___init__ -ironic.tests.unit.common.test_swift.SwiftTestCase.test___init__ ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set_err_engine -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set_err_engine ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_oem_missing -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_oem_missing ... ok -ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object -ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_224_owner_admin_can_put_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_224_owner_admin_can_put_traits ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue ... ok -ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_create_container_fails -ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_create_container_fails ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set_err_transport -ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set_err_transport ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue_missing_attr_clean_step -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue_missing_attr_clean_step ... ok -ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_put_object_fails -ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_put_object_fails ... ok -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c +DELETE: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c +GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-44d70845-c59f-4132-a97f-b0a46e946560 +Openstack-Request-Id: req-94b20e12-37b3-44aa-b4f1-c4230df403d8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +ACL Test GOT Response: 503 Service Unavailable +Content-Type: application/json +Openstack-Request-Id: req-94b20e12-37b3-44aa-b4f1-c4230df403d8 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c +DELETE: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9c01990d-ee23-49a8-91a0-c424c287c60d +Openstack-Request-Id: req-baf07f0f-2acc-4634-b190-0f20f578fd27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9c01990d-ee23-49a8-91a0-c424c287c60d +Openstack-Request-Id: req-baf07f0f-2acc-4634-b190-0f20f578fd27 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8f747df2-beab-463c-a5ff-6ade73dd1775 +Openstack-Request-Id: req-ffb1256e-af0c-4812-b23c-a726dbb601c3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-8f747df2-beab-463c-a5ff-6ade73dd1775 +Openstack-Request-Id: req-ffb1256e-af0c-4812-b23c-a726dbb601c3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6c9b2907-0ca9-4cf4-ba3d-d608668302f0 +Openstack-Request-Id: req-d347720c-795c-41ca-bd11-96bb8b7753d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6c9b2907-0ca9-4cf4-ba3d-d608668302f0 +Openstack-Request-Id: req-d347720c-795c-41ca-bd11-96bb8b7753d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-26bcd7be-a21d-4ec8-ac48-80882e189501 +Openstack-Request-Id: req-ad856c06-169c-40da-ac84-db46373fe7ef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-26bcd7be-a21d-4ec8-ac48-80882e189501 +Openstack-Request-Id: req-ad856c06-169c-40da-ac84-db46373fe7ef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-96cd2900-5d5b-4789-8c74-7426b52ea954 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"traits": []} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-96cd2900-5d5b-4789-8c74-7426b52ea954 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"traits": []} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-bcd5bacd-1937-4406-9319-dce45fe62793 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"traits": []} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-bcd5bacd-1937-4406-9319-dce45fe62793 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"traits": []} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-63e523d7-d294-4212-982f-ef5145d4ee99 +Openstack-Request-Id: req-0043cd3d-ea16-4889-b4fa-50d1479a262e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-63e523d7-d294-4212-982f-ef5145d4ee99 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-43bba435-bc51-4b3f-a13d-ba0c519dea81 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-43bba435-bc51-4b3f-a13d-ba0c519dea81 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_225_owner_manager_can_put_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_225_owner_manager_can_put_traits ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue_missing_attr_verify_step -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue_missing_attr_verify_step ... ok -ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object -ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object ... ok -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_get_server_hardware_id -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_get_server_hardware_id ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_export_failed -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_export_failed ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_226_owner_member_cannot_put_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_226_owner_member_cannot_put_traits ... ok -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_get_xclarity_client -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_get_xclarity_client ... ok -ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object_exc -ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object_exc ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_name_missing -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_name_missing ... ok -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_success -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_success ... ok -ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object_exc_resource_not_found -ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object_exc_resource_not_found ... ok -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_get_param_from_config -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_get_param_from_config ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_227_lessee_admin_cannot_put_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_227_lessee_admin_cannot_put_traits ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_file_not_found -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_file_not_found ... ok -ironic.tests.unit.common.test_swift.SwiftTestCase.test_get_temp_url -ironic.tests.unit.common.test_swift.SwiftTestCase.test_get_temp_url ... ok -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_invalid_port -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_invalid_port ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_incorrect_schema -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_incorrect_schema ... ok -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_missing_driver_info_and_config -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_missing_driver_info_and_config ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_name_missing -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_name_missing ... ok -ironic.tests.unit.common.test_swift.SwiftTestCase.test_head_object -ironic.tests.unit.common.test_swift.SwiftTestCase.test_head_object ... ok -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_missing_hardware_id -ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_missing_hardware_id ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_228_lessee_manager_cannot_put_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_228_lessee_manager_cannot_put_traits ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_success -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_success ... ok -ironic.tests.unit.common.test_swift.SwiftTestCase.test_update_object_meta -ironic.tests.unit.common.test_swift.SwiftTestCase.test_update_object_meta ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_export_configuration_success -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_export_configuration_success ... ok -:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device ... ok -ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_correct_setting -ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_correct_setting ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_229_lessee_member_cannot_put_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_229_lessee_member_cannot_put_traits ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_known_good_state -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_known_good_state ... ok -:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device_current_none -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device_current_none ... ok -ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_default -ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_default ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac ... ok -:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_230_third_party_admin_cannot_put_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_230_third_party_admin_cannot_put_traits ... ok -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device_fail -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device_fail ... ok -ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_default_limit -ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_default_limit ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac_missing_attr_clean_step -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac_missing_attr_clean_step ... ok -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device_primary_none -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device_primary_none ... ok -:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead -ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_negative_setting -ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_negative_setting ... ok -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_properties -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_properties ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_231_owner_admin_can_delete_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_231_owner_admin_can_delete_traits ... ok -:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac_missing_attr_verify_step -ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac_missing_attr_verify_step ... ok -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_supported_boot_devices -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_supported_boot_devices ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_physical_disks -ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_physical_disks ... ok -ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_zero_setting -ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_zero_setting ... ok -:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_232_owner_manager_can_delete_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_232_owner_manager_can_delete_traits ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_physical_disks_fail -ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_physical_disks_fail ... ok -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_set_boot_device -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_set_boot_device ... ok -ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_wsgi_service_with_ssl_enabled -ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_wsgi_service_with_ssl_enabled ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_raid_controllers -ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_raid_controllers ... ok -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_candidate_nodes_mismatch -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_candidate_nodes_mismatch ... ok -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_set_boot_device_fail -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_set_boot_device_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_raid_controllers_fail -ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_raid_controllers_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_virtual_disks -ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_virtual_disks ... ok -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-9d540b9a-87e1-4636-9144-a866da0a616e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-9d540b9a-87e1-4636-9144-a866da0a616e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-3b1ad24f-49ae-425a-8dd8-cd4d80a23093 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-3b1ad24f-49ae-425a-8dd8-cd4d80a23093 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-55554a62-d62c-4640-9f59-13325399424b -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-55554a62-d62c-4640-9f59-13325399424b -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-7610727b-5b67-4ba7-809e-c875587e451b -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-7610727b-5b67-4ba7-809e-c875587e451b -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-dd7ebab8-45bc-4364-9e20-2e1a7984fac8 +Openstack-Request-Id: req-0043cd3d-ea16-4889-b4fa-50d1479a262e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/ports +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-dd7ebab8-45bc-4364-9e20-2e1a7984fac8 +Openstack-Request-Id: req-14442395-b500-431f-b78c-ac70d0d5164b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} -GOT:Response: 404 Not Found +{"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"}]}]} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_331_owner_reader_can_get_node_ports +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_331_owner_reader_can_get_node_ports ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_portgroup +ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_292_chassis_chassis_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_292_chassis_chassis_id_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_272_deploy_templates_deploy_template_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_272_deploy_templates_deploy_template_id_get_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_extra_port +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_extra_port ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_332_lessee_reader_can_get_node_port +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_332_lessee_reader_can_get_node_port ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_extra_portgroup +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_extra_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_293_chassis_chassis_id_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_293_chassis_chassis_id_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_273_deploy_templates_deploy_template_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_273_deploy_templates_deploy_template_id_get_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_internal_info_port +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_internal_info_port ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_333_third_party_admin_cannot_get_ports +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_333_third_party_admin_cannot_get_ports ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_294_chassis_chassis_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_294_chassis_chassis_id_patch_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_internal_info_portgroup +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_internal_info_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_274_deploy_templates_deploy_template_id_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_274_deploy_templates_deploy_template_id_get_reader ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_port_like_obj_by_vif_id_in_internal_info +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_port_like_obj_by_vif_id_in_internal_info ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_334_owner_reader_can_get_ports_by_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_334_owner_reader_can_get_ports_by_portgroup ... ok +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-3e5397ad-2989-4c2b-b5b6-88810c1eb0f8 +Openstack-Request-Id: req-45d5b62a-21c2-4d27-a36a-7811ed60f3ef X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/chassis +POST: /v1/chassis {'description': 'test-chassis'} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-3e5397ad-2989-4c2b-b5b6-88810c1eb0f8 +Openstack-Request-Id: req-670d72f8-ed99-4801-a5ac-d648fc92c987 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW -GOT:Response: 503 Service Unavailable +{"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}"} +API ACL Testing Path post /v1/chassis +POST: /v1/chassis {'description': 'test-chassis'} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-00873b34-1a93-4966-bfe8-940b550af3e0 +Openstack-Request-Id: req-12a9bbb1-d902-46c1-b5ea-2c964b0a02c0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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}"} +API ACL Testing Path post /v1/chassis +POST: /v1/chassis {'description': 'test-chassis'} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-00873b34-1a93-4966-bfe8-940b550af3e0 +Openstack-Request-Id: req-345ac0f9-6e79-4882-a40e-d92decb503b4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW -GOT:Response: 503 Service Unavailable +{"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}"} +API ACL Testing Path get /v1/chassis +GET: /v1/chassis {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-c4102893-5736-4190-a004-e49bf5c0b474 +Openstack-Request-Id: req-4d886fbd-a337-4cad-85eb-a9295180bc35 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis +GET: /v1/chassis {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-c4102893-5736-4190-a004-e49bf5c0b474 +Openstack-Request-Id: req-ede8c6df-db76-46cb-a85c-0cc6753ad030 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_233_owner_member_cannot_delete_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_233_owner_member_cannot_delete_traits ... ok -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_validate -ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_validate ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_virtual_disks_fail -ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_virtual_disks_fail ... ok -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_node_associated_with_another_instance -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_node_associated_with_another_instance ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__change_physical_disk_state_attribute_error -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__change_physical_disk_state_attribute_error ... ok -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_non_existing_node -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_non_existing_node ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_description_invalid -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_description_invalid ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_234_lessee_admin_cannot_delete_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_234_lessee_admin_cannot_delete_traits ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_empty_dict -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_empty_dict ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_missing_description -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_missing_description ... ok -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_resource_class_mismatch -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_resource_class_mismatch ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_not_dict -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_not_dict ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_convert_controller -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_convert_controller ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_required_invalid -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_required_invalid ... ok -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_state_not_active -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_state_not_active ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_235_lessee_manager_cannot_delete_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_235_lessee_manager_cannot_delete_traits ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_unknown_key -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_unknown_key ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_task_failed -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_task_failed ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_not_dict -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_not_dict ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_all_args -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_all_args ... ok -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_traits_mismatch -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_traits_mismatch ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_236_lessee_member_cannot_delete_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_236_lessee_member_cannot_delete_traits ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_abortable -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_abortable ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_task_still_processing -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_task_still_processing ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_argsinfo -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_argsinfo ... ok -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_uuid_associated_with_another_instance -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_uuid_associated_with_another_instance ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__clear_foreign_config_attribute_error -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__clear_foreign_config_attribute_error ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_priority -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_priority ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_237_third_party_admin_cannot_delete_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_237_third_party_admin_cannot_delete_traits ... ok -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_associated_node -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_associated_node ... ok -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_priority_only -ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_priority_only ... ok -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_238_owner_admin_can_put_custom_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_238_owner_admin_can_put_custom_traits ... ok -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_candidate_nodes -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_candidate_nodes ... ok -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration_delete_existing -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration_delete_existing ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_no_conversion -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_no_conversion ... ok -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration_invalid -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration_invalid ... ok -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_unassociated_node -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_unassociated_node ... ok -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_get_logical_disk_properties -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_get_logical_disk_properties ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_239_owner_manager_can_put_custom_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_239_owner_manager_can_put_custom_traits ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_not_raid -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_not_raid ... ok -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate ... ok -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_without_resource_class -ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_without_resource_class ... ok -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate_no_target_raid_config -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate_no_target_raid_config ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_idrac -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_idrac ... ok -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate_raid_config -ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate_raid_config ... ok -ironic.tests.unit.drivers.test_base.TestBareDriver.test_class_variables -ironic.tests.unit.drivers.test_base.TestBareDriver.test_class_variables ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_240_owner_member_cannot_put_custom_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_240_owner_member_cannot_put_custom_traits ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_sushy -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_sushy ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_boot_interface -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_boot_interface ... ok -ironic.tests.unit.conductor.test_base_manager.MiscTestCase.test__fail_transient_state -ironic.tests.unit.conductor.test_base_manager.MiscTestCase.test__fail_transient_state ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_sushy_oem -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_sushy_oem ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_console_interface -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_console_interface ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__get_storage_controller_invalid_identity -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__get_storage_controller_invalid_identity ... ok -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis +GET: /v1/chassis {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-1fb3959f-5a49-4f77-99a6-32758cbe8b73 +Openstack-Request-Id: req-7b3d983c-535a-4211-a813-de6997fcd8fc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/detail +GET: /v1/chassis/detail {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-1fb3959f-5a49-4f77-99a6-32758cbe8b73 +Openstack-Request-Id: req-66a810d8-4bb9-4cc3-9020-a5f52fea2b93 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/detail +GET: /v1/chassis/detail {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-8c45f15a-2b68-4b25-b843-37f5db6fdfe6 +Openstack-Request-Id: req-cbfa2035-4a36-43e9-8749-db92d51121d1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/detail +GET: /v1/chassis/detail {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-8c45f15a-2b68-4b25-b843-37f5db6fdfe6 +Openstack-Request-Id: req-a63be297-42a6-433c-b53d-0a076e6f79dc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-34bf391b-2780-430c-9ef0-cf9145eb42f8 +Openstack-Request-Id: req-bab6c79e-6e72-4843-af8e-83bd1158b58e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-34bf391b-2780-430c-9ef0-cf9145eb42f8 +Openstack-Request-Id: req-68739c5c-114d-499b-bcb6-a8c6feb1be20 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-cee6b59b-b16a-4b0a-8dac-c2dfa292c286 +Openstack-Request-Id: req-d2378f24-cfb6-4209-8c9b-76827ae3ced6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-cee6b59b-b16a-4b0a-8dac-c2dfa292c286 +Openstack-Request-Id: req-139f99f1-9172-4507-ba13-32e72619bd5e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW -GOT:Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"role:member and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_295_chassis_chassis_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_295_chassis_chassis_id_patch_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_port_like_obj_by_vif_id_not_attached +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_port_like_obj_by_vif_id_not_attached ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_335_lessee_reader_can_get_ports_by_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_335_lessee_reader_can_get_ports_by_portgroup ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_vif_id_by_port_like_obj_in_internal_info +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_vif_id_by_port_like_obj_in_internal_info ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_296_chassis_chassis_id_patch_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_296_chassis_chassis_id_patch_observer ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_vif_id_by_port_like_obj_not_attached +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_vif_id_by_port_like_obj_not_attached ... ok +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c4cc8b33-a757-43e1-8784-609b1f7f5b14 +Openstack-Request-Id: req-88fcfb79-2de2-4012-90a9-2764b8ac9108 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"deploy_templates": [{"uuid": "5f41fb12-11ea-471e-ab8c-670bdf729096", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/5f41fb12-11ea-471e-ab8c-670bdf729096", "rel": "self"}, {"href": "http://localhost/deploy_templates/5f41fb12-11ea-471e-ab8c-670bdf729096", "rel": "bookmark"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c4cc8b33-a757-43e1-8784-609b1f7f5b14 +Openstack-Request-Id: req-88fcfb79-2de2-4012-90a9-2764b8ac9108 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 None -GOT:Response: 503 Service Unavailable +{"deploy_templates": [{"uuid": "5f41fb12-11ea-471e-ab8c-670bdf729096", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/5f41fb12-11ea-471e-ab8c-670bdf729096", "rel": "self"}, {"href": "http://localhost/deploy_templates/5f41fb12-11ea-471e-ab8c-670bdf729096", "rel": "bookmark"}]}]} +API ACL Testing Path get /v1/deploy_templates +GET: /v1/deploy_templates {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b18af33e-8d79-44ab-9a90-dacdcdcecbd7 +Openstack-Request-Id: req-1e53a39e-8c62-4792-a99e-9918008ad8b4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"deploy_templates": [{"uuid": "d857a429-10d9-484b-a0bf-650e753a8a85", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/d857a429-10d9-484b-a0bf-650e753a8a85", "rel": "self"}, {"href": "http://localhost/deploy_templates/d857a429-10d9-484b-a0bf-650e753a8a85", "rel": "bookmark"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b18af33e-8d79-44ab-9a90-dacdcdcecbd7 +Openstack-Request-Id: req-1e53a39e-8c62-4792-a99e-9918008ad8b4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 None -GOT:Response: 503 Service Unavailable +{"deploy_templates": [{"uuid": "d857a429-10d9-484b-a0bf-650e753a8a85", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/d857a429-10d9-484b-a0bf-650e753a8a85", "rel": "self"}, {"href": "http://localhost/deploy_templates/d857a429-10d9-484b-a0bf-650e753a8a85", "rel": "bookmark"}]}]} +API ACL Testing Path get /v1/deploy_templates/b2facb2b-035e-488e-850d-4ec1dccd1fdc +GET: /v1/deploy_templates/b2facb2b-035e-488e-850d-4ec1dccd1fdc {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-82c5c8a1-f18a-42d1-a346-30af3367d87a +Openstack-Request-Id: req-6bbedd38-6bb0-431a-a466-afcfebfbf671 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"uuid": "b2facb2b-035e-488e-850d-4ec1dccd1fdc", "created_at": "2024-01-06T14:13:38.028499+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/b2facb2b-035e-488e-850d-4ec1dccd1fdc", "rel": "self"}, {"href": "http://localhost/deploy_templates/b2facb2b-035e-488e-850d-4ec1dccd1fdc", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-82c5c8a1-f18a-42d1-a346-30af3367d87a +Openstack-Request-Id: req-6bbedd38-6bb0-431a-a466-afcfebfbf671 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 None -GOT:Response: 403 Forbidden +{"uuid": "b2facb2b-035e-488e-850d-4ec1dccd1fdc", "created_at": "2024-01-06T14:13:38.028499+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/b2facb2b-035e-488e-850d-4ec1dccd1fdc", "rel": "self"}, {"href": "http://localhost/deploy_templates/b2facb2b-035e-488e-850d-4ec1dccd1fdc", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +API ACL Testing Path get /v1/deploy_templates/7393ef37-d12e-4940-9186-39150b775499 +GET: /v1/deploy_templates/7393ef37-d12e-4940-9186-39150b775499 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b2ab095f-721c-4560-9f45-d70095c63ecf +Openstack-Request-Id: req-945fcbf9-7a0b-4671-8aad-7754a762b029 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "7393ef37-d12e-4940-9186-39150b775499", "created_at": "2024-01-06T14:13:38.262505+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/7393ef37-d12e-4940-9186-39150b775499", "rel": "self"}, {"href": "http://localhost/deploy_templates/7393ef37-d12e-4940-9186-39150b775499", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-b2ab095f-721c-4560-9f45-d70095c63ecf +Openstack-Request-Id: req-945fcbf9-7a0b-4671-8aad-7754a762b029 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 None -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_241_lessee_admin_cannot_put_custom_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_241_lessee_admin_cannot_put_custom_traits ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_deploy_interface -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_deploy_interface ... ok -ironic.tests.unit.conductor.test_base_manager.MiscTestCase.test__fail_transient_state_maintenance -ironic.tests.unit.conductor.test_base_manager.MiscTestCase.test__fail_transient_state_maintenance ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__is_realtime_ready -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__is_realtime_ready ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_242_lessee_manager_cannot_put_custom_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_242_lessee_manager_cannot_put_custom_traits ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__query_raid_tasks_status -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__query_raid_tasks_status ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__query_raid_tasks_status_no_task_monitor_url -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__query_raid_tasks_status_no_task_monitor_url ... ok -ironic.tests.unit.conductor.test_base_manager.RegisterInterfacesTestCase.test__register_and_validate_hardware_interfaces -ironic.tests.unit.conductor.test_base_manager.RegisterInterfacesTestCase.test__register_and_validate_hardware_interfaces ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_243_lessee_member_cannot_put_custom_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_243_lessee_member_cannot_put_custom_traits ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready_retry_exceeded -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready_retry_exceeded ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_driver_interfaces -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_driver_interfaces ... ok -ironic.tests.unit.conductor.test_base_manager.RegisterInterfacesTestCase.test__register_and_validate_no_valid_default -ironic.tests.unit.conductor.test_base_manager.RegisterInterfacesTestCase.test__register_and_validate_no_valid_default ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready_retry_fails -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready_retry_fails ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_get_properties -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_get_properties ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_244_third_party_admin_cannot_put_custom_traits -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_244_third_party_admin_cannot_put_custom_traits ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_failed_clean -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_failed_clean ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_inspect_interface -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_inspect_interface ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_failed_deploy -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_failed_deploy ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_boot_device -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_boot_device ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_all -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_all ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_success_clean -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_success_clean ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_245_owner_reader_get_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_245_owner_reader_get_vifs ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_indicator_state -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_indicator_state ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_properties -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_properties ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_success_deploy -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_success_deploy ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_async -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_async ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_246_lessee_reader_get_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_246_lessee_reader_get_vifs ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__wait_till_realtime_ready -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__wait_till_realtime_ready ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_supported_boot_devices -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_supported_boot_devices ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__wait_till_realtime_ready_retryerror -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__wait_till_realtime_ready_retryerror ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_supported_indicators -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_supported_indicators ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_247_third_party_admin_cannot_get_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_247_third_party_admin_cannot_get_vifs ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_create_configuration -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_create_configuration ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_continue_from_last_step -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_continue_from_last_step ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_device_fail -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_device_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_delete_configuration -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_delete_configuration ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_device_good -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_device_good ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_248_owner_admin_can_post_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_248_owner_admin_can_post_vifs ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_foreign_async -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_foreign_async ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_dynamic -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_dynamic ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_mode_good -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_mode_good ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_foreign_sync -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_foreign_sync ... ok -GOT:Response: 403 Forbidden +{"uuid": "7393ef37-d12e-4940-9186-39150b775499", "created_at": "2024-01-06T14:13:38.262505+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/7393ef37-d12e-4940-9186-39150b775499", "rel": "self"}, {"href": "http://localhost/deploy_templates/7393ef37-d12e-4940-9186-39150b775499", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +API ACL Testing Path get /v1/deploy_templates/06a7b9e7-8ce3-4817-936c-e879f7700c41 +GET: /v1/deploy_templates/06a7b9e7-8ce3-4817-936c-e879f7700c41 {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-09729fcf-85d4-4be9-a343-c9af98e28d91 +Openstack-Request-Id: req-2928c12c-e355-46a4-aca2-3c005f7e8b40 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "06a7b9e7-8ce3-4817-936c-e879f7700c41", "created_at": "2024-01-06T14:13:38.530851+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/06a7b9e7-8ce3-4817-936c-e879f7700c41", "rel": "self"}, {"href": "http://localhost/deploy_templates/06a7b9e7-8ce3-4817-936c-e879f7700c41", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-09729fcf-85d4-4be9-a343-c9af98e28d91 +Openstack-Request-Id: req-2928c12c-e355-46a4-aca2-3c005f7e8b40 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 None -GOT:Response: 403 Forbidden +{"uuid": "06a7b9e7-8ce3-4817-936c-e879f7700c41", "created_at": "2024-01-06T14:13:38.530851+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/06a7b9e7-8ce3-4817-936c-e879f7700c41", "rel": "self"}, {"href": "http://localhost/deploy_templates/06a7b9e7-8ce3-4817-936c-e879f7700c41", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +API ACL Testing Path patch /v1/deploy_templates/4acaca9f-18da-4da7-a9ac-32ee204c6082 +PATCH: /v1/deploy_templates/4acaca9f-18da-4da7-a9ac-32ee204c6082 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-da4829cf-988a-4c0c-8aff-269c1737ffe3 +Openstack-Request-Id: req-5080e913-5393-431b-b086-be92e5f2723f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"uuid": "4acaca9f-18da-4da7-a9ac-32ee204c6082", "created_at": "2024-01-06T14:13:38.843324+00:00", "updated_at": "2024-01-06T14:13:38.975773+00:00", "name": "CUSTOM_MAGIC", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/4acaca9f-18da-4da7-a9ac-32ee204c6082", "rel": "self"}, {"href": "http://localhost/deploy_templates/4acaca9f-18da-4da7-a9ac-32ee204c6082", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_275_deploy_templates_deploy_template_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_275_deploy_templates_deploy_template_id_patch_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__save_vif_to_port_like_obj_port +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__save_vif_to_port_like_obj_port ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_336_third_party_admin_cannot_get_ports_by_portgroup +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_336_third_party_admin_cannot_get_ports_by_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_297_chassis_chassis_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_297_chassis_chassis_id_delete_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_276_deploy_templates_deploy_template_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_276_deploy_templates_deploy_template_id_patch_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__save_vif_to_port_like_obj_portgroup +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__save_vif_to_port_like_obj_portgroup ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_cleaning +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_337_owner_reader_can_list_volume_connectors +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_337_owner_reader_can_list_volume_connectors ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_298_chassis_chassis_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_298_chassis_chassis_id_delete_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_277_deploy_templates_deploy_template_id_patch_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_277_deploy_templates_deploy_template_id_patch_reader ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_provisioning +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_provisioning ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_299_chassis_chassis_id_delete_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_299_chassis_chassis_id_delete_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_278_deploy_templates_deploy_template_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_278_deploy_templates_deploy_template_id_delete_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_rescuing +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_rescuing ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-da4829cf-988a-4c0c-8aff-269c1737ffe3 +Openstack-Request-Id: req-14442395-b500-431f-b78c-ac70d0d5164b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 None -GOT:Response: 403 Forbidden +{"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"}]}]} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6ffa13e9-b9e6-45a7-8324-bbf9b1aaeb5a +Openstack-Request-Id: req-e2e388e6-d725-4a4b-a03f-6796917520b2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6ffa13e9-b9e6-45a7-8324-bbf9b1aaeb5a +Openstack-Request-Id: req-e2e388e6-d725-4a4b-a03f-6796917520b2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 None +{"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"}]}]} +API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports +GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f0189ccd-6500-4d93-a22b-fe2d62c2d470 +Openstack-Request-Id: req-90bbe5a4-d304-4d00-90f3-229f2d247129 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f0189ccd-6500-4d93-a22b-fe2d62c2d470 +Openstack-Request-Id: req-90bbe5a4-d304-4d00-90f3-229f2d247129 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {} -GOT:Response: 503 Service Unavailable +API ACL Testing Path get /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc/ports +GET: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3675ac51-50a6-4c04-a6e4-11e619017154 +Openstack-Request-Id: req-c2552fc8-2120-470f-8aee-4de8975a25ab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"ports": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3675ac51-50a6-4c04-a6e4-11e619017154 +Openstack-Request-Id: req-c2552fc8-2120-470f-8aee-4de8975a25ab X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs {} -GOT:Response: 503 Service Unavailable +{"ports": []} +API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports +GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-fc93368a-f28a-4765-bb64-decd00da2982 +Openstack-Request-Id: req-c4a3e7a2-50ba-4745-840c-4e3d3eff98d5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"ports": []} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-fc93368a-f28a-4765-bb64-decd00da2982 +Openstack-Request-Id: req-c4a3e7a2-50ba-4745-840c-4e3d3eff98d5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {} +{"ports": []} +API ACL Testing Path get /v1/portgroups/5810f41c-6585-41fc-b9c9-a94f50d421b5/ports +GET: /v1/portgroups/5810f41c-6585-41fc-b9c9-a94f50d421b5/ports {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-56adf544-1acb-4147-bf4c-d253312c3148 +Openstack-Request-Id: req-f84b7c43-e079-434b-8e5d-941fe8c1cfb6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 5810f41c-6585-41fc-b9c9-a94f50d421b5 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-56adf544-1acb-4147-bf4c-d253312c3148 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs -POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-54284852-a819-4db8-8668-97afa32237c5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-54284852-a819-4db8-8668-97afa32237c5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs -POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_249_owner_manager_can_post_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_249_owner_manager_can_post_vifs ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_indicator_state_good -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_indicator_state_good ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_no_subtasks -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_no_subtasks ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_pre_create_configuration -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_pre_create_configuration ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_validate -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_validate ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_fast_track -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_fast_track ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_validate_correct_vendor -ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_validate_correct_vendor ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_250_lessee_admin_can_post_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_250_lessee_admin_can_post_vifs ... ok -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_power_interface -ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_power_interface ... ok -ironic.tests.unit.objects.test_fields.TestNotificationLevelField.test_coerce_bad_value -ironic.tests.unit.objects.test_fields.TestNotificationLevelField.test_coerce_bad_value ... ok -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_in_deploywait -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_in_deploywait ... ok -ironic.tests.unit.objects.test_fields.TestNotificationLevelField.test_coerce_good_value -ironic.tests.unit.objects.test_fields.TestNotificationLevelField.test_coerce_good_value ... ok -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot_fail -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_251_lessee_manager_can_post_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_251_lessee_manager_can_post_vifs ... ok -ironic.tests.unit.objects.test_fields.TestNotificationStatusField.test_coerce_bad_value -ironic.tests.unit.objects.test_fields.TestNotificationStatusField.test_coerce_bad_value ... ok -ironic.tests.unit.objects.test_fields.TestNotificationStatusField.test_coerce_good_value -ironic.tests.unit.objects.test_fields.TestNotificationStatusField.test_coerce_good_value ... ok -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot_not_reached -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot_not_reached ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_supported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_supported_missing ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_supported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_supported_set ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_252_owner_member_can_post_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_252_owner_member_can_post_vifs ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_missing ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_no_remove_default ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_253_lessee_member_cannot_post_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_253_lessee_member_cannot_post_vifs ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_remove ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_supported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_supported_missing ... ok -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot_timeout -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerRebootTestCase.test_reboot_timeout ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_supported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_supported_set ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_254_owner_reader_cannot_post_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_254_owner_reader_cannot_post_vifs ... ok -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_get_power_state -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_get_power_state ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_missing ... ok -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_get_properties -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_get_properties ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_no_remove_default ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done_with_console -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done_with_console ... ok -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_get_supported_power_states -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_get_supported_power_states ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_255_lessee_reader_cannot_post_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_255_lessee_reader_cannot_post_vifs ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_remove ... ok -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_supported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_supported_missing ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done_with_console_error -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done_with_console_error ... ok -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state_fail -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state_fail ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_supported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_supported_set ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_256_third_party_admin_cannot_post_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_256_third_party_admin_cannot_post_vifs ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_missing ... ok -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state_not_reached -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state_not_reached ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_no_remove_default ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_none -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_none ... ok -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state_timeout -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state_timeout ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_remove ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_supported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_supported_missing ... ok -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-7715e3e4-1914-4ea9-90b2-cbf0256d3f0e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-7715e3e4-1914-4ea9-90b2-cbf0256d3f0e +Openstack-Request-Id: req-f84b7c43-e079-434b-8e5d-941fe8c1cfb6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs -POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-0390cb94-b00a-4ca3-8357-8d76d71cb195 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-0390cb94-b00a-4ca3-8357-8d76d71cb195 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs -POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-93a73a0d-0419-4dd3-b986-5d37e6a14f9d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-93a73a0d-0419-4dd3-b986-5d37e6a14f9d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs -POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 5810f41c-6585-41fc-b9c9-a94f50d421b5 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-214fb679-a03e-428a-a33b-57f32044236d +Openstack-Request-Id: req-42e0996b-e927-4043-bc39-6e8371476453 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"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": "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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-214fb679-a03e-428a-a33b-57f32044236d +Openstack-Request-Id: req-42e0996b-e927-4043-bc39-6e8371476453 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs -POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 403 Forbidden +{"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": "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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9063b771-7d42-44ef-b61c-878f50768be5 +Openstack-Request-Id: req-52d00e6b-b159-4919-8205-5ea821d14c6d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_338_lessee_reader_can_list_volume_connectors +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_338_lessee_reader_can_list_volume_connectors ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_tenant_vif +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_tenant_vif ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_300_node_history_get_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_300_node_history_get_admin ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_339_third_party_admin_cannot_get_connector_list +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_339_third_party_admin_cannot_get_connector_list ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_279_deploy_templates_deploy_template_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_279_deploy_templates_deploy_template_id_delete_member ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_none +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_none ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_extra_and_internal_priority +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_extra_and_internal_priority ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_301_node_history_get_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_301_node_history_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_280_deploy_templates_deploy_template_id_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_280_deploy_templates_deploy_template_id_delete_reader ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_340_owner_admin_can_post_volume_connector +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_340_owner_admin_can_post_volume_connector ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_internal +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_internal ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_302_node_history_get_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_302_node_history_get_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_281_chassis_post_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_281_chassis_post_admin ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_port_and_portgroup +ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_port_and_portgroup ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_341_owner_manager_can_post_volume_connector +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_341_owner_manager_can_post_volume_connector ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_cleaning_network +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_cleaning_network ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_303_node_history_get_entry_admin +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_303_node_history_get_entry_admin ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_inspection_network +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_inspection_network ... ok +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9063b771-7d42-44ef-b61c-878f50768be5 +Openstack-Request-Id: req-5080e913-5393-431b-b086-be92e5f2723f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs -POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +{"uuid": "4acaca9f-18da-4da7-a9ac-32ee204c6082", "created_at": "2024-01-06T14:13:38.843324+00:00", "updated_at": "2024-01-06T14:13:38.975773+00:00", "name": "CUSTOM_MAGIC", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/4acaca9f-18da-4da7-a9ac-32ee204c6082", "rel": "self"}, {"href": "http://localhost/deploy_templates/4acaca9f-18da-4da7-a9ac-32ee204c6082", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} +API ACL Testing Path patch /v1/deploy_templates/d119e1bf-c596-4a86-b99c-4ab7d333b74d +PATCH: /v1/deploy_templates/d119e1bf-c596-4a86-b99c-4ab7d333b74d [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-72401371-83cf-4b4d-9917-cdeb9b2b8eb3 +Openstack-Request-Id: req-ea0b23d8-e658-428f-8b17-7a4ccfe19a10 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-72401371-83cf-4b4d-9917-cdeb9b2b8eb3 +Openstack-Request-Id: req-ea0b23d8-e658-428f-8b17-7a4ccfe19a10 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs -POST: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/deploy_templates/543cb84b-12dd-4da3-951a-0e53593fcbd7 +PATCH: /v1/deploy_templates/543cb84b-12dd-4da3-951a-0e53593fcbd7 [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1ff30b67-7709-4e1c-b193-b543e5e51365 +Openstack-Request-Id: req-91106712-7cc4-41b1-b22b-aac5f10857d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1ff30b67-7709-4e1c-b193-b543e5e51365 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs -POST: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-46aa09f5-3af3-4d3c-8f0f-a9b052f50d6e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-46aa09f5-3af3-4d3c-8f0f-a9b052f50d6e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 -DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_257_owner_admin_delete_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_257_owner_admin_delete_vifs ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy ... ok -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_validate -ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_validate ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_supported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_supported_set ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_exception -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_exception ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy_first_agent_boot -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy_first_agent_boot ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_no_remove_default ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_258_owner_manager_delete_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_258_owner_manager_delete_vifs ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_false -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_false ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_true -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_true ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy_no_skip_step -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy_no_skip_step ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_remove ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_supported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_supported_set ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_create -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_create ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_steps_validation -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_steps_validation ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_supported_unset -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_supported_unset ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_259_lessee_admin_can_delete_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_259_lessee_admin_can_delete_vifs ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_glance_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_glance_image ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_set ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_set_no_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_set_no_remove ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_http_url -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_http_url ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_unset -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_unset ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_260_lessee_manager_can_delete_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_260_lessee_manager_can_delete_vifs ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_agent_busy -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_agent_busy ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_swift_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_swift_image ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_supported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_supported_missing ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_supported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_supported_set ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__parse_deploy_info -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__parse_deploy_info ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_261_owner_member_can_delete_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_261_owner_member_can_delete_vifs ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__validate_driver_info -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__validate_driver_info ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_no_remove_default ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_bad_step_return_value -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_bad_step_return_value ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_262_lessee_member_cannot_delete_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_262_lessee_member_cannot_delete_vifs ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_remove ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__validate_instance_image_info -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__validate_instance_image_info ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_supported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_supported_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_supported_untouched -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_supported_untouched ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_263_third_party_admin_cannot_delete_vifs -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_263_third_party_admin_cannot_delete_vifs ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_exception -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_exception ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_inst_info -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_inst_info ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_set_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_set_remove ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_set_remove_in_maintenance -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_set_remove_in_maintenance ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_sec_boot_on -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_sec_boot_on ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_supported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_supported_missing ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_264_owner_readers_can_get_indicators -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_264_owner_readers_can_get_indicators ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_handled_exception -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_handled_exception ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_supported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_supported_set ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_sec_boot_on_inst_info -ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_sec_boot_on_inst_info ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_missing ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_no_remove_default ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test__configure_vmedia_boot_with_boot_iso -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test__configure_vmedia_boot_with_boot_iso ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_no_remove_non_default ... ok -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-9a00c4f4-b666-49ce-ac39-6d69f8989e80 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-9a00c4f4-b666-49ce-ac39-6d69f8989e80 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 -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-ec73bb26-7226-45bf-8cdd-be6478413a42 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-ec73bb26-7226-45bf-8cdd-be6478413a42 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 -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-2dcc2d28-0647-43b9-87bf-6e8d7b649405 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-2dcc2d28-0647-43b9-87bf-6e8d7b649405 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 -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-562e6372-52a0-4a77-8f3a-5d3337764158 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-562e6372-52a0-4a77-8f3a-5d3337764158 +Openstack-Request-Id: req-91106712-7cc4-41b1-b22b-aac5f10857d7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 -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-95878f53-ee75-4f25-bf00-501c4134d697 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/deploy_templates/2af06736-58fd-410d-b13b-ace84a6aae75 +DELETE: /v1/deploy_templates/2af06736-58fd-410d-b13b-ace84a6aae75 +GOT:Response: 204 No Content +Openstack-Request-Id: req-b8720e45-6866-4728-86c4-5971d79d6c6b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-95878f53-ee75-4f25-bf00-501c4134d697 + +ACL Test GOT Response: 204 No Content +Openstack-Request-Id: req-b8720e45-6866-4728-86c4-5971d79d6c6b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 -DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 + +API ACL Testing Path delete /v1/deploy_templates/634cebae-6962-46df-8086-b12592e6d9d5 +DELETE: /v1/deploy_templates/634cebae-6962-46df-8086-b12592e6d9d5 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6d34c5c6-5cde-4ebf-bdd0-44fec613f57f +Openstack-Request-Id: req-84ce78fe-106f-4f5c-9e21-3b5c77dfdae8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6d34c5c6-5cde-4ebf-bdd0-44fec613f57f -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 -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-f93e16f9-1b82-4854-b716-ce2e94193ad4 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-f93e16f9-1b82-4854-b716-ce2e94193ad4 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators {} -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-9c214a19-4e26-4897-9a86-31ea99b731c4 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-9c214a19-4e26-4897-9a86-31ea99b731c4 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/indicators -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/indicators {} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_265_lesse_readers_can_get_indicators -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_265_lesse_readers_can_get_indicators ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_ironic_exception -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_ironic_exception ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_remove ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_boot_from_volume -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_boot_from_volume ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_supported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_supported_missing ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_supported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_supported_set ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_266_third_party_admin_cannot_get_indicators -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_266_third_party_admin_cannot_get_indicators ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_boot_from_volume_bios -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_boot_from_volume_bios ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_missing ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_no_steps -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_no_steps ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_no_remove_default ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_deleting -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_deleting ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_267_owner_reader_can_get_indicator_status -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_267_owner_reader_can_get_indicator_status ... skipped 'API appears to be broken and should be patched outside of this work.' -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_rescuing -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_rescuing ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_remove ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_supported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_supported_missing ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_268_lessee_reader_not_get_indicator_status -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_268_lessee_reader_not_get_indicator_status ... skipped 'API appears to be broken and should be patched outside of this work.' -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_ramdisk -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_ramdisk ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_oob_reboot -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_oob_reboot ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_supported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_supported_set ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_from_volume -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_from_volume ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_269_owner_member_can_set_indicator -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_269_owner_member_can_set_indicator ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_from_volume_bios -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_from_volume_bios ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_set_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_set_remove ... ok -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_oob_reboot_fail -ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_oob_reboot_fail ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_supported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_supported_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_ramdisk -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_ramdisk ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_supported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_supported_set ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_missing ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_270_lessee_member_cannot_set_indicator -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_270_lessee_member_cannot_set_indicator ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_partition_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_partition_image ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_no_remove_default ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_db_error -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_db_error ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_whole_disk_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_whole_disk_image ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_remove ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_271_third_party_admin_cannot_set_indicator -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_271_third_party_admin_cannot_set_indicator ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_supported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_supported_missing ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_supported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_supported_set ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_swift_error -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_swift_error ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_missing ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_272_owner_reader_can_list_portgroups -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_272_owner_reader_can_list_portgroups ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_cleaning -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_cleaning ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_set_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_set_remove ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_273_lessee_reader_can_list_portgroups -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_273_lessee_reader_can_list_portgroups ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_trait_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_trait_unsupported_set_no_remove_default ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_unexpected_error -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_unexpected_error ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_trait_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_trait_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_in_takeover -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_in_takeover ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_supported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_supported_missing ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_supported_set -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_supported_set ... ok -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-2f2ac71d-f857-4b06-a7c6-b2e23f130819 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-2f2ac71d-f857-4b06-a7c6-b2e23f130819 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-b7d7b978-49b6-40a6-9759-1095f78cefc5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-b7d7b978-49b6-40a6-9759-1095f78cefc5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators/component/magic_light -PUT: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators/component/magic_light None -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-b1dec44c-5ab8-4780-8ceb-1f3065449ec2 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-b1dec44c-5ab8-4780-8ceb-1f3065449ec2 +Openstack-Request-Id: req-84ce78fe-106f-4f5c-9e21-3b5c77dfdae8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/indicators/component/magic_light -PUT: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/indicators/component/magic_light None +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/deploy_templates/98f7477e-d0c7-47f2-8fed-d8f9d8a05327 +DELETE: /v1/deploy_templates/98f7477e-d0c7-47f2-8fed-d8f9d8a05327 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d4cd7e4f-4d1c-41bb-a8d1-62a91a80d240 +Openstack-Request-Id: req-5486c3a9-a3f2-4a78-afd3-dbfbcf1f234a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_indicator_state\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-d4cd7e4f-4d1c-41bb-a8d1-62a91a80d240 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_indicator_state\", \"debuginfo\": null}"} -API ACL Testing Path put /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/component/magic_light -PUT: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/component/magic_light None -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-4c104672-564b-4661-80b2-12740224f812 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-4c104672-564b-4661-80b2-12740224f812 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-a85ccf8c-1e84-4289-a9e2-707e3d708dce -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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": "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"}]}]} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-a85ccf8c-1e84-4289-a9e2-707e3d708dce -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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": "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"}]}]} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-2c606ab6-1e61-48ac-add0-8866068112c4 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-2c606ab6-1e61-48ac-add0-8866068112c4 +Openstack-Request-Id: req-5486c3a9-a3f2-4a78-afd3-dbfbcf1f234a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/portgroups -GET: /v1/portgroups {} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_274_third_party_admin_cannot_list_portgroups -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_274_third_party_admin_cannot_list_portgroups ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_a_glance_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_a_glance_image ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_unsupported_missing -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_unsupported_missing ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_ironic_exception -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_ironic_exception ... ok -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_unsupported_missing_remove -ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_unsupported_missing_remove ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_a_glance_image_cleaning -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_a_glance_image_cleaning ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_api -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_api ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_275_owner_reader_can_read_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_275_owner_reader_can_read_portgroup ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_conductor -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_conductor ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_iso -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_iso ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_convert_api -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_convert_api ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_raises_error_old -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_raises_error_old ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_convert_conductor -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_convert_conductor ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_276_lessee_reader_can_read_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_276_lessee_reader_can_read_portgroup ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_revision_does_not_backport -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_revision_does_not_backport ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_rescue_glance_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_rescue_glance_image ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_revision_does_not_backport_zero -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_revision_does_not_backport_zero ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_version_backports -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_version_backports ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_version_passes_revision -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_version_passes_revision ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_rescue_not_a_glance_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_rescue_not_a_glance_image ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_277_third_party_admin_cannot_read_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_277_third_party_admin_cannot_read_portgroup ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_pin_ignored -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_pin_ignored ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_raises_prepare_error -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_raises_prepare_error ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_same_revision_does_not_backport -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_same_revision_does_not_backport ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_object_serialization -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_object_serialization ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_object_serialization_iterables -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_object_serialization_iterables ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_boot_from_volume -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_boot_from_volume ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_278_owner_admin_can_add_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_278_owner_admin_can_add_portgroup ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_invalid_pin -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_invalid_pin ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_unexpected_exception -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_unexpected_exception ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_pinned_api -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_pinned_api ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_inspection -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_inspection ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_pinned_conductor -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_pinned_conductor ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_unpinned_api -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_unpinned_api ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_inspection_missing -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_inspection_missing ... ok -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_unpinned_conductor -ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_unpinned_conductor ... ok -ironic.tests.unit.objects.test_objects.TestObjectVersions.test_object_version_check -ironic.tests.unit.objects.test_objects.TestObjectVersions.test_object_version_check ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_fast_track -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_fast_track ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_glance -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_glance ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported ... ok -GOT:Response: 200 OK +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/chassis +POST: /v1/chassis {'description': 'test-chassis'} +GOT:Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-e6160311-d646-4a0a-aeb0-5f59e538aa43 +Location: http://localhost/v1/chassis/fe12f192-65bb-44ee-bde3-11c0f6149275 +Openstack-Request-Id: req-4f19c83b-02d2-48d3-a068-7542aeaeef67 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": []} -ACL Test GOT Response: 200 OK +{"uuid": "fe12f192-65bb-44ee-bde3-11c0f6149275", "created_at": "2024-01-06T14:13:40.432021+00:00", "updated_at": null, "description": "test-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/fe12f192-65bb-44ee-bde3-11c0f6149275", "rel": "self"}, {"href": "http://localhost/chassis/fe12f192-65bb-44ee-bde3-11c0f6149275", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/fe12f192-65bb-44ee-bde3-11c0f6149275/nodes", "rel": "self"}, {"href": "http://localhost/chassis/fe12f192-65bb-44ee-bde3-11c0f6149275/nodes", "rel": "bookmark"}]]} +ACL Test GOT Response: 201 Created Content-Type: application/json -Openstack-Request-Id: req-e6160311-d646-4a0a-aeb0-5f59e538aa43 +Location: http://localhost/v1/chassis/fe12f192-65bb-44ee-bde3-11c0f6149275 +Openstack-Request-Id: req-4f19c83b-02d2-48d3-a068-7542aeaeef67 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"portgroups": []} -API ACL Testing Path get /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc -GET: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc {} -GOT:Response: 200 OK +{"uuid": "fe12f192-65bb-44ee-bde3-11c0f6149275", "created_at": "2024-01-06T14:13:40.432021+00:00", "updated_at": null, "description": "test-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/fe12f192-65bb-44ee-bde3-11c0f6149275", "rel": "self"}, {"href": "http://localhost/chassis/fe12f192-65bb-44ee-bde3-11c0f6149275", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/fe12f192-65bb-44ee-bde3-11c0f6149275/nodes", "rel": "self"}, {"href": "http://localhost/chassis/fe12f192-65bb-44ee-bde3-11c0f6149275/nodes", "rel": "bookmark"}]]} +API ACL Testing Path post /v1/chassis +POST: /v1/chassis {'description': 'test-chassis'} +GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-94277d42-f06e-4b2d-b65c-7df15bbb78bf +Openstack-Request-Id: req-684251db-c3e1-4d98-b456-54b4a135a829 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "created_at": "2024-01-06T13:42:42.177090+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, "links": [{"href": "http://localhost/v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "self"}, {"href": "http://localhost/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "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"}]} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_282_chassis_post_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_282_chassis_post_member ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_342_lessee_admin_cannot_post_volume_connector +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_342_lessee_admin_cannot_post_volume_connector ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_304_node_history_get_entry_member +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_304_node_history_get_entry_member ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_provisioning_network +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_provisioning_network ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_283_chassis_post_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_283_chassis_post_reader ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_configure_tenant_networks +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_configure_tenant_networks ... ok +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_305_node_history_get_entry_observer +ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_305_node_history_get_entry_observer ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_343_lessee_manager_cannot_post_volume_connector +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_343_lessee_manager_cannot_post_volume_connector ... ok +ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_get_arg +ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_get_arg ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_284_chassis_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_284_chassis_get_admin ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_current_vif +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_current_vif ... ok +ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_set_arg_types +ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_set_arg_types ... ok +ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_signature +ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_signature ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_node_network_data +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_node_network_data ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_344_third_party_admin_cannot_post_volume_connector +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_344_third_party_admin_cannot_post_volume_connector ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_properties +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_properties ... ok +ironic.tests.unit.api.test_healthcheck.TestHealthcheckMiddleware.test_disable +ironic.tests.unit.api.test_healthcheck.TestHealthcheckMiddleware.test_disable ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_285_chassis_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_285_chassis_get_member ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_port_changed +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_port_changed ... ok +ironic.tests.unit.api.test_healthcheck.TestHealthcheckMiddleware.test_enable +ironic.tests.unit.api.test_healthcheck.TestHealthcheckMiddleware.test_enable ... ok +ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema +ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_portgroup_changed +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_portgroup_changed ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_286_chassis_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_286_chassis_get_reader ... ok +ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_args +ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_args ... ok ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-94277d42-f06e-4b2d-b65c-7df15bbb78bf +Openstack-Request-Id: req-52d00e6b-b159-4919-8205-5ea821d14c6d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "created_at": "2024-01-06T13:42:42.177090+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, "links": [{"href": "http://localhost/v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "self"}, {"href": "http://localhost/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "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"}]} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 {} +{"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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} +API ACL Testing Path get /v1/volume/connectors +GET: /v1/volume/connectors {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2284c8c4-7918-446b-a783-1424ad067e81 +Openstack-Request-Id: req-6b8e494c-f1d6-453f-9233-2ff3079c5d49 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:42:42.877398+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "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"}]} +{"connectors": []} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-2284c8c4-7918-446b-a783-1424ad067e81 +Openstack-Request-Id: req-6b8e494c-f1d6-453f-9233-2ff3079c5d49 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2024-01-06T13:42:42.877398+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, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "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"}]} -API ACL Testing Path get /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc -GET: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-65fa570f-dcb1-46ba-a8ae-42ad394bf1ee -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-65fa570f-dcb1-46ba-a8ae-42ad394bf1ee -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} +{"connectors": []} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'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/portgroups/3081e773-346f-4e63-a047-944e394cc407 -Openstack-Request-Id: req-921cf087-ae6b-45c9-9b17-5094fdfe35d3 +Location: http://localhost/v1/volume/connectors/4b5a1284-cdfa-4bd1-b641-4ca8f6a7121d +Openstack-Request-Id: req-2809a7cf-3ca2-4baa-83eb-2576d57c3dc6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "3081e773-346f-4e63-a047-944e394cc407", "created_at": "2024-01-06T13:42:44.199632+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/3081e773-346f-4e63-a047-944e394cc407", "rel": "self"}, {"href": "http://localhost/portgroups/3081e773-346f-4e63-a047-944e394cc407", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "ports": [{"href": "http://localhost/v1/portgroups/3081e773-346f-4e63-a047-944e394cc407/ports", "rel": "self"}, {"href": "http://localhost/portgroups/3081e773-346f-4e63-a047-944e394cc407/ports", "rel": "bookmark"}]} +{"uuid": "4b5a1284-cdfa-4bd1-b641-4ca8f6a7121d", "created_at": "2024-01-06T14:13:40.262714+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/4b5a1284-cdfa-4bd1-b641-4ca8f6a7121d", "rel": "self"}, {"href": "http://localhost/volume/connectors/4b5a1284-cdfa-4bd1-b641-4ca8f6a7121d", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} ACL Test GOT Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/portgroups/3081e773-346f-4e63-a047-944e394cc407 -Openstack-Request-Id: req-921cf087-ae6b-45c9-9b17-5094fdfe35d3 +Location: http://localhost/v1/volume/connectors/4b5a1284-cdfa-4bd1-b641-4ca8f6a7121d +Openstack-Request-Id: req-2809a7cf-3ca2-4baa-83eb-2576d57c3dc6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "3081e773-346f-4e63-a047-944e394cc407", "created_at": "2024-01-06T13:42:44.199632+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/3081e773-346f-4e63-a047-944e394cc407", "rel": "self"}, {"href": "http://localhost/portgroups/3081e773-346f-4e63-a047-944e394cc407", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "ports": [{"href": "http://localhost/v1/portgroups/3081e773-346f-4e63-a047-944e394cc407/ports", "rel": "self"}, {"href": "http://localhost/portgroups/3081e773-346f-4e63-a047-944e394cc407/ports", "rel": "bookmark"}]} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_279_owner_manager_can_add_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_279_owner_manager_can_add_portgroup ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported_missing -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported_missing ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported_set -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported_set ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_webserver -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_webserver ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_280_owner_member_cannot_add_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_280_owner_member_cannot_add_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_webserver_exc -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_webserver_exc ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_missing -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_no_remove_default ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_281_lessee_admin_cannot_add_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_281_lessee_admin_cannot_add_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue_deprecated -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue_deprecated ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_remove -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_remove ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok_2 -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok_2 ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_supported_missing -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_supported_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue_no_rescue_ramdisk -ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue_no_rescue_ramdisk ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_supported_set -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_supported_set ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_282_lessee_manager_cannot_add_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_282_lessee_manager_cannot_add_portgroup ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_missing -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_no_remove_default ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_empty -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_empty ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok_configdrive -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok_configdrive ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_empty_no_path -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_empty_no_path ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_remove -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_remove ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_283_lessee_member_cannot_add_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_283_lessee_member_cannot_add_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_none -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_none ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_supported_missing -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_supported_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_string_type -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_string_type ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_supported_set -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_supported_set ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_unexpected_prepare_error -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_unexpected_prepare_error ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_floppy_image_name -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_floppy_image_name ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_missing -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_missing ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_284_third_party_admin_cannot_add_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_284_third_party_admin_cannot_add_portgroup ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_no_remove_default ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__prepare_floppy_image -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__prepare_floppy_image ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_remove -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_remove ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_do_node_deploy_steps -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_do_node_deploy_steps ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__prepare_floppy_image_use_webserver -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__prepare_floppy_image_use_webserver ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_285_owner_admin_can_modify_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_285_owner_admin_can_modify_portgroup ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_in_internal_info -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_in_internal_info ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_None -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_None ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_lower_version -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_lower_version ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy ... ok -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_not_in_extra -ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_not_in_extra ... ok -{'deploy_kernel': ('deploy_kernel', '/tmp/tmp6gzhrf55/tmpe29jfypi/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/deploy_kernel'), 'deploy_ramdisk': ('deploy_ramdisk', '/tmp/tmp6gzhrf55/tmpe29jfypi/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/deploy_ramdisk')} -[NodeHistory(conductor='fake-mini',created_at=2024-01-06T13:35:28Z,event='three',event_type='UNKNOWN',id=3,node_id=10,severity='INFO',updated_at=None,user=None,uuid=383fa414-2e50-4d59-97ea-6a8e11148569), NodeHistory(conductor='fake-mini',created_at=2024-01-06T13:35:28Z,event='two',event_type='UNKNOWN',id=5,node_id=11,severity='INFO',updated_at=None,user=None,uuid=3e8253c5-3f72-4834-b0d3-ca8105e6a59c), NodeHistory(conductor='fake-mini',created_at=2024-01-06T13:35:28Z,event='three',event_type='UNKNOWN',id=6,node_id=11,severity='INFO',updated_at=None,user=None,uuid=bc03cafd-92d5-4f2b-a63b-5393dfece507), NodeHistory(conductor='fake-mini',created_at=2024-01-06T13:35:28Z,event='two',event_type='UNKNOWN',id=8,node_id=12,severity='INFO',updated_at=None,user=None,uuid=08685a02-32ef-4e3f-b2f4-91300d3384f1), NodeHistory(conductor='fake-mini',created_at=2024-01-06T13:35:28Z,event='three',event_type='UNKNOWN',id=9,node_id=12,severity='INFO',updated_at=None,user=None,uuid=3bd0ae52-46b9-43dd-a067-7faba35b3e34), NodeHistory(conductor='fake-mini',created_at=2024-01-06T13:35:28Z,event='final',event_type='UNKNOWN',id=10,node_id=10,severity='INFO',updated_at=None,user=None,uuid=b8cf93a9-4ada-4a3d-bf69-a42792906d73)] -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_false -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_false ... ok +{"uuid": "4b5a1284-cdfa-4bd1-b641-4ca8f6a7121d", "created_at": "2024-01-06T14:13:40.262714+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/4b5a1284-cdfa-4bd1-b641-4ca8f6a7121d", "rel": "self"}, {"href": "http://localhost/volume/connectors/4b5a1284-cdfa-4bd1-b641-4ca8f6a7121d", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'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/portgroups/55d4be3d-4e03-4804-8866-17213681d1af -Openstack-Request-Id: req-9a5311d9-eccb-4e80-83d9-a4417c032677 +Location: http://localhost/v1/volume/connectors/86f0b23f-84ca-4c19-a009-8e5ec7bc3df8 +Openstack-Request-Id: req-f8e579ba-d2cf-4896-941a-d94d88b6314e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "55d4be3d-4e03-4804-8866-17213681d1af", "created_at": "2024-01-06T13:42:45.032707+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/55d4be3d-4e03-4804-8866-17213681d1af", "rel": "self"}, {"href": "http://localhost/portgroups/55d4be3d-4e03-4804-8866-17213681d1af", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "ports": [{"href": "http://localhost/v1/portgroups/55d4be3d-4e03-4804-8866-17213681d1af/ports", "rel": "self"}, {"href": "http://localhost/portgroups/55d4be3d-4e03-4804-8866-17213681d1af/ports", "rel": "bookmark"}]} +{"uuid": "86f0b23f-84ca-4c19-a009-8e5ec7bc3df8", "created_at": "2024-01-06T14:13:40.538711+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/86f0b23f-84ca-4c19-a009-8e5ec7bc3df8", "rel": "self"}, {"href": "http://localhost/volume/connectors/86f0b23f-84ca-4c19-a009-8e5ec7bc3df8", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} ACL Test GOT Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/portgroups/55d4be3d-4e03-4804-8866-17213681d1af -Openstack-Request-Id: req-9a5311d9-eccb-4e80-83d9-a4417c032677 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "55d4be3d-4e03-4804-8866-17213681d1af", "created_at": "2024-01-06T13:42:45.032707+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "links": [{"href": "http://localhost/v1/portgroups/55d4be3d-4e03-4804-8866-17213681d1af", "rel": "self"}, {"href": "http://localhost/portgroups/55d4be3d-4e03-4804-8866-17213681d1af", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "ports": [{"href": "http://localhost/v1/portgroups/55d4be3d-4e03-4804-8866-17213681d1af/ports", "rel": "self"}, {"href": "http://localhost/portgroups/55d4be3d-4e03-4804-8866-17213681d1af/ports", "rel": "bookmark"}]} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-4f4c4fa3-e454-4372-b5db-3a0b2539ede0 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-4f4c4fa3-e454-4372-b5db-3a0b2539ede0 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f'} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-b0157404-a4d8-4e2f-ac99-5249ce5dba7c -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-b0157404-a4d8-4e2f-ac99-5249ce5dba7c -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f'} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-7deddc77-c7ad-4aae-9050-6087e05e88c5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-7deddc77-c7ad-4aae-9050-6087e05e88c5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f'} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-21888e21-cb41-4984-b28b-299532438597 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-21888e21-cb41-4984-b28b-299532438597 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/portgroups -POST: /v1/portgroups {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f'} -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-ec07aeb7-54ab-49f8-9391-0b559f4f6f74 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-ec07aeb7-54ab-49f8-9391-0b559f4f6f74 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc -PATCH: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-5c324437-2b74-4df2-a2cf-230bf96592ab -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-5c324437-2b74-4df2-a2cf-230bf96592ab -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc -PATCH: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_286_owner_manager_can_modify_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_286_owner_manager_can_modify_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_invalid -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_invalid ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_records_lessee -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_records_lessee ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_287_owner_member_cannot_modify_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_287_owner_member_cannot_modify_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_raises_ilo_error -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_raises_ilo_error ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_true -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_true ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_288_lessee_admin_cannot_modify_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_288_lessee_admin_cannot_modify_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_true_default -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_true_default ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_source_path -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_source_path ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_attach_vmedia -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_attach_vmedia ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_attach_vmedia_fails -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_attach_vmedia_fails ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_289_lessee_manager_cannot_modify_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_289_lessee_manager_cannot_modify_portgroup ... ok -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_source_path_none -ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_source_path_none ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_290_lessee_member_cannot_modify_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_290_lessee_member_cannot_modify_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_exc -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_exc ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_exception_getting_current -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_exception_getting_current ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_exc_resource_not_found -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_exc_resource_not_found ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_291_third_party_admin_cannot_modify_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_291_third_party_admin_cannot_modify_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_for_webserver -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_for_webserver ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_exception_in_background_task -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_exception_in_background_task ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_292_owner_admin_can_delete_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_292_owner_admin_can_delete_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates_default -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates_default ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_293_owner_manager_can_delete_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_293_owner_manager_can_delete_portgroup ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_existing -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_existing ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates_raises_ilo_error -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates_raises_ilo_error ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_swift -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_swift ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_swift_throws_error_if_swift_operation_fails -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_swift_throws_error_if_swift_operation_fails ... ok -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-bdd08149-164b-447b-baf3-aeeb3593beb7 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-bdd08149-164b-447b-baf3-aeeb3593beb7 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc -PATCH: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-a5df9300-f58b-42c0-bab5-466e6ed95b9e +Location: http://localhost/v1/volume/connectors/86f0b23f-84ca-4c19-a009-8e5ec7bc3df8 +Openstack-Request-Id: req-f8e579ba-d2cf-4896-941a-d94d88b6314e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-a5df9300-f58b-42c0-bab5-466e6ed95b9e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"uuid": "86f0b23f-84ca-4c19-a009-8e5ec7bc3df8", "created_at": "2024-01-06T14:13:40.538711+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/86f0b23f-84ca-4c19-a009-8e5ec7bc3df8", "rel": "self"}, {"href": "http://localhost/volume/connectors/86f0b23f-84ca-4c19-a009-8e5ec7bc3df8", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'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-1d18f9a3-6787-453a-89eb-8c6eb93c6282 +Openstack-Request-Id: req-903dbc87-894e-4b41-8237-0854e3a876c1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-1d18f9a3-6787-453a-89eb-8c6eb93c6282 +Openstack-Request-Id: req-903dbc87-894e-4b41-8237-0854e3a876c1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'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-9ca76cc5-243b-457d-a8cc-4358cd3dbc6b +Openstack-Request-Id: req-ae1fde76-ba37-4dc5-944d-5124563c11b5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-9ca76cc5-243b-457d-a8cc-4358cd3dbc6b +Openstack-Request-Id: req-ae1fde76-ba37-4dc5-944d-5124563c11b5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/volume/connectors +POST: /v1/volume/connectors {'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-e50afe49-a365-4f61-a770-3d756e80bbe3 +Openstack-Request-Id: req-e863d2a4-7b32-46bf-af71-f61af93d9149 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-e50afe49-a365-4f61-a770-3d756e80bbe3 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -PATCH: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-2c350da2-bd38-402c-b593-b13c0736982e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-2c350da2-bd38-402c-b593-b13c0736982e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc -DELETE: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-826b0a56-3f64-4a6a-bba6-7606a2fb0df0 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-826b0a56-3f64-4a6a-bba6-7606a2fb0df0 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc -DELETE: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-8c010357-6b0b-4111-9eda-0ee0438a56a8 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-8c010357-6b0b-4111-9eda-0ee0438a56a8 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc -DELETE: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_294_owner_member_cannot_delete_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_294_owner_member_cannot_delete_portgroup ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_node_already_locked -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_node_already_locked ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_web_server -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_web_server ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_web_server_fails -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_web_server_fails ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_295_lessee_admin_cannot_delete_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_295_lessee_admin_cannot_delete_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_destroy_floppy_image_from_web_server -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_destroy_floppy_image_from_web_server ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_valid -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_valid ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_296_lessee_manager_cannot_delete_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_296_lessee_manager_cannot_delete_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_download_file_url -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_download_file_url ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_validate_fail -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_validate_fail ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_download_http_url -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_download_http_url ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_297_lessee_member_cannot_delete_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_297_lessee_member_cannot_delete_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_eject_vmedia_devices -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_eject_vmedia_devices ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_eject_vmedia_devices_raises -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_eject_vmedia_devices_raises ... ok -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_worker_pool_full -ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_worker_pool_full ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_298_third_party_admin_cannot_delete_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_298_third_party_admin_cannot_delete_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_current_boot_mode -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_current_boot_mode ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_current_boot_mode_fail -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_current_boot_mode_fail ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_cafile -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_cafile ... ok -ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_automated_clean -ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_automated_clean ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_cafile_boolean -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_cafile_boolean ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_299_owner_reader_can_get_node_portgroups -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_299_owner_reader_can_get_node_portgroups ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_snmp -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_snmp ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_300_lessee_reader_can_get_node_porgtroups -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_300_lessee_reader_can_get_node_porgtroups ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_bios -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_bios ... ok -ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_boot_timeout -ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_boot_timeout ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_fail -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_fail ... ok -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-c90d7b6f-4c9e-47a3-b43a-ef7cff8ef907 +Openstack-Request-Id: req-e863d2a4-7b32-46bf-af71-f61af93d9149 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_345_owner_reader_can_get_volume_connector +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_345_owner_reader_can_get_volume_connector ... ok +ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_kwargs +ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_kwargs ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_cleaning_network +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_cleaning_network ... ok +ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_mixed +ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_mixed ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_inspection_network +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_inspection_network ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_346_lessee_reader_can_get_volume_connector +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_346_lessee_reader_can_get_volume_connector ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_287_chassis_detail_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_287_chassis_detail_get_admin ... ok +ironic.tests.unit.common.test_args.ValidateTypesTest.test_types +ironic.tests.unit.common.test_args.ValidateTypesTest.test_types ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_provisioning_network +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_provisioning_network ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_unconfigure_tenant_networks +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_unconfigure_tenant_networks ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_347_third_party_admin_cannot_get_volume_connector +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_347_third_party_admin_cannot_get_volume_connector ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_validate +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_validate ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_attach_record_failure +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_attach_record_failure ... ok ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-c90d7b6f-4c9e-47a3-b43a-ef7cff8ef907 +Openstack-Request-Id: req-684251db-c3e1-4d98-b456-54b4a135a829 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} +API ACL Testing Path post /v1/chassis +POST: /v1/chassis {'description': 'test-chassis'} GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-40af0bed-045e-42c6-9ec1-1ad12aad1bc4 +Openstack-Request-Id: req-1e2cf1bf-a352-41df-ae99-81eef73c25ca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-40af0bed-045e-42c6-9ec1-1ad12aad1bc4 +Openstack-Request-Id: req-1e2cf1bf-a352-41df-ae99-81eef73c25ca X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 403 Forbidden +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/chassis +GET: /v1/chassis {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e3ccaa45-9e1e-4c28-b28b-c1251569bcd3 +Openstack-Request-Id: req-fc1ba6e7-99c9-479e-8e0a-0755245a877f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e3ccaa45-9e1e-4c28-b28b-c1251569bcd3 +Openstack-Request-Id: req-fc1ba6e7-99c9-479e-8e0a-0755245a877f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 403 Forbidden +{"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"}]}]} +API ACL Testing Path get /v1/chassis +GET: /v1/chassis {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8c251359-84ca-4cf0-b2de-907057635e90 +Openstack-Request-Id: req-4d950bdb-a0d1-437c-b083-55ffc037f2a4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8c251359-84ca-4cf0-b2de-907057635e90 +Openstack-Request-Id: req-4d950bdb-a0d1-437c-b083-55ffc037f2a4 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -DELETE: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 -GOT:Response: 404 Not Found +{"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"}]}]} +API ACL Testing Path get /v1/chassis +GET: /v1/chassis {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-26683c94-9bd0-4ce3-9a04-f4dd80e1e0c8 +Openstack-Request-Id: req-592f9cfe-db68-4651-8b69-32322b3eb117 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"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"}]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-26683c94-9bd0-4ce3-9a04-f4dd80e1e0c8 +Openstack-Request-Id: req-592f9cfe-db68-4651-8b69-32322b3eb117 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/portgroups -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/portgroups {} +{"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"}]}]} +API ACL Testing Path get /v1/chassis/detail +GET: /v1/chassis/detail {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4095633e-1310-4593-aa7a-e21b536a2923 +Openstack-Request-Id: req-c3498755-651e-41d5-bcaf-038d28ff6246 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} +{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:41.888110+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"}]]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-4095633e-1310-4593-aa7a-e21b536a2923 +Openstack-Request-Id: req-c3498755-651e-41d5-bcaf-038d28ff6246 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups {} +{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:41.888110+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"}]]}]} +API ACL Testing Path get /v1/chassis/detail +GET: /v1/chassis/detail {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3a4069a4-a7ad-44de-b38c-bb4f31dd87ba +Openstack-Request-Id: req-a0e9b03f-f656-49d6-ad7a-51f7433ec292 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} +{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:42.123326+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"}]]}]} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_288_chassis_detail_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_288_chassis_detail_get_member ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_289_chassis_detail_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_289_chassis_detail_get_reader ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_attach +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_attach ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_attach_set_meta_failure +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_attach_set_meta_failure ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_348_lessee_member_cannot_patch_volume_connectors +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_348_lessee_member_cannot_patch_volume_connectors ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_detach +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_detach ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_client_init_failure +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_client_init_failure ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_290_chassis_chassis_id_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_290_chassis_chassis_id_get_admin ... ok +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_list +ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_list ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_349_owner_admin_can_patch_volume_connectors +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_349_owner_admin_can_patch_volume_connectors ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_initialize_connection_failure +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_initialize_connection_failure ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_cleaning +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_cleaning ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_291_chassis_chassis_id_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_291_chassis_chassis_id_get_member ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_one_attached +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_one_attached ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_cleaning_failed +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_cleaning_failed ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_reserve_failure +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_reserve_failure ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_292_chassis_chassis_id_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_292_chassis_chassis_id_get_reader ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_deploying +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_deploying ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_vol_not_found +ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_vol_not_found ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_deploying_failed +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_deploying_failed ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_begin_detaching_failure +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_begin_detaching_failure ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_350_owner_manager_can_patch_volume_connectors +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_350_owner_manager_can_patch_volume_connectors ... ok ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3a4069a4-a7ad-44de-b38c-bb4f31dd87ba +Openstack-Request-Id: req-a0e9b03f-f656-49d6-ad7a-51f7433ec292 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups {} -GOT:Response: 404 Not Found +{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:42.123326+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"}]]}]} +API ACL Testing Path get /v1/chassis/detail +GET: /v1/chassis/detail {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9e286970-b018-4bc0-a317-05c03a53a571 +Openstack-Request-Id: req-a2658b99-f27d-4de5-b659-45981327b47c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_301_third_party_admin_cannot_get_portgroups -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_301_third_party_admin_cannot_get_portgroups ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_not_supported -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_not_supported ... ok -ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_manual_clean -ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_manual_clean ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_302_owner_reader_can_list_ports -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_302_owner_reader_can_list_ports ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state_fail -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state_fail ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state_not_supported -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state_not_supported ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_303_lessee_reader_can_list_ports -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_303_lessee_reader_can_list_ports ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift_suppresses_notfound_exc -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift_suppresses_notfound_exc ... ok -ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_deploy_timeouts -ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_deploy_timeouts ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift_suppresses_operror_exc -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift_suppresses_operror_exc ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_304_third_party_admin_cannot_list_ports -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_304_third_party_admin_cannot_list_ports ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_web_server -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_web_server ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_single_or_list_of_files_with_file_list -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_single_or_list_of_files_with_file_list ... ok -ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test_check_rescuewait_timeouts -ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test_check_rescuewait_timeouts ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_305_owner_reader_can_read_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_305_owner_reader_can_read_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_single_or_list_of_files_with_file_str -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_single_or_list_of_files_with_file_str ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode_with_IloOperationError -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode_with_IloOperationError ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_306_lessee_reader_can_read_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_306_lessee_reader_can_read_port ... ok -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_disable_console_already_disabled -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_disable_console_already_disabled ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode_without_set_pending_boot_mode -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode_without_set_pending_boot_mode ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode_fail -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode_fail ... ok -ACL Test GOT Response: 404 Not Found +{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:42.349040+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"}]]}]} +ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-9e286970-b018-4bc0-a317-05c03a53a571 +Openstack-Request-Id: req-a2658b99-f27d-4de5-b659-45981327b47c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} +{"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:42.349040+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"}]]}]} +API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-118e6205-4b57-4f7a-a253-9709779fee25 +Openstack-Request-Id: req-90cc4f9b-282a-4d75-b7ab-6115e4ff769d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "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"}]}]} +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:42.588447+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"}]]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-118e6205-4b57-4f7a-a253-9709779fee25 +Openstack-Request-Id: req-90cc4f9b-282a-4d75-b7ab-6115e4ff769d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "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"}]}]} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:42.588447+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"}]]} +API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e320483a-b0c4-4ac8-a249-96458fbacd42 +Openstack-Request-Id: req-f8d4a4d5-31aa-4753-8c22-af6369a98bb1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:42.838845+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"}]]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e320483a-b0c4-4ac8-a249-96458fbacd42 +Openstack-Request-Id: req-f8d4a4d5-31aa-4753-8c22-af6369a98bb1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/ports -GET: /v1/ports {} +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:42.838845+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"}]]} +API ACL Testing Path get /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GET: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-87052552-b884-4976-ad9e-cc174d7b553b +Openstack-Request-Id: req-bc19d962-edf6-47ae-9377-25d63547bd46 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:43.092342+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"}]]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-87052552-b884-4976-ad9e-cc174d7b553b +Openstack-Request-Id: req-bc19d962-edf6-47ae-9377-25d63547bd46 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c -GET: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c {} +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:43.092342+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"}]]} +API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_293_chassis_chassis_id_patch_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_293_chassis_chassis_id_patch_admin ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_cleaning +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_cleaning ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_client_init_failure_bad_request +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_client_init_failure_bad_request ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_294_chassis_chassis_id_patch_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_294_chassis_chassis_id_patch_member ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_client_init_failure_invalid_parameter_value +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_client_init_failure_invalid_parameter_value ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_deploying +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_deploying ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_351_lessee_admin_cannot_patch_volume_connectors +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_351_lessee_admin_cannot_patch_volume_connectors ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_failure_errors_allowed +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_failure_errors_allowed ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_295_chassis_chassis_id_patch_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_295_chassis_chassis_id_patch_reader ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_fast_track +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_fast_track ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_failure_errors_not_allowed +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_failure_errors_not_allowed ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-018da83c-dbca-4089-b868-b35534f8a445 +Openstack-Request-Id: req-e1b693af-baa2-46d3-bbfe-a45600d34530 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "ebe30f19-358d-41e1-8d28-fd7357a0164c", "created_at": "2024-01-06T13:43:00.438480+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, "links": [{"href": "http://localhost/v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "self"}, {"href": "http://localhost/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "portgroup_uuid": null} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:41.561693+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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-018da83c-dbca-4089-b868-b35534f8a445 +Openstack-Request-Id: req-e1b693af-baa2-46d3-bbfe-a45600d34530 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "ebe30f19-358d-41e1-8d28-fd7357a0164c", "created_at": "2024-01-06T13:43:00.438480+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, "links": [{"href": "http://localhost/v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "self"}, {"href": "http://localhost/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "portgroup_uuid": null} -API ACL Testing Path get /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:41.561693+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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8846c824-21e6-4746-a453-151c9d45168b +Openstack-Request-Id: req-87410334-9ec2-4b70-9552-e340064e6e51 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:43:01.203930+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "portgroup_uuid": null} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:41.876077+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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8846c824-21e6-4746-a453-151c9d45168b +Openstack-Request-Id: req-87410334-9ec2-4b70-9552-e340064e6e51 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:43:01.203930+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, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "portgroup_uuid": null} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_307_third_party_admin_cannot_read_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_307_third_party_admin_cannot_read_port ... ok -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_enable_console_already_enabled -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_enable_console_already_enabled ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode_not_supported -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode_not_supported ... ok -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console ... ok -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console_disabled -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console_disabled ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_persistent_false -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_persistent_false ... ok -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console_validate_fail -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console_validate_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_308_owner_admin_can_add_ports -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_308_owner_admin_can_add_ports ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_persistent_true -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_persistent_true ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_raises_ilo_error -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_raises_ilo_error ... ok -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_disabled -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_disabled ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_309_owner_manager_can_add_ports -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_309_owner_manager_can_add_ports ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_raises_not_supported -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_raises_not_supported ... ok -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_enabled -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_enabled ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_scheme_http -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_scheme_http ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_310_owner_admin_cannot_add_ports_to_other_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_310_owner_admin_cannot_add_ports_to_other_nodes ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia ... ok -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_start_fail -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_start_fail ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_parameters -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_parameters ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_311_owner_manager_cannot_add_ports_to_other_nodes -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_311_owner_manager_cannot_add_ports_to_other_nodes ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_swift -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_swift ... ok -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_stop_fail -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_stop_fail ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_url -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_url ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_312_owner_member_cannot_add_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_312_owner_member_cannot_add_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_without_params -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_without_params ... ok -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_validation_fail -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_validation_fail ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_313_lessee_admin_cannot_add_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_313_lessee_admin_cannot_add_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_capabilities_exist -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_capabilities_exist ... ok -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_worker_pool_full -ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_worker_pool_full ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_instance_info_exists -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_instance_info_exists ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_314_lessee_manager_cannot_add_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_314_lessee_manager_cannot_add_port ... ok -ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target -ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_legacy -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_legacy ... ok -ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_already_destroyed -ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_already_destroyed ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_prop_boot_mode_exist -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_prop_boot_mode_exist ... ok -ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_gone -ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_gone ... ok -API ACL Testing Path get /v1/ports/abfd8dbb-1732-449a-b760-2224035c6b99 -GET: /v1/ports/abfd8dbb-1732-449a-b760-2224035c6b99 {} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:41.876077+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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c252b85b-4941-4ec9-90e7-01f636b3faca +Openstack-Request-Id: req-e9aef635-d2ec-49ff-9e54-edac20a7b7fb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port abfd8dbb-1732-449a-b760-2224035c6b99 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c252b85b-4941-4ec9-90e7-01f636b3faca -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port abfd8dbb-1732-449a-b760-2224035c6b99 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'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-c4d776cf-5c24-4e15-82df-1080f182bafa -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-c4d776cf-5c24-4e15-82df-1080f182bafa -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'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-d1c7db92-27cb-4760-847c-1eec5e870f6d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-d1c7db92-27cb-4760-847c-1eec5e870f6d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'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-b8e08ba7-70c8-4a19-9a96-6a0b14b58132 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-b8e08ba7-70c8-4a19-9a96-6a0b14b58132 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'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-559dfda9-53e0-4fcc-8fca-faed09ff355a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-559dfda9-53e0-4fcc-8fca-faed09ff355a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'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-90c4b5bc-d012-4c71-b9de-322000191ab5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-90c4b5bc-d012-4c71-b9de-322000191ab5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'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-f6edc63e-1f79-4d1c-bec8-2c50ca3e7fcb -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-f6edc63e-1f79-4d1c-bec8-2c50ca3e7fcb -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'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-53920786-fb28-4f27-b4c7-6b77457a08b7 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-53920786-fb28-4f27-b4c7-6b77457a08b7 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'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-153bba8e-a552-4bfa-8a07-1427d2b7cec3 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_315_lessee_member_cannot_add_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_315_lessee_member_cannot_add_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_unknown -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_unknown ... ok -ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_locked -ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_locked ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_unknown_except -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_unknown_except ... ok -ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_power_on -ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_power_on ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_316_third_party_admin_cannot_add_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_316_third_party_admin_cannot_add_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_use_def_boot_mode -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_use_def_boot_mode ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_317_owner_admin_can_modify_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_317_owner_admin_can_modify_port ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_ipmi_properties -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_ipmi_properties ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_redfish_properties -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_redfish_properties ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated_abort -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated_abort ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values_invalid_param -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values_invalid_param ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_318_owner_manager_can_modify_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_318_owner_manager_can_modify_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values_no_param -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values_no_param ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated_abort_last_clean_step -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated_abort_last_clean_step ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_319_owner_member_cannot_modify_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_319_owner_member_cannot_modify_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_throws_for_failed_validation -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_throws_for_failed_validation ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_locked -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_locked ... ok -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_throws_for_nonexistent_file -ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_throws_for_nonexistent_file ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_file_based_fw_to_copies_file_to_target -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_file_based_fw_to_copies_file_to_target ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_320_lessee_admin_cannot_modify_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_320_lessee_admin_cannot_modify_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_file_based_fw_to_gets_invoked_for_file_based_firmware -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_file_based_fw_to_gets_invoked_for_file_based_firmware ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_http_based_fw_to_downloads_the_fw_file -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_http_based_fw_to_downloads_the_fw_file ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_http_based_fw_to_gets_invoked_for_http_based_firmware -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_http_based_fw_to_gets_invoked_for_http_based_firmware ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_321_lessee_manager_cannot_modify_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_321_lessee_manager_cannot_modify_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_calls__download_http_based_fw_to -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_calls__download_http_based_fw_to ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual_abort -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual_abort ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_creates_temp_url -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_creates_temp_url ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_gets_invoked_for_swift_based_firmware -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_gets_invoked_for_swift_based_firmware ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_322_lessee_member_cannot_modify_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_322_lessee_member_cannot_modify_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_calls_process_firmware_image -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_calls_process_firmware_image ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_doesnt_upload_firmware -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_doesnt_upload_firmware ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual_abort_last_clean_step -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual_abort_last_clean_step ... ok -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-153bba8e-a552-4bfa-8a07-1427d2b7cec3 +Openstack-Request-Id: req-e9aef635-d2ec-49ff-9e54-edac20a7b7fb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/ports -POST: /v1/ports {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f', 'address': '00:01:02:03:04:05'} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4773cfcd-1cc7-42b3-b6a2-769ebddbeb07 +Openstack-Request-Id: req-8edd3b3c-7933-4958-822f-a04cd6f4a1bf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-4773cfcd-1cc7-42b3-b6a2-769ebddbeb07 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c -PATCH: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-ff1171c8-bb85-48e8-9878-606046a38183 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-ff1171c8-bb85-48e8-9878-606046a38183 +Openstack-Request-Id: req-8edd3b3c-7933-4958-822f-a04cd6f4a1bf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c -PATCH: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4d875124-e7cb-4d73-ba90-889eb7210fa3 +Openstack-Request-Id: req-80e33435-04cd-4ac2-b377-054e6360e2bf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4d875124-e7cb-4d73-ba90-889eb7210fa3 +Openstack-Request-Id: req-80e33435-04cd-4ac2-b377-054e6360e2bf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c -PATCH: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-687f154f-15ba-4cd8-9eda-a36b2a43d0a0 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-687f154f-15ba-4cd8-9eda-a36b2a43d0a0 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-b1e4525b-dc2a-456d-a1ac-0684d3361dfd -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-b1e4525b-dc2a-456d-a1ac-0684d3361dfd -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-ee5e8340-09dc-41e1-b1ba-3f871c430174 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-ee5e8340-09dc-41e1-b1ba-3f871c430174 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-e2e95b11-e239-4cc6-8a1a-f842a604091e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-e2e95b11-e239-4cc6-8a1a-f842a604091e -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-dfff907e-0ece-45ef-bb97-c1f58e5e875d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_323_third_party_admin_cannot_modify_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_323_third_party_admin_cannot_modify_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_file_if_no_upload -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_file_if_no_upload ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_324_owner_admin_can_delete_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_324_owner_admin_can_delete_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_swift -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_swift ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_webserver -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_webserver ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_worker_pool_full -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_worker_pool_full ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_uploads_firmware_to_swift -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_uploads_firmware_to_swift ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_325_owner_manager_can_delete_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_325_owner_manager_can_delete_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_uploads_firmware_to_webserver -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_uploads_firmware_to_webserver ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_file_based_me -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_file_based_me ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_wrong_state -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_wrong_state ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_swift_based_me -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_swift_based_me ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_326_owner_member_cannot_delete_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_326_owner_member_cannot_delete_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_webserver_based_me -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_webserver_based_me ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_invalid_state -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_invalid_state ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__validate_sum_components -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__validate_sum_components ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__validate_sum_components_fails -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__validate_sum_components_fails ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_327_lessee_admin_cannot_delete_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_327_lessee_admin_cannot_delete_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_img_loc_sets_these_attributes -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_img_loc_sets_these_attributes ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_maintenance -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_maintenance ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_processor_ctor_sets_parsed_url_attrib_of_fw_processor -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_processor_ctor_sets_parsed_url_attrib_of_fw_processor ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_processor_ctor_throws_exception_with_invalid_firmware_url -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_processor_ctor_throws_exception_with_invalid_firmware_url ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_328_lessee_manager_cannot_delete_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_328_lessee_manager_cannot_delete_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_empty_parameter -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_empty_parameter ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_invalid_component -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_invalid_component ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_network_validate_fail -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_network_validate_fail ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_missing_parameter -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_missing_parameter ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_329_lessee_member_cannot_delete_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_329_lessee_member_cannot_delete_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum_invalid_component -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum_invalid_component ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_330_third_party_admin_cannot_delete_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_330_third_party_admin_cannot_delete_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum_with_component -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum_with_component ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_ok ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_calls__download_fw_to -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_calls__download_fw_to ... ok -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-dfff907e-0ece-45ef-bb97-c1f58e5e875d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c -DELETE: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7ddef47f-c6a3-43d5-a91f-591b112dcd80 +Openstack-Request-Id: req-857addd6-544a-457a-ac1a-3d6f1926cb7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7ddef47f-c6a3-43d5-a91f-591b112dcd80 +Openstack-Request-Id: req-857addd6-544a-457a-ac1a-3d6f1926cb7b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c -DELETE: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c +API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 +PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ce45cebc-e1a7-4138-877f-e642d557af53 +Openstack-Request-Id: req-3b6a0f1b-ad85-4cb7-b6b8-346d1290140a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-ce45cebc-e1a7-4138-877f-e642d557af53 +Openstack-Request-Id: req-3b6a0f1b-ad85-4cb7-b6b8-346d1290140a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c -DELETE: /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-4454836c-6000-4ac9-a4a6-538d38107fc5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-4454836c-6000-4ac9-a4a6-538d38107fc5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-ef4c235c-4b50-4f82-acc1-25a99f06957d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-ef4c235c-4b50-4f82-acc1-25a99f06957d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-79a2217d-d91b-4200-99c6-01578c7f4250 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-79a2217d-d91b-4200-99c6-01578c7f4250 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-0e363e2a-92db-4c63-8528-9c2b17743a5d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-0e363e2a-92db-4c63-8528-9c2b17743a5d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -DELETE: /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-cf46c319-ec7d-444a-9f4c-7ff91847c114 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-cf46c319-ec7d-444a-9f4c-7ff91847c114 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/ports -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/ports {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-0f4e9556-7d2f-434e-abbd-1cda16b822da -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_331_owner_reader_can_get_node_ports -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_331_owner_reader_can_get_node_ports ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_power_validate_fail -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_power_validate_fail ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_calls__extract_fw_from_file -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_calls__extract_fw_from_file ... ok -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_worker_pool_full -ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_worker_pool_full ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_332_lessee_reader_can_get_node_port -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_332_lessee_reader_can_get_node_port ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_throws_error_if_checksum_validation_fails -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_throws_error_if_checksum_validation_fails ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_abort -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_abort ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_333_third_party_admin_cannot_get_ports -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_333_third_party_admin_cannot_get_ports ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_abort_clean_up_fail -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_abort_clean_up_fail ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_verifies_checksum_of_downloaded_fw_file -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_verifies_checksum_of_downloaded_fw_file ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_verify_firmware_update_args_throws_for_invalid_update_mode -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_verify_firmware_update_args_throws_for_invalid_update_mode ... ok -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_verify_firmware_update_args_throws_for_no_firmware_url -ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_verify_firmware_update_args_throws_for_no_firmware_url ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_334_owner_reader_can_get_ports_by_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_334_owner_reader_can_get_ports_by_portgroup ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_bad_state -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_bad_state ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict_excluded_capability -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict_excluded_capability ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict_gpu_capabilities -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict_gpu_capabilities ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_335_lessee_reader_can_get_ports_by_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_335_lessee_reader_can_get_ports_by_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_capabilities_ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_capabilities_ok ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_errors -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_errors ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_336_third_party_admin_cannot_get_ports_by_portgroup -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_336_third_party_admin_cannot_get_ports_by_portgroup ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail_invalid_format -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail_invalid_format ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail_mac_invalid_format -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail_mac_invalid_format ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_returns_rescue -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_returns_rescue ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_hardware_port_empty -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_hardware_port_empty ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_337_owner_reader_can_list_volume_connectors -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_337_owner_reader_can_list_volume_connectors ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_hardware_port_not_dict -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_hardware_port_not_dict ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_returns_rescuewait -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_returns_rescuewait ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_ok ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__validate_essential_keys_fail_missing_key -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__validate_essential_keys_fail_missing_key ... ok -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-0f4e9556-7d2f-434e-abbd-1cda16b822da -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-fbd93165-635b-4f4b-bceb-3c9f7b396072 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-fbd93165-635b-4f4b-bceb-3c9f7b396072 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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"}]}]} -API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports -GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-d2ba637f-bde2-47a6-8ccb-2839836cdf3a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-d2ba637f-bde2-47a6-8ccb-2839836cdf3a -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc/ports -GET: /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc/ports {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-c3a06a0f-465d-4cd8-922a-5d0ef9115773 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-c3a06a0f-465d-4cd8-922a-5d0ef9115773 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports -GET: /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-1af861ee-5f96-44f0-a113-f46747b0dc51 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-1af861ee-5f96-44f0-a113-f46747b0dc51 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"ports": []} -API ACL Testing Path get /v1/portgroups/5810f41c-6585-41fc-b9c9-a94f50d421b5/ports -GET: /v1/portgroups/5810f41c-6585-41fc-b9c9-a94f50d421b5/ports {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-2995074a-b9dc-4d5a-8d01-52f39ba987e9 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 5810f41c-6585-41fc-b9c9-a94f50d421b5 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-2995074a-b9dc-4d5a-8d01-52f39ba987e9 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 5810f41c-6585-41fc-b9c9-a94f50d421b5 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-235deffd-6e01-488d-be2b-5900befa3973 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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": "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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-235deffd-6e01-488d-be2b-5900befa3973 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"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": "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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_352_lessee_manager_can_patch_volume_connectors +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_352_lessee_manager_can_patch_volume_connectors ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_296_chassis_chassis_id_delete_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_296_chassis_chassis_id_delete_admin ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_apply_time_immediate +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_apply_time_immediate ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_apply_time_on_reset +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_apply_time_on_reset ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_353_owner_member_can_patch_volume_connectors +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_353_owner_member_can_patch_volume_connectors ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_297_chassis_chassis_id_delete_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_297_chassis_chassis_id_delete_member ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_fail +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_fail ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_meta_failure_errors_not_allowed +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_meta_failure_errors_not_allowed ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_298_chassis_chassis_id_delete_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_298_chassis_chassis_id_delete_reader ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_no_supported_apply_times +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_no_supported_apply_times ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_354_third_party_admin_cannot_patch_volume_connectors +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_354_third_party_admin_cannot_patch_volume_connectors ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_one_detached +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_one_detached ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_not_supported +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_not_supported ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_term_failure +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_term_failure ... ok +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_vol_not_found +ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_vol_not_found ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f3462bb4-9655-42d8-aa82-d77da49ac1db +Openstack-Request-Id: req-13c0ec7f-9bce-44f3-92c2-1439e1fad46e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_338_lessee_reader_can_list_volume_connectors -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_338_lessee_reader_can_list_volume_connectors ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__validate_ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__validate_ok ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_power_state -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_power_state ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_339_third_party_admin_cannot_get_connector_list -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_339_third_party_admin_cannot_get_connector_list ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_properties -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_properties ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_bad_state -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_bad_state ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_340_owner_admin_can_post_volume_connector -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_340_owner_admin_can_post_volume_connector ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_supported_power_states -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_supported_power_states ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_reboot_no_timeout -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_reboot_no_timeout ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_ironic_error -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_ironic_error ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_reboot_with_timeout -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_reboot_with_timeout ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_341_owner_manager_can_post_volume_connector -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_341_owner_manager_can_post_volume_connector ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_set_power_state_no_timeout -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_set_power_state_no_timeout ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_set_power_state_timeout -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_set_power_state_timeout ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_342_lessee_admin_cannot_post_volume_connector -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_342_lessee_admin_cannot_post_volume_connector ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_validate -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_validate ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_other_error -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_other_error ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_validate_fail -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_validate_fail ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_343_lessee_manager_cannot_post_volume_connector -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_343_lessee_manager_cannot_post_volume_connector ... ok -ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect -ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue ... ok -ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_empty -ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_empty ... ok -ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_error -ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_error ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_344_third_party_admin_cannot_post_volume_connector -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_344_third_party_admin_cannot_post_volume_connector ... ok -ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_invalid_input -ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_invalid_input ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_invalid_state -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_invalid_state ... ok -ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_more_socket -ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_more_socket ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_maintenance -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_maintenance ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info ... ok +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:43.345246+00:00", "updated_at": "2024-01-06T14:13:43.460044+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"}]]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f3462bb4-9655-42d8-aa82-d77da49ac1db +Openstack-Request-Id: req-13c0ec7f-9bce-44f3-92c2-1439e1fad46e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} -API ACL Testing Path get /v1/volume/connectors -GET: /v1/volume/connectors {} +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:43.345246+00:00", "updated_at": "2024-01-06T14:13:43.460044+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"}]]} +API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-54749cc5-5432-4e53-be21-4e6326dc45e1 +Openstack-Request-Id: req-2e107d5b-fd04-4c4b-b663-1ddeef64538e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"connectors": []} +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:43.624805+00:00", "updated_at": "2024-01-06T14:13:43.724025+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"}]]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-54749cc5-5432-4e53-be21-4e6326dc45e1 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"connectors": []} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'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/18343a0e-3f38-4d83-8541-9adf0a6c91af -Openstack-Request-Id: req-a4c78d6c-467d-4a80-8dce-da2a0a5e5199 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "18343a0e-3f38-4d83-8541-9adf0a6c91af", "created_at": "2024-01-06T13:43:23.328210+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/18343a0e-3f38-4d83-8541-9adf0a6c91af", "rel": "self"}, {"href": "http://localhost/volume/connectors/18343a0e-3f38-4d83-8541-9adf0a6c91af", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} -ACL Test GOT Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/volume/connectors/18343a0e-3f38-4d83-8541-9adf0a6c91af -Openstack-Request-Id: req-a4c78d6c-467d-4a80-8dce-da2a0a5e5199 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "18343a0e-3f38-4d83-8541-9adf0a6c91af", "created_at": "2024-01-06T13:43:23.328210+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/18343a0e-3f38-4d83-8541-9adf0a6c91af", "rel": "self"}, {"href": "http://localhost/volume/connectors/18343a0e-3f38-4d83-8541-9adf0a6c91af", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'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/cff2905f-06a1-4f52-aee2-b5ce6746a04e -Openstack-Request-Id: req-8cf3c3c6-b7cd-46be-9d2b-3df82a53ba87 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "cff2905f-06a1-4f52-aee2-b5ce6746a04e", "created_at": "2024-01-06T13:43:23.987812+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/cff2905f-06a1-4f52-aee2-b5ce6746a04e", "rel": "self"}, {"href": "http://localhost/volume/connectors/cff2905f-06a1-4f52-aee2-b5ce6746a04e", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} -ACL Test GOT Response: 201 Created -Content-Type: application/json -Location: http://localhost/v1/volume/connectors/cff2905f-06a1-4f52-aee2-b5ce6746a04e -Openstack-Request-Id: req-8cf3c3c6-b7cd-46be-9d2b-3df82a53ba87 +Openstack-Request-Id: req-2e107d5b-fd04-4c4b-b663-1ddeef64538e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "cff2905f-06a1-4f52-aee2-b5ce6746a04e", "created_at": "2024-01-06T13:43:23.987812+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/cff2905f-06a1-4f52-aee2-b5ce6746a04e", "rel": "self"}, {"href": "http://localhost/volume/connectors/cff2905f-06a1-4f52-aee2-b5ce6746a04e", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'type': 'ip', 'connector_id': '192.168.1.100'} +{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2024-01-06T14:13:43.624805+00:00", "updated_at": "2024-01-06T14:13:43.724025+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"}]]} +API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-42169f03-564a-4068-9ad4-8e211ccaa08c +Openstack-Request-Id: req-3ec5dc62-a6de-4a21-a82a-184aa2f65de3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-42169f03-564a-4068-9ad4-8e211ccaa08c +Openstack-Request-Id: req-3ec5dc62-a6de-4a21-a82a-184aa2f65de3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'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-96f91e15-3fa0-42d2-87f2-97e9970d71f2 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GOT:Response: 204 No Content +Openstack-Request-Id: req-f65f7942-bbd0-461f-be34-4ba8079f132c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -ACL Test GOT Response: 403 Forbidden -Content-Type: application/json -Openstack-Request-Id: req-96f91e15-3fa0-42d2-87f2-97e9970d71f2 + +ACL Test GOT Response: 204 No Content +Openstack-Request-Id: req-f65f7942-bbd0-461f-be34-4ba8079f132c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path post /v1/volume/connectors -POST: /v1/volume/connectors {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'type': 'ip', 'connector_id': '192.168.1.100'} + +API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b75efa5f-4cc1-4071-9f8c-0910c399ba51 +Openstack-Request-Id: req-6ca04241-54dd-444b-8c30-c442ebdb2245 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-b75efa5f-4cc1-4071-9f8c-0910c399ba51 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_345_owner_reader_can_get_volume_connector -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_345_owner_reader_can_get_volume_connector ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_dir_path_verify_ca -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_dir_path_verify_ca ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_network_validate_fail -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_network_validate_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_file_path_verify_ca -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_file_path_verify_ca ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_346_lessee_reader_can_get_volume_connector -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_346_lessee_reader_can_get_volume_connector ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_auth_method -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_auth_method ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_power_validate_fail -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_power_validate_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_port -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_port ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_347_third_party_admin_cannot_get_volume_connector -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_347_third_party_admin_cannot_get_volume_connector ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_sensor_method -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_sensor_method ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_rescue_validate_fail -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_rescue_validate_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_auth_password -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_auth_password ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_348_lessee_member_cannot_patch_volume_connectors -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_348_lessee_member_cannot_patch_volume_connectors ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_auth_proto -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_auth_proto ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_community -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_community ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_349_owner_admin_can_patch_volume_connectors -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_349_owner_admin_can_patch_volume_connectors ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_port -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_port ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_priv_password -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_priv_password ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_invalid_state -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_invalid_state ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_priv_proto -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_priv_proto ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_maintenance -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_maintenance ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_350_owner_manager_can_patch_volume_connectors -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_350_owner_manager_can_patch_volume_connectors ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_security -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_security ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_validate_fail -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_validate_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_user -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_user ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_version -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_version ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_version_fips -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_version_fips ... ok -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_provision_rescue_abort -ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_provision_rescue_abort ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_351_lessee_admin_cannot_patch_volume_connectors -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_351_lessee_admin_cannot_patch_volume_connectors ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_timeout -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_timeout ... ok -ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_get_indicator_state -ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_get_indicator_state ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_verify_ca -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_verify_ca ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_address -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_address ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_multiple_params -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_multiple_params ... ok -ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_get_supported_indicators -ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_get_supported_indicators ... ok -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-f432615b-8824-4c0e-b5c2-f37c70b31c13 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:43:26.258235+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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-f432615b-8824-4c0e-b5c2-f37c70b31c13 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:43:26.258235+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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} -API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-436bf654-0c7d-4213-9463-1882b6dea3e5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:43:26.757734+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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} -ACL Test GOT Response: 200 OK -Content-Type: application/json -Openstack-Request-Id: req-436bf654-0c7d-4213-9463-1882b6dea3e5 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:43:26.757734+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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} -API ACL Testing Path get /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -GET: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} -GOT:Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-a5aa4e02-f786-4360-bb82-9a9db1f4972d -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found -Content-Type: application/json -Openstack-Request-Id: req-a5aa4e02-f786-4360-bb82-9a9db1f4972d +Openstack-Request-Id: req-6ca04241-54dd-444b-8c30-c442ebdb2245 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bfa5c263-49f9-4c62-97ad-fcfd6a7afd0b +Openstack-Request-Id: req-21530048-da5b-423b-9d2f-fb36e71b010f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-bfa5c263-49f9-4c62-97ad-fcfd6a7afd0b -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-958a9b86-549f-47db-b946-5a222beed3de -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-958a9b86-549f-47db-b946-5a222beed3de -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-4e4edc64-fe19-402d-8db3-9dfeba5ecd34 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-4e4edc64-fe19-402d-8db3-9dfeba5ecd34 -X-Openstack-Ironic-Api-Maximum-Version: 1.80 -X-Openstack-Ironic-Api-Minimum-Version: 1.1 -X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 -PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] -GOT:Response: 503 Service Unavailable -Content-Type: application/json -Openstack-Request-Id: req-0fe2a484-8909-4b27-ad07-6ca510069dd1 +Openstack-Request-Id: req-21530048-da5b-423b-9d2f-fb36e71b010f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ACL Test GOT Response: 503 Service Unavailable +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0fe2a484-8909-4b27-ad07-6ca510069dd1 +Openstack-Request-Id: req-a9dff269-de92-415d-8c98-4ac2073dfa59 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_352_lessee_manager_can_patch_volume_connectors -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_352_lessee_manager_can_patch_volume_connectors ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_password -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_password ... ok -ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_set_indicator_state -ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_set_indicator_state ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_auth_password -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_auth_password ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeout -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeout ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_acquire_node_disappears -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_acquire_node_disappears ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_priv_password -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_priv_password ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_acquire_node_locked -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_acquire_node_locked ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_exit_with_other_exception -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_exit_with_other_exception ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_user -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_user ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_353_owner_member_can_patch_volume_connectors -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_353_owner_member_can_patch_volume_connectors ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_exiting_no_worker_avail -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_exiting_no_worker_avail ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_username -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_username ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_no_acquire_after_lock -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_no_acquire_after_lock ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_short_snmp_auth_password -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_short_snmp_auth_password ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_354_third_party_admin_cannot_patch_volume_connectors -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_354_third_party_admin_cannot_patch_volume_connectors ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_not_mapped -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_not_mapped ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_short_snmp_priv_password -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_short_snmp_priv_password ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_to_maintenance_after_lock -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_to_maintenance_after_lock ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_snmpv3 -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_snmpv3 ... ok +{"history": [{"uuid": "4cad42c8-cc57-4d7e-99f7-ca7a56dcc890", "created_at": "2024-01-06T14:13:44.908542+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4cad42c8-cc57-4d7e-99f7-ca7a56dcc890", "rel": "self"}]}]} +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_299_node_history_get_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_299_node_history_get_admin ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_355_owner_admin_can_delete_volume_connectors ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_355_owner_admin_can_delete_volume_connectors ... ok -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_worker_limit -ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_worker_limit ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_string_bool_verify_ca -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_string_bool_verify_ca ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_using_snmp_security -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_using_snmp_security ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_option_default -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_option_default ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings ... ok +ironic.tests.unit.common.test_context.RequestContextTestCase.test_create_context +ironic.tests.unit.common.test_context.RequestContextTestCase.test_create_context ... ok +ironic.tests.unit.common.test_context.RequestContextTestCase.test_create_context_with_environ +ironic.tests.unit.common.test_context.RequestContextTestCase.test_create_context_with_environ ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_300_node_history_get_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_300_node_history_get_member ... ok +ironic.tests.unit.common.test_context.RequestContextTestCase.test_from_dict +ironic.tests.unit.common.test_context.RequestContextTestCase.test_from_dict ... ok +ironic.tests.unit.common.test_context.RequestContextTestCase.test_from_dict_older_api_server +ironic.tests.unit.common.test_context.RequestContextTestCase.test_from_dict_older_api_server ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_356_owner_manager_can_delete_volume_connectors ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_356_owner_manager_can_delete_volume_connectors ... ok -ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__get_mac_addresses -ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__get_mac_addresses ... ok +ironic.tests.unit.common.test_context.RequestContextTestCase.test_thread_with_context +ironic.tests.unit.common.test_context.RequestContextTestCase.test_thread_with_context ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings_no_bios +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings_no_bios ... ok +ironic.tests.unit.common.test_context.RequestContextTestCase.test_thread_without_context +ironic.tests.unit.common.test_context.RequestContextTestCase.test_thread_without_context ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_301_node_history_get_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_301_node_history_get_reader ... ok +ironic.tests.unit.common.test_context.RequestContextTestCase.test_to_dict_get_auth_token_info +ironic.tests.unit.common.test_context.RequestContextTestCase.test_to_dict_get_auth_token_info ... ok +ironic.tests.unit.common.test_context.RequestContextTestCase.test_to_policy_values +ironic.tests.unit.common.test_context.RequestContextTestCase.test_to_policy_values ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings_noop +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings_noop ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_357_lessee_admin_can_delete_volume_connectors ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_357_lessee_admin_can_delete_volume_connectors ... ok -ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware -ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware ... ok -ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi -ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi ... ok -ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_node_locked -ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_node_locked ... ok -ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware_exception -ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware_exception ... ok -ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_not_implemented -ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_not_implemented ... ok +ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_duplicated_entry +ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_duplicated_entry ... ok +ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_empty_entry +ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_empty_entry ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_check_bios_attrs +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_check_bios_attrs ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_302_node_history_get_entry_admin +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_302_node_history_get_entry_admin ... ok +ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_init_checks_unsupported +ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_init_checks_unsupported ... ok +ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_load_error_if_driver_enabled +ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_load_error_if_driver_enabled ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_fail +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_fail ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_358_lessee_manager_can_delete_volume_connectors ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_358_lessee_manager_can_delete_volume_connectors ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_power_state -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_power_state ... ok -ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_validate_invalid_param -ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_validate_invalid_param ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_properties -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_properties ... ok +ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_no_driver_load_error_if_driver_disabled +ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_no_driver_load_error_if_driver_disabled ... ok +ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_wrap_in_driver_load_error_if_driver_enabled +ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_wrap_in_driver_load_error_if_driver_enabled ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_not_supported +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_not_supported ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_303_node_history_get_entry_member +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_303_node_history_get_entry_member ... ok +ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_automatic_retry +ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_automatic_retry ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_359_third_party_admin_cannot_delete_volume_connector ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_359_third_party_admin_cannot_delete_volume_connector ... ok -ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_validate_missing_param -ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_validate_missing_param ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_power_on -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_power_on ... ok -ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_1_nodes_8_workers -ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_1_nodes_8_workers ... ok -ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_6_nodes_8_workers -ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_6_nodes_8_workers ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_power_on_timeout -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_power_on_timeout ... ok -ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_9_nodes_1_worker -ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_9_nodes_1_worker ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_reboot -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_reboot ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_post_reboot_cleaning +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_post_reboot_cleaning ... ok +ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_driver_not_found +ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_driver_not_found ... ok +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_304_node_history_get_entry_reader +ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_304_node_history_get_entry_reader ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_post_reboot_deploying +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_post_reboot_deploying ... ok +ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_hardware_type_success +ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_hardware_type_success ... ok +ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_disable_audit_request +ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_disable_audit_request ... ok +ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_enable_audit_request +ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_enable_audit_request ... ok +ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_hardware_type_success_groups +ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_hardware_type_success_groups ... ok API ACL Testing Path patch /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-715d3275-df2b-4a4d-bf27-5b0f56f1ee0b +Openstack-Request-Id: req-5f4a8d9c-e564-4c51-9186-1e6a38741a8f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-715d3275-df2b-4a4d-bf27-5b0f56f1ee0b +Openstack-Request-Id: req-5f4a8d9c-e564-4c51-9186-1e6a38741a8f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48160,14 +44088,14 @@ PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c2748a26-367f-483f-a7e1-92c28435e970 +Openstack-Request-Id: req-1e914ac7-a9c2-447d-b5bf-4a37009ab335 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c2748a26-367f-483f-a7e1-92c28435e970 +Openstack-Request-Id: req-1e914ac7-a9c2-447d-b5bf-4a37009ab335 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48176,14 +44104,14 @@ PATCH: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-2a23e764-e287-4d4f-a02c-76c94a9f7c62 +Openstack-Request-Id: req-fce874f3-ae0e-4e8b-bae9-2af8e2a64119 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-2a23e764-e287-4d4f-a02c-76c94a9f7c62 +Openstack-Request-Id: req-fce874f3-ae0e-4e8b-bae9-2af8e2a64119 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48192,14 +44120,14 @@ DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-8b2e158b-44ef-47a7-9ced-afa5a0b01ac5 +Openstack-Request-Id: req-7c97177e-5007-4c4e-8fe3-afde738471e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-8b2e158b-44ef-47a7-9ced-afa5a0b01ac5 +Openstack-Request-Id: req-7c97177e-5007-4c4e-8fe3-afde738471e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48208,14 +44136,14 @@ DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b35cecc7-15cc-48a9-b9a2-e1e930eacf68 +Openstack-Request-Id: req-78c51d29-9ee2-4a78-acf1-580417958967 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b35cecc7-15cc-48a9-b9a2-e1e930eacf68 +Openstack-Request-Id: req-78c51d29-9ee2-4a78-acf1-580417958967 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48224,14 +44152,14 @@ DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-cfed5999-c37b-4ff4-8ecc-a2d08feaa2e2 +Openstack-Request-Id: req-d646c388-5f71-4107-a70b-0b0ab049520e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-cfed5999-c37b-4ff4-8ecc-a2d08feaa2e2 +Openstack-Request-Id: req-d646c388-5f71-4107-a70b-0b0ab049520e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48240,14 +44168,14 @@ DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-23444d74-82c4-4868-9cec-165801ce2c21 +Openstack-Request-Id: req-3b17e815-24d2-4efd-bda9-7ebb10c6d4dd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-23444d74-82c4-4868-9cec-165801ce2c21 +Openstack-Request-Id: req-3b17e815-24d2-4efd-bda9-7ebb10c6d4dd X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48256,14 +44184,14 @@ DELETE: /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cf867878-28ac-41de-8841-729eef694a56 +Openstack-Request-Id: req-e58a3439-f0e6-4dd0-acd5-4e94e59a54a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-cf867878-28ac-41de-8841-729eef694a56 +Openstack-Request-Id: req-e58a3439-f0e6-4dd0-acd5-4e94e59a54a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48272,66 +44200,196 @@ GET: /v1/volume/targets {} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_360_owner_reader_can_get_targets ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_360_owner_reader_can_get_targets ... ok -ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_9_nodes_8_workers -ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_9_nodes_8_workers ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_reboot_timeout -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_reboot_timeout ... ok -ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_node_prioritization -ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_node_prioritization ... ok +ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_reset_interval +ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_reset_interval ... ok +ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_enable_audit_request_error +ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_enable_audit_request_error ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_361_lesse_reader_can_get_targets ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_361_lesse_reader_can_get_targets ... ok -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_set_power_state -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_set_power_state ... ok -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_copies_object -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_copies_object ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_set_power_state_timeout -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_set_power_state_timeout ... ok -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_on_object -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_on_object ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_cleaning +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_cleaning ... ok +ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_uncached +ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_uncached ... ok +ironic.tests.unit.api.test_hooks.TestPublicUrlHook.test_before_host_url +ironic.tests.unit.api.test_hooks.TestPublicUrlHook.test_before_host_url ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_custom +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_custom ... ok +ironic.tests.unit.api.test_hooks.TestPublicUrlHook.test_before_public_endpoint +ironic.tests.unit.api.test_hooks.TestPublicUrlHook.test_before_public_endpoint ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_default +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_default ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_362_third_party_admin_cannot_get_target_list ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_362_third_party_admin_cannot_get_target_list ... ok -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_on_raise -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_on_raise ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate ... ok -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_backport_versions -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_backport_versions ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_fail -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_fail ... ok -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action ... ok +ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_invalid_cors_get_request +ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_invalid_cors_get_request ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_deploying +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_deploying ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_raw_smaller +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_raw_smaller ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_download_size +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_download_size ... ok +ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_invalid_cors_options_request +ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_invalid_cors_options_request ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_fast_track +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_fast_track ... ok +ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_valid_cors_get_request +ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_valid_cors_get_request ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_363_owner_reader_can_get_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_363_owner_reader_can_get_volume_target ... ok -ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_create_raid_with_raid_1_and_0 -ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_create_raid_with_raid_1_and_0 ... ok -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action_on_object -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action_on_object ... ok -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action_on_raise -ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action_on_raise ... ok -ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_create_raid_with_raid_5_and_0 -ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_create_raid_with_raid_5_and_0 ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_associate_node_powered_off -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_associate_node_powered_off ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_force_raw +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_force_raw ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_show_image_service +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_show_image_service ... ok +ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_valid_cors_options_request +ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_valid_cors_options_request ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_get_properties +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_get_properties ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_show_no_image_service +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_show_no_image_service ... ok +ironic.tests.unit.api.test_ospmiddleware.TestOsprofilerWsgiMiddleware.test_disable_osp_wsgi_request +ironic.tests.unit.api.test_ospmiddleware.TestOsprofilerWsgiMiddleware.test_disable_osp_wsgi_request ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_loading_error +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_loading_error ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_364_lessee_reader_can_get_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_364_lessee_reader_can_get_volume_target ... ok -ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_delete_raid_configuration -ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_delete_raid_configuration ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_associate_node_powered_on -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_associate_node_powered_on ... ok -ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_delete_raid_configuration_return_cleared_raid_config -ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_delete_raid_configuration_return_cleared_raid_config ... ok +ironic.tests.unit.api.test_ospmiddleware.TestOsprofilerWsgiMiddleware.test_enable_osp_wsgi_request +ironic.tests.unit.api.test_ospmiddleware.TestOsprofilerWsgiMiddleware.test_enable_osp_wsgi_request ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_already_raw_format +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_already_raw_format ... ok +ironic.tests.unit.api.test_root.TestRoot.test_get_root +ironic.tests.unit.api.test_root.TestRoot.test_get_root ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_backing_file_present +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_backing_file_present ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_post_configuration +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_post_configuration ... ok +ironic.tests.unit.api.test_root.TestRoot.test_no_html_errors +ironic.tests.unit.api.test_root.TestRoot.test_no_html_errors ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_no_file_format +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_no_file_format ... ok +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_validate +ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_validate ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_not_raw_after_conversion +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_not_raw_after_conversion ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_content_length +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_content_length ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_done +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_done ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_content_type +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_content_type ... ok +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-a9dff269-de92-415d-8c98-4ac2073dfa59 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"history": [{"uuid": "4cad42c8-cc57-4d7e-99f7-ca7a56dcc890", "created_at": "2024-01-06T14:13:44.908542+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4cad42c8-cc57-4d7e-99f7-ca7a56dcc890", "rel": "self"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-82235569-e744-453b-8658-ee651d7f8e7b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"history": [{"uuid": "c3b32ed2-3e06-435c-8554-a4033695b7cc", "created_at": "2024-01-06T14:13:45.179222+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/c3b32ed2-3e06-435c-8554-a4033695b7cc", "rel": "self"}]}]} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-82235569-e744-453b-8658-ee651d7f8e7b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"history": [{"uuid": "c3b32ed2-3e06-435c-8554-a4033695b7cc", "created_at": "2024-01-06T14:13:45.179222+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/c3b32ed2-3e06-435c-8554-a4033695b7cc", "rel": "self"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-d00f8a86-e46d-4d2f-b42d-7e0ae248a91b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"history": [{"uuid": "84d21f6e-354f-4edf-8b34-64d504cd56ba", "created_at": "2024-01-06T14:13:45.431533+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/84d21f6e-354f-4edf-8b34-64d504cd56ba", "rel": "self"}]}]} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-d00f8a86-e46d-4d2f-b42d-7e0ae248a91b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"history": [{"uuid": "84d21f6e-354f-4edf-8b34-64d504cd56ba", "created_at": "2024-01-06T14:13:45.431533+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/84d21f6e-354f-4edf-8b34-64d504cd56ba", "rel": "self"}]}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/a67cd81a-bad6-444b-9dd0-3d14ff3d114f +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/a67cd81a-bad6-444b-9dd0-3d14ff3d114f {} +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-95534407-276f-4fa2-b6f8-96755be35c4c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "a67cd81a-bad6-444b-9dd0-3d14ff3d114f", "created_at": "2024-01-06T14:13:45.701743+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/a67cd81a-bad6-444b-9dd0-3d14ff3d114f", "rel": "self"}]} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-95534407-276f-4fa2-b6f8-96755be35c4c +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "a67cd81a-bad6-444b-9dd0-3d14ff3d114f", "created_at": "2024-01-06T14:13:45.701743+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/a67cd81a-bad6-444b-9dd0-3d14ff3d114f", "rel": "self"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/2c285c54-e20e-460c-b6a6-ead2b648df5a +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/2c285c54-e20e-460c-b6a6-ead2b648df5a {} +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-bc556ac8-1fc6-4f83-a939-3b5fe5141116 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "2c285c54-e20e-460c-b6a6-ead2b648df5a", "created_at": "2024-01-06T14:13:45.962587+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/2c285c54-e20e-460c-b6a6-ead2b648df5a", "rel": "self"}]} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-bc556ac8-1fc6-4f83-a939-3b5fe5141116 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "2c285c54-e20e-460c-b6a6-ead2b648df5a", "created_at": "2024-01-06T14:13:45.962587+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/2c285c54-e20e-460c-b6a6-ead2b648df5a", "rel": "self"}]} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/130615fd-2b45-4d00-9b43-55bf944c62db +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/130615fd-2b45-4d00-9b43-55bf944c62db {} +GOT:Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-ffc45008-2155-4852-a632-f88c875b355b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "130615fd-2b45-4d00-9b43-55bf944c62db", "created_at": "2024-01-06T14:13:46.213895+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/130615fd-2b45-4d00-9b43-55bf944c62db", "rel": "self"}]} +ACL Test GOT Response: 200 OK +Content-Type: application/json +Openstack-Request-Id: req-ffc45008-2155-4852-a632-f88c875b355b +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"uuid": "130615fd-2b45-4d00-9b43-55bf944c62db", "created_at": "2024-01-06T14:13:46.213895+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/130615fd-2b45-4d00-9b43-55bf944c62db", "rel": "self"}]} +GET: / {} +GOT:{'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.80'}, 'versions': [{'id': 'v1', 'links': [{'href': 'http://localhost/v1/', 'rel': 'self'}], 'status': 'CURRENT', 'min_version': '1.1', 'version': '1.80'}]} +GET: /v1/foo {} +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +DELETE: /v1/ +ironic.tests.unit.api.test_root.TestRoot.test_no_html_errors2 +ironic.tests.unit.api.test_root.TestRoot.test_no_html_errors2 ... ok +ironic.tests.unit.common.test_cinder.TestCinderClient.test_get_client +ironic.tests.unit.common.test_cinder.TestCinderClient.test_get_client ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_other_error +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_other_error ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e8c8ad0a-430a-4dac-9146-ee27642dcd21 +Openstack-Request-Id: req-1d4e02e3-ab97-4d7a-979b-0bcbe8c28864 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"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": "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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e8c8ad0a-430a-4dac-9146-ee27642dcd21 +Openstack-Request-Id: req-1d4e02e3-ab97-4d7a-979b-0bcbe8c28864 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48340,14 +44398,14 @@ GET: /v1/volume/targets {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-74b7e2fb-ec1e-4d8e-87aa-63cdc88908cb +Openstack-Request-Id: req-993b0186-c6e1-4517-9e80-76170c5074f3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-74b7e2fb-ec1e-4d8e-87aa-63cdc88908cb +Openstack-Request-Id: req-993b0186-c6e1-4517-9e80-76170c5074f3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48356,14 +44414,14 @@ GET: /v1/volume/targets {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-eaf9285c-4b57-41ef-be6f-5fd9892198d3 +Openstack-Request-Id: req-4edcf5db-e090-4972-bae9-25f1a8414ae5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"targets": []} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-eaf9285c-4b57-41ef-be6f-5fd9892198d3 +Openstack-Request-Id: req-4edcf5db-e090-4972-bae9-25f1a8414ae5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48372,96 +44430,118 @@ GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0c5c4d54-5c5f-49c4-9c79-77b75f5c3ad2 +Openstack-Request-Id: req-5dc1a726-b41a-4817-b9e0-0fd1fe557b31 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:43:36.776339+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/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:47.005290+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/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} properties {'redacted_contents': '** Value redacted: Requires permission baremetal:volume:view_target_properties access. Permission denied. **'} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-0c5c4d54-5c5f-49c4-9c79-77b75f5c3ad2 +Openstack-Request-Id: req-5dc1a726-b41a-4817-b9e0-0fd1fe557b31 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:43:36.776339+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/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:47.005290+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/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-357abd70-bffc-4f2c-9b80-fd04e9187df9 +Openstack-Request-Id: req-c17e52bc-cfe6-41f3-904a-f0832e9a4889 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:43:37.272331+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/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:47.261361+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/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-357abd70-bffc-4f2c-9b80-fd04e9187df9 +Openstack-Request-Id: req-c17e52bc-cfe6-41f3-904a-f0832e9a4889 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T13:43:37.272331+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/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2024-01-06T14:13:47.261361+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/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} API ACL Testing Path get /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GET: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 {} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_365_third_party_admin_cannot_get_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_365_third_party_admin_cannot_get_volume_target ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node ... ok -ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_fail_create_raid_without_target_raid_config -ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_fail_create_raid_without_target_raid_config ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_already_associated -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_already_associated ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_366_owner_admin_create_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_366_owner_admin_create_volume_target ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id_portgroup -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id_portgroup ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_already_locked -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_already_locked ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id_raise -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id_raise ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_fail +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_fail ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_redirect +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_redirect ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_returns_none +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_returns_none ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_in_progress +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_in_progress ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_simple +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_simple ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_367_owner_manager_create_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_367_owner_manager_create_volume_target ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__unbind_flat_ports -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__unbind_flat_ports ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation_forbidden -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation_forbidden ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__unbind_flat_ports_portgroup -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__unbind_flat_ports_portgroup ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation_in_maintenance -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation_in_maintenance ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_cleaning_network -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_cleaning_network ... ok +ironic.tests.unit.common.test_cinder.TestCinderUtils.test__create_metadata_dictionary +ironic.tests.unit.common.test_cinder.TestCinderUtils.test__create_metadata_dictionary ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_explicit +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_explicit ... ok +ironic.tests.unit.common.test_cinder.TestCinderUtils.test__get_attachment_id +ironic.tests.unit.common.test_cinder.TestCinderUtils.test__get_attachment_id ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_redfish_conn_error +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_redfish_conn_error ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_no_img_src +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_no_img_src ... ok +ironic.tests.unit.common.test_cinder.TestCinderUtils.test_is_volume_attached +ironic.tests.unit.common.test_cinder.TestCinderUtils.test_is_volume_attached ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_image +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_image ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_368_lessee_admin_create_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_368_lessee_admin_create_volume_target ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_fix_broken_interface -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_fix_broken_interface ... ok +ironic.tests.unit.common.test_cinder.TestCinderUtils.test_is_volume_available +ironic.tests.unit.common.test_cinder.TestCinderUtils.test_is_volume_available ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_still_waiting +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_still_waiting ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_image_with_type +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_image_with_type ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_non_glance +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_non_glance ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_whole_disk_image +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_whole_disk_image ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_task_monitor_not_found +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_task_monitor_not_found ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_bad_default +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_bad_default ... ok +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_whole_disk_non_glance +ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_whole_disk_non_glance ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_369_lessee_manager_create_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_369_lessee_manager_create_volume_target ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_cleaning_network_from_node -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_cleaning_network_from_node ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_from_invalid_driver -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_from_invalid_driver ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_inspection_network -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_inspection_network ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_hardware_type -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_hardware_type ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_field_with_broken_interface -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_field_with_broken_interface ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_wait_elapsed +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_wait_elapsed ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_calculated_defaults +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_calculated_defaults ... ok +ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_excludes_None +ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_excludes_None ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_configured_defaults +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_configured_defaults ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_last_update +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_last_update ... ok +ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_multiple_ports +ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_multiple_ports ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_fake +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_fake ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_fallback_defaults +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_fallback_defaults ... ok +ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_no_ports +ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_no_ports ... ok GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-43447440-065c-43b7-a945-3f9d91ee0109 +Openstack-Request-Id: req-43fc248e-b0d0-423c-93c2-580757580762 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-43447440-065c-43b7-a945-3f9d91ee0109 +Openstack-Request-Id: req-43fc248e-b0d0-423c-93c2-580757580762 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48470,146 +44550,222 @@ POST: /v1/volume/targets {'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/22f68e04-4afd-46e3-922a-68bd17d820dd -Openstack-Request-Id: req-65bcc873-453e-4200-b8e7-386f4c1eb6b6 +Location: http://localhost/v1/volume/targets/e13a68b3-5286-4209-bc17-3200ec2d4fcd +Openstack-Request-Id: req-9d99e064-7228-402f-bfc6-6cfe1a27f60c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "22f68e04-4afd-46e3-922a-68bd17d820dd", "created_at": "2024-01-06T13:43:38.495486+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/22f68e04-4afd-46e3-922a-68bd17d820dd", "rel": "self"}, {"href": "http://localhost/volume/targets/22f68e04-4afd-46e3-922a-68bd17d820dd", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} +{"uuid": "e13a68b3-5286-4209-bc17-3200ec2d4fcd", "created_at": "2024-01-06T14:13:47.906486+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/e13a68b3-5286-4209-bc17-3200ec2d4fcd", "rel": "self"}, {"href": "http://localhost/volume/targets/e13a68b3-5286-4209-bc17-3200ec2d4fcd", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} ACL Test GOT Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/volume/targets/22f68e04-4afd-46e3-922a-68bd17d820dd -Openstack-Request-Id: req-65bcc873-453e-4200-b8e7-386f4c1eb6b6 +Location: http://localhost/v1/volume/targets/e13a68b3-5286-4209-bc17-3200ec2d4fcd +Openstack-Request-Id: req-9d99e064-7228-402f-bfc6-6cfe1a27f60c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "22f68e04-4afd-46e3-922a-68bd17d820dd", "created_at": "2024-01-06T13:43:38.495486+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/22f68e04-4afd-46e3-922a-68bd17d820dd", "rel": "self"}, {"href": "http://localhost/volume/targets/22f68e04-4afd-46e3-922a-68bd17d820dd", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} +{"uuid": "e13a68b3-5286-4209-bc17-3200ec2d4fcd", "created_at": "2024-01-06T14:13:47.906486+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/e13a68b3-5286-4209-bc17-3200ec2d4fcd", "rel": "self"}, {"href": "http://localhost/volume/targets/e13a68b3-5286-4209-bc17-3200ec2d4fcd", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} API ACL Testing Path post /v1/volume/targets POST: /v1/volume/targets {'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/61a6c6b3-c2c4-417a-9516-dbc4149964bf -Openstack-Request-Id: req-2779a725-fdc0-4289-9a8d-663aadf9d3ae +Location: http://localhost/v1/volume/targets/55c32fa6-c8fc-4923-9dcd-2634f64e3edf +Openstack-Request-Id: req-e8577055-1138-4131-9dbf-269b4a35d9aa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "61a6c6b3-c2c4-417a-9516-dbc4149964bf", "created_at": "2024-01-06T13:43:39.080001+00:00", "updated_at": null, "boot_index": 3, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/61a6c6b3-c2c4-417a-9516-dbc4149964bf", "rel": "self"}, {"href": "http://localhost/volume/targets/61a6c6b3-c2c4-417a-9516-dbc4149964bf", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} +{"uuid": "55c32fa6-c8fc-4923-9dcd-2634f64e3edf", "created_at": "2024-01-06T14:13:48.189391+00:00", "updated_at": null, "boot_index": 3, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/55c32fa6-c8fc-4923-9dcd-2634f64e3edf", "rel": "self"}, {"href": "http://localhost/volume/targets/55c32fa6-c8fc-4923-9dcd-2634f64e3edf", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} ACL Test GOT Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/volume/targets/61a6c6b3-c2c4-417a-9516-dbc4149964bf -Openstack-Request-Id: req-2779a725-fdc0-4289-9a8d-663aadf9d3ae +Location: http://localhost/v1/volume/targets/55c32fa6-c8fc-4923-9dcd-2634f64e3edf +Openstack-Request-Id: req-e8577055-1138-4131-9dbf-269b4a35d9aa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "61a6c6b3-c2c4-417a-9516-dbc4149964bf", "created_at": "2024-01-06T13:43:39.080001+00:00", "updated_at": null, "boot_index": 3, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/61a6c6b3-c2c4-417a-9516-dbc4149964bf", "rel": "self"}, {"href": "http://localhost/volume/targets/61a6c6b3-c2c4-417a-9516-dbc4149964bf", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} +{"uuid": "55c32fa6-c8fc-4923-9dcd-2634f64e3edf", "created_at": "2024-01-06T14:13:48.189391+00:00", "updated_at": null, "boot_index": 3, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/55c32fa6-c8fc-4923-9dcd-2634f64e3edf", "rel": "self"}, {"href": "http://localhost/volume/targets/55c32fa6-c8fc-4923-9dcd-2634f64e3edf", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} API ACL Testing Path post /v1/volume/targets POST: /v1/volume/targets {'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/9da92619-acf5-4aec-b83f-527deb3026a2 -Openstack-Request-Id: req-17e201ec-9efb-40e7-8720-a453c3aa1bfe +Location: http://localhost/v1/volume/targets/99c217e7-77af-4e9b-b13b-18e5b5b99b92 +Openstack-Request-Id: req-3fdb9788-6279-4875-a180-05427f7305b3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "9da92619-acf5-4aec-b83f-527deb3026a2", "created_at": "2024-01-06T13:43:39.676630+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/9da92619-acf5-4aec-b83f-527deb3026a2", "rel": "self"}, {"href": "http://localhost/volume/targets/9da92619-acf5-4aec-b83f-527deb3026a2", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "99c217e7-77af-4e9b-b13b-18e5b5b99b92", "created_at": "2024-01-06T14:13:48.452398+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/99c217e7-77af-4e9b-b13b-18e5b5b99b92", "rel": "self"}, {"href": "http://localhost/volume/targets/99c217e7-77af-4e9b-b13b-18e5b5b99b92", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} ACL Test GOT Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/volume/targets/9da92619-acf5-4aec-b83f-527deb3026a2 -Openstack-Request-Id: req-17e201ec-9efb-40e7-8720-a453c3aa1bfe +Location: http://localhost/v1/volume/targets/99c217e7-77af-4e9b-b13b-18e5b5b99b92 +Openstack-Request-Id: req-3fdb9788-6279-4875-a180-05427f7305b3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "9da92619-acf5-4aec-b83f-527deb3026a2", "created_at": "2024-01-06T13:43:39.676630+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/9da92619-acf5-4aec-b83f-527deb3026a2", "rel": "self"}, {"href": "http://localhost/volume/targets/9da92619-acf5-4aec-b83f-527deb3026a2", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "99c217e7-77af-4e9b-b13b-18e5b5b99b92", "created_at": "2024-01-06T14:13:48.452398+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/99c217e7-77af-4e9b-b13b-18e5b5b99b92", "rel": "self"}, {"href": "http://localhost/volume/targets/99c217e7-77af-4e9b-b13b-18e5b5b99b92", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} API ACL Testing Path post /v1/volume/targets POST: /v1/volume/targets {'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/6c512e84-b575-4416-a62d-a5e17c8f61b9 -Openstack-Request-Id: req-6f80a511-c48c-4206-ab7e-0ea23aa0499c +Location: http://localhost/v1/volume/targets/59e24468-7fc3-4fcc-bcb8-fd5ca09ebdcc +Openstack-Request-Id: req-d57ff1b1-0c3d-45ab-bf34-10266321f444 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6c512e84-b575-4416-a62d-a5e17c8f61b9", "created_at": "2024-01-06T13:43:40.160120+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id3", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/6c512e84-b575-4416-a62d-a5e17c8f61b9", "rel": "self"}, {"href": "http://localhost/volume/targets/6c512e84-b575-4416-a62d-a5e17c8f61b9", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "59e24468-7fc3-4fcc-bcb8-fd5ca09ebdcc", "created_at": "2024-01-06T14:13:48.734892+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id3", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/59e24468-7fc3-4fcc-bcb8-fd5ca09ebdcc", "rel": "self"}, {"href": "http://localhost/volume/targets/59e24468-7fc3-4fcc-bcb8-fd5ca09ebdcc", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} ACL Test GOT Response: 201 Created Content-Type: application/json -Location: http://localhost/v1/volume/targets/6c512e84-b575-4416-a62d-a5e17c8f61b9 -Openstack-Request-Id: req-6f80a511-c48c-4206-ab7e-0ea23aa0499c +Location: http://localhost/v1/volume/targets/59e24468-7fc3-4fcc-bcb8-fd5ca09ebdcc +Openstack-Request-Id: req-d57ff1b1-0c3d-45ab-bf34-10266321f444 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "6c512e84-b575-4416-a62d-a5e17c8f61b9", "created_at": "2024-01-06T13:43:40.160120+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id3", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/6c512e84-b575-4416-a62d-a5e17c8f61b9", "rel": "self"}, {"href": "http://localhost/volume/targets/6c512e84-b575-4416-a62d-a5e17c8f61b9", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "59e24468-7fc3-4fcc-bcb8-fd5ca09ebdcc", "created_at": "2024-01-06T14:13:48.734892+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id3", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/59e24468-7fc3-4fcc-bcb8-fd5ca09ebdcc", "rel": "self"}, {"href": "http://localhost/volume/targets/59e24468-7fc3-4fcc-bcb8-fd5ca09ebdcc", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} API ACL Testing Path post /v1/volume/targets ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_370_third_party_admin_cannot_create_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_370_third_party_admin_cannot_create_volume_target ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_inspection_network_from_node -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_inspection_network_from_node ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_incorrect +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_incorrect ... ok +ironic.tests.unit.common.test_network.GetPortgroupByIdTestCase.test_portgroup_by_id +ironic.tests.unit.common.test_network.GetPortgroupByIdTestCase.test_portgroup_by_id ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_instance_info_override +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_instance_info_override ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_371_owner_member_can_patch_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_371_owner_member_can_patch_volume_target ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_provisioning_network -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_provisioning_network ... ok +ironic.tests.unit.common.test_network.GetPortgroupByIdTestCase.test_portgroup_by_id_no_such_portgroup +ironic.tests.unit.common.test_network.GetPortgroupByIdTestCase.test_portgroup_by_id_no_such_portgroup ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_not_fake +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_not_fake ... ok +ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address +ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_enabled_supported_interfaces +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_enabled_supported_interfaces ... ok +ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_show_failed +ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_show_failed ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_enabled_supported_interfaces_non_default +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_enabled_supported_interfaces_non_default ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_more_updates +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_more_updates ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_372_lessee_admin_can_patch_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_372_lessee_admin_can_patch_volume_target ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_rescuing_network -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_rescuing_network ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_get_node_network_data -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_get_node_network_data ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_init_no_cleaning_network -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_init_no_cleaning_network ... ok +ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_unbind_port_failed +ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_unbind_port_failed ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_get_hardware_type_existing +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_get_hardware_type_existing ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_get_hardware_type_missing +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_get_hardware_type_missing ... ok +ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_with_binding +ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_with_binding ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_wait +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_wait ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_invalid_rescue_interface +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_invalid_rescue_interface ... ok +ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_with_exception +ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_with_exception ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_data_drive +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_data_drive ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_invalid_storage_interface +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_invalid_storage_interface ... ok +ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_without_binding +ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_without_binding ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_373_lessee_manager_can_patch_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_373_lessee_manager_can_patch_volume_target ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_cleaning_network -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_cleaning_network ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_cleaning_network_from_node -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_cleaning_network_from_node ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_provisioning_network -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_provisioning_network ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_raid_interface_no_default +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_raid_interface_no_default ... ok +ironic.tests.unit.common.test_nova.TestNovaAdapter.test_get_nova_adapter +ironic.tests.unit.common.test_nova.TestNovaAdapter.test_get_nova_adapter ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_fan +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_fan ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_rescue_interface_default_from_conf +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_rescue_interface_default_from_conf ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_power +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_power ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_storage_interface +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_storage_interface ... ok +ironic.tests.unit.common.test_pxe_utils.CleanUpPxeEnvTestCase.test__clean_up_pxe_env +ironic.tests.unit.common.test_pxe_utils.CleanUpPxeEnvTestCase.test__clean_up_pxe_env ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_374_lessee_member_cannot_patch_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_374_lessee_member_cannot_patch_volume_target ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_rescuing_network -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_rescuing_network ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_from_node -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_from_node ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_storage_interface_default_from_conf +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_storage_interface_default_from_conf ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_temperatures +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_temperatures ... ok +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_none_storage_interface +ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_none_storage_interface ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_failed +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_failed ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_config +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_config ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_endpoint_less_than_download_delay +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_endpoint_less_than_download_delay ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_375_third_party_admin_cannot_patch_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_375_third_party_admin_cannot_patch_volume_target ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_allowed_state -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_allowed_state ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_inspection -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_inspection ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_inspection_exc -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_inspection_exc ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_failed_no_firmware_upd +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_failed_no_firmware_upd ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_multiple_containers +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_multiple_containers ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_ipxe_timeout +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_ipxe_timeout ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_no_key_no_exception +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_no_key_no_exception ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_status +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_status ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_iscsi_boot +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_iscsi_boot ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_status_no_firmware_upd +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_status_no_firmware_upd ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_376_owner_admin_can_delete_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_376_owner_admin_can_delete_volume_target ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_attach -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_attach ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_maintenance -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_maintenance ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_detach -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_detach ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected_with_prefix +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected_with_prefix ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected_with_prefix_underscore +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected_with_prefix_underscore ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_error +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_error ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_endpoint_detected +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_endpoint_detected ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_iscsi_boot_from_lists +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_iscsi_boot_from_lists ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_https +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_https ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_endpoint_with_suffix +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_endpoint_with_suffix ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_377_owner_manager_can_delete_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_377_owner_manager_can_delete_volume_target ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_not_allowed_state -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_not_allowed_state ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_list -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_list ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_invalid -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_invalid ... ok -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_port_changed -ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_port_changed ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_invalid_driver -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_invalid_driver ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_invalid_image_info +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_invalid_image_info ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_swift +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_swift ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_boot_iso +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_boot_iso ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_key_detected +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_key_detected ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_multiple_containers +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_multiple_containers ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_clear_secure_boot +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_clear_secure_boot ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_ipa_debug +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_ipa_debug ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_no_key_detected +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_no_key_detected ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_url_bad_no_info +ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_url_bad_no_info ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_clear_secure_boot_not_implemented +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_clear_secure_boot_not_implemented ... ok POST: /v1/volume/targets {'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-5af2bb78-5cb9-477b-bf06-dcbc3115e73b +Openstack-Request-Id: req-6ec912d3-5238-4e9f-9ac8-c36a640995a1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5af2bb78-5cb9-477b-bf06-dcbc3115e73b +Openstack-Request-Id: req-6ec912d3-5238-4e9f-9ac8-c36a640995a1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48618,14 +44774,14 @@ PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-519a18d4-9279-44ad-b499-5e985ba6d4b7 +Openstack-Request-Id: req-97c75c61-bc54-485e-8526-afde02109b2d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-519a18d4-9279-44ad-b499-5e985ba6d4b7 +Openstack-Request-Id: req-97c75c61-bc54-485e-8526-afde02109b2d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48634,14 +44790,14 @@ PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e4266f8d-d501-407c-9650-e82587271171 +Openstack-Request-Id: req-fd478b4c-00fd-4387-9cf1-c8d9af2719ee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e4266f8d-d501-407c-9650-e82587271171 +Openstack-Request-Id: req-fd478b4c-00fd-4387-9cf1-c8d9af2719ee X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48650,14 +44806,14 @@ PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0196aad7-994f-4855-8f50-e65a4428fc1c +Openstack-Request-Id: req-718d4241-5cc4-4705-bdbc-2fda7fe958d6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-0196aad7-994f-4855-8f50-e65a4428fc1c +Openstack-Request-Id: req-718d4241-5cc4-4705-bdbc-2fda7fe958d6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48666,14 +44822,14 @@ PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5861e0b6-722d-4348-9002-e8f938045efd +Openstack-Request-Id: req-3a3bba55-7f4f-43fe-b79d-1672a93c49f7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-5861e0b6-722d-4348-9002-e8f938045efd +Openstack-Request-Id: req-3a3bba55-7f4f-43fe-b79d-1672a93c49f7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48682,14 +44838,14 @@ PATCH: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1edd493b-b151-4fad-aec2-347f363df316 +Openstack-Request-Id: req-a436f4d8-aabd-4a66-8d42-216d4bdfa0fa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1edd493b-b151-4fad-aec2-347f363df316 +Openstack-Request-Id: req-a436f4d8-aabd-4a66-8d42-216d4bdfa0fa X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48698,14 +44854,14 @@ DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-29263773-6fac-43e6-9685-50412c2054e3 +Openstack-Request-Id: req-d08de58e-3f22-4120-b891-ad877fd700bc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-29263773-6fac-43e6-9685-50412c2054e3 +Openstack-Request-Id: req-d08de58e-3f22-4120-b891-ad877fd700bc X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48714,14 +44870,14 @@ DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-8a2c25ed-80c1-4210-a736-1c3e1660f7f6 +Openstack-Request-Id: req-0bf1a646-2f6e-46a1-831f-9b989a6f18a2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-8a2c25ed-80c1-4210-a736-1c3e1660f7f6 +Openstack-Request-Id: req-0bf1a646-2f6e-46a1-831f-9b989a6f18a2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48730,78 +44886,128 @@ DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_378_lessee_admin_can_delete_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_378_lessee_admin_can_delete_volume_target ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_done -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_done ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_maintenance_set_false -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_maintenance_set_false ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_detect_vendor +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_detect_vendor ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_local_boot +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_local_boot ... ok +ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_automatic_retry +ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_automatic_retry ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_379_lessee_manager_can_delete_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_379_lessee_manager_can_delete_volume_target ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_fail -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_fail ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_maintenance_with_broken_interface -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_maintenance_with_broken_interface ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_in_progress -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_in_progress ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_boot_device +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_boot_device ... ok +ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_driver_not_found +ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_driver_not_found ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_boot_mode +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_boot_mode ... ok +ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_hardware_type_success +ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_hardware_type_success ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_380_owner_member_cannot_delete_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_380_owner_member_cannot_delete_volume_target ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_invalid_state -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_invalid_state ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_reason_without_protected -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_reason_without_protected ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_redfish_conn_error -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_redfish_conn_error ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_still_waiting -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_still_waiting ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_set -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_set ... ok +ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_hardware_type_success_groups +ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_hardware_type_success_groups ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue_swift +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue_swift ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_indicator_state +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_indicator_state ... ok +ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_reset_interval +ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_reset_interval ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_no_ports_found +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_no_ports_found ... ok +ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_uncached +ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_uncached ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue_timeout +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue_timeout ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test__create_root_fs +ironic.tests.unit.common.test_images.FsImageTestCase.test__create_root_fs ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_381_lessee_member_cannot_delete_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_381_lessee_member_cannot_delete_volume_target ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_task_monitor_not_found -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_task_monitor_not_found ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_unset -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_unset ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_wait_elapsed -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_wait_elapsed ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_success +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_success ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test__generate_grub_cfg +ironic.tests.unit.common.test_images.FsImageTestCase.test__generate_grub_cfg ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test__generate_isolinux_cfg +ironic.tests.unit.common.test_images.FsImageTestCase.test__generate_isolinux_cfg ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_swift_partition +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_swift_partition ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_properties +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_properties ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files +ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fail_no_esp_imageimg +ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fail_no_esp_imageimg ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_secure_boot_state +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_secure_boot_state ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_382_third_party_admin_cannot_delete_volume_target ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_382_third_party_admin_cannot_delete_volume_target ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_invalid_state -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_invalid_state ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_last_update -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_last_update ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_reason_without_retired -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_reason_without_retired ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_more_updates -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_more_updates ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fail_with_ExecutionError +ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fail_with_ExecutionError ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_swift_wdi +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_swift_wdi ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fails_no_grub_cfg +ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fails_no_grub_cfg ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_secure_boot_state_not_implemented +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_secure_boot_state_not_implemented ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_bios +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_bios ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_clean_up_ipxe_config_uefi +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_clean_up_ipxe_config_uefi ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_bios_with_no_boot_mode +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_bios_with_no_boot_mode ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_deploy_iso +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_deploy_iso ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_sensors_data +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_sensors_data ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_383_owner_reader_can_get_volume_connectors ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_383_owner_reader_can_get_volume_connectors ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_set -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_set ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_wait -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_wait ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_data_drive -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_data_drive ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_unset -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_unset ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_instance_ipxe_bios +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_instance_ipxe_bios ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_deploy_iso_for_hrefs +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_deploy_iso_for_hrefs ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_boot_devices +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_boot_devices ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_esp_image +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_esp_image ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_instance_ipxe_uefi +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_instance_ipxe_uefi ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_esp_image_for_hrefs +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_esp_image_for_hrefs ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_boot_modes +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_boot_modes ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_for_uefi_with_deploy_iso +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_for_uefi_with_deploy_iso ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_ipxe_ipv6 +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_ipxe_ipv6 ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_384_lessee_reader_can_get_node_volume_connectors ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_384_lessee_reader_can_get_node_volume_connectors ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_fan -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_fan ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_power -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_power ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_with_reset_interfaces -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_with_reset_interfaces ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_temperatures -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_temperatures ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_indicators +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_indicators ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_for_uefi_with_esp_image +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_for_uefi_with_esp_image ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_ipxe_ipv6_uefi +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_ipxe_ipv6_uefi ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_mkisofs_fails +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_mkisofs_fails ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_inject_nmi +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_inject_nmi ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_uefi_rootfs_fails +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_uefi_rootfs_fails ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_bios_mkisofs_fails +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_bios_mkisofs_fails ... ok GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4c08e241-3777-4ebf-ab8b-4d5cc7b11e73 +Openstack-Request-Id: req-b8459eca-59b1-4521-b1cb-3c27647ead52 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-4c08e241-3777-4ebf-ab8b-4d5cc7b11e73 +Openstack-Request-Id: req-b8459eca-59b1-4521-b1cb-3c27647ead52 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48810,14 +45016,14 @@ DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c453ed09-d096-4bd0-9443-7ecc75872c6c +Openstack-Request-Id: req-2c0d44a1-67d2-405c-a95c-992848fd7390 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c453ed09-d096-4bd0-9443-7ecc75872c6c +Openstack-Request-Id: req-2c0d44a1-67d2-405c-a95c-992848fd7390 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48826,14 +45032,14 @@ DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6988fdf8-bc97-428c-a2a2-a027f784628d +Openstack-Request-Id: req-48034114-6c3d-4a8c-b908-c1462597c33e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-6988fdf8-bc97-428c-a2a2-a027f784628d +Openstack-Request-Id: req-48034114-6c3d-4a8c-b908-c1462597c33e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48842,14 +45048,14 @@ DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-90ea3e71-7f6f-410d-9456-18da51d7b8f7 +Openstack-Request-Id: req-8e368be6-ec9d-4852-9bed-ab67dd3458a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} ACL Test GOT Response: 403 Forbidden Content-Type: application/json -Openstack-Request-Id: req-90ea3e71-7f6f-410d-9456-18da51d7b8f7 +Openstack-Request-Id: req-8e368be6-ec9d-4852-9bed-ab67dd3458a9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48858,14 +45064,14 @@ DELETE: /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-014de833-9c3a-43b6-b98c-c6da88537519 +Openstack-Request-Id: req-dc00b75e-e8ac-45a1-87ec-6b9f164847f8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-014de833-9c3a-43b6-b98c-c6da88537519 +Openstack-Request-Id: req-dc00b75e-e8ac-45a1-87ec-6b9f164847f8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48874,14 +45080,14 @@ GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/volume/connectors {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c22a7026-8fd5-44fd-abd9-20b653b0d309 +Openstack-Request-Id: req-fd89893b-51c9-430e-b158-039272689539 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"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"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c22a7026-8fd5-44fd-abd9-20b653b0d309 +Openstack-Request-Id: req-fd89893b-51c9-430e-b158-039272689539 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48890,14 +45096,14 @@ GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume/connectors {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-93934807-6ffd-4cbf-9564-cbfcdb03d83f +Openstack-Request-Id: req-4fa8cd52-9ca0-41e0-8a79-bd1d3a8ca47b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-93934807-6ffd-4cbf-9564-cbfcdb03d83f +Openstack-Request-Id: req-4fa8cd52-9ca0-41e0-8a79-bd1d3a8ca47b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48906,86 +45112,128 @@ GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume/connectors {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-87192ea6-6b2d-4349-b226-f2fc0c93419a +Openstack-Request-Id: req-df526717-ff3b-4f64-a774-6115cd249f1f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_385_third_party_admin_cannot_get_node_volume_connectors ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_385_third_party_admin_cannot_get_node_volume_connectors ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_failed -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_failed ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_failed_no_firmware_upd -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_failed_no_firmware_upd ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_allowed_state -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_allowed_state ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_status -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_status ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_status_no_firmware_upd -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_status_no_firmware_upd ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_error -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_error ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_unsupported_additional_volume_type +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_unsupported_additional_volume_type ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_inject_nmi_fail +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_inject_nmi_fail ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_bios_rootfs_fails +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_bios_rootfs_fails ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_loading_error +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_loading_error ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_386_owner_reader_can_get_node_volume_targets ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_386_owner_reader_can_get_node_volume_targets ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_no_previous_value -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_no_previous_value ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_https -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_https ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_swift -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_swift ... ok -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_not_allowed -ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_not_allowed ... ok +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_unsupported_volume_type +ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_unsupported_volume_type ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_conf_ldlinux +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_conf_ldlinux ... ok +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_contains_all_db_objects +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_contains_all_db_objects ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_default_ldlinux +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_default_ldlinux ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_reset_secure_boot_to_default +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_reset_secure_boot_to_default ... ok +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_current_object_versions +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_current_object_versions ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_inject_files +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_inject_files ... ok +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_current_rpc_version +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_current_rpc_version ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_reset_secure_boot_to_default_not_implemented +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_reset_secure_boot_to_default_not_implemented ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image ... ok +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_no_gaps_in_object_versions +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_no_gaps_in_object_versions ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_387_lessee_reader_can_get_node_volume_targets ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_387_lessee_reader_can_get_node_volume_targets ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_clear_secure_boot -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_clear_secure_boot ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_clear_secure_boot_not_implemented -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_clear_secure_boot_not_implemented ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image_dd_fails +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image_dd_fails ... ok +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_no_gaps_in_release_versions +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_no_gaps_in_release_versions ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image_mkfs_fails +ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image_mkfs_fails ... ok +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_object_names_are_registered +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_object_names_are_registered ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_default_all +ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_default_all ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_compat +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_compat ... ok +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_rpc_and_objects_versions_supported +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_rpc_and_objects_versions_supported ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_no_such_prop +ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_no_such_prop ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_388_third_part_admin_cannot_read_node_volume_targets ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_388_third_part_admin_cannot_read_node_volume_targets ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_detect_vendor -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_detect_vendor ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_address_active_node -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_address_active_node ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_boot_device -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_boot_device ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_with_prop_subset +ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_with_prop_subset ... ok +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_structure +ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_structure ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_failure +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_failure ... ok +ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_context +ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_context ... ok +ironic.tests.unit.common.test_images.FsImageTestCase.test_get_temp_url_for_glance_image +ironic.tests.unit.common.test_images.FsImageTestCase.test_get_temp_url_for_glance_image ... ok +ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_entity +ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_entity ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_noop +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_noop ... ok +ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_entity_empty_base +ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_entity_empty_base ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_connection_error +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_connection_error ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_389_owner_reader_cannot_get_drivers ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_389_owner_reader_cannot_get_drivers ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_boot_mode -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_boot_mode ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_address_maintenance -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_address_maintenance ... ok +ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_context +ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_context ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_empty +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_empty ... ok +ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_entity +ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_entity ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device ... ok +ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_entity_empty_base +ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_entity_empty_base ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_390_lessee_reader_cannot_get_drivers ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_390_lessee_reader_cannot_get_drivers ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_indicator_state -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_indicator_state ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_active_state_and_maintenance -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_active_state_and_maintenance ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_no_ports_found -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_no_ports_found ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_success -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_success ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_deleting_state -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_deleting_state ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_properties -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_properties ... ok +ironic.tests.unit.common.test_states.StatesTest.test_state_values_length +ironic.tests.unit.common.test_states.StatesTest.test_state_values_length ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http_error +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http_error ... ok +ironic.tests.unit.common.test_swift.SwiftTestCase.test___init__ +ironic.tests.unit.common.test_swift.SwiftTestCase.test___init__ ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_fail +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_fail ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_391_third_party_admin_cannot_get_drivers ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_391_third_party_admin_cannot_get_drivers ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_locked -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_locked ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_secure_boot_state -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_secure_boot_state ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_manageable_state -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_manageable_state ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_secure_boot_state_not_implemented -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_secure_boot_state_not_implemented ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_maintenance -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_maintenance ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http_noauth +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http_noauth ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_fail_no_change +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_fail_no_change ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_invalid_json +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_invalid_json ... ok +ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object +ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_mold_connection_error_exceeded +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_mold_connection_error_exceeded ... ok +ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_create_container_fails +ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_create_container_fails ... ok ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-87192ea6-6b2d-4349-b226-f2fc0c93419a +Openstack-Request-Id: req-df526717-ff3b-4f64-a774-6115cd249f1f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -48994,14 +45242,14 @@ GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/volume/targets {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-359acc45-2361-467e-a7a3-ecfa78d32649 +Openstack-Request-Id: req-af1b79c6-9766-4b99-9e60-68f2fb541d07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"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"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-359acc45-2361-467e-a7a3-ecfa78d32649 +Openstack-Request-Id: req-af1b79c6-9766-4b99-9e60-68f2fb541d07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49010,14 +45258,14 @@ GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume/targets {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-73fc79ac-f568-46ee-8bd0-029a8f5bf987 +Openstack-Request-Id: req-223ed865-eb84-4992-bd93-0a00e7a1e00c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"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": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-73fc79ac-f568-46ee-8bd0-029a8f5bf987 +Openstack-Request-Id: req-223ed865-eb84-4992-bd93-0a00e7a1e00c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49026,14 +45274,14 @@ GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume/targets {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a5838ed2-767b-4020-ae51-4aaa58b0c09f +Openstack-Request-Id: req-cd2fef23-283f-4c5b-9297-30cfadc1ba9d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-a5838ed2-767b-4020-ae51-4aaa58b0c09f +Openstack-Request-Id: req-cd2fef23-283f-4c5b-9297-30cfadc1ba9d X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49042,14 +45290,14 @@ GET: /v1/drivers {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-fa01de66-82ee-44cd-b893-a359649e89f6 +Openstack-Request-Id: req-f5ddf52a-166c-4855-8ab8-a58e2f92057a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-fa01de66-82ee-44cd-b893-a359649e89f6 +Openstack-Request-Id: req-f5ddf52a-166c-4855-8ab8-a58e2f92057a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49058,14 +45306,14 @@ GET: /v1/drivers {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-59ddaaae-c4c1-4ffc-a38b-0092ae3113b9 +Openstack-Request-Id: req-cb40e7d6-c83d-49f4-8c3e-8c2e1693b8a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-59ddaaae-c4c1-4ffc-a38b-0092ae3113b9 +Openstack-Request-Id: req-cb40e7d6-c83d-49f4-8c3e-8c2e1693b8a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49074,14 +45322,14 @@ GET: /v1/drivers {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-b66be2b1-e134-4673-aedd-d1a9775c38b4 +Openstack-Request-Id: req-f12c1d14-539b-4d55-981c-608a7f4e2407 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-b66be2b1-e134-4673-aedd-d1a9775c38b4 +Openstack-Request-Id: req-f12c1d14-539b-4d55-981c-608a7f4e2407 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49090,88 +45338,114 @@ GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-4ad87072-a0d0-4d6b-a01b-2de77569b002 +Openstack-Request-Id: req-76cd72aa-8626-4433-b4e9-fda478c48f52 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"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}"} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_392_owner_reader_cannot_get_drivers_vendor_passthru ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_392_owner_reader_cannot_get_drivers_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_sensors_data -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_sensors_data ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_node_deleting_state -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_node_deleting_state ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_boot_devices -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_boot_devices ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_validation_failure_conflict -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_validation_failure_conflict ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistence_fallback +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistence_fallback ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_swift +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_swift ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_393_lessee_reader_cannot_get_drivers_vendor_passthru ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_393_lessee_reader_cannot_get_drivers_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_boot_modes -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_boot_modes ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_validation_failure_inconsistent -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_validation_failure_inconsistent ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_indicators -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_indicators ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_port_changed_failure -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_port_changed_failure ... ok +ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_put_object_fails +ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_put_object_fails ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_swift_noauth +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_swift_noauth ... ok +ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object +ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_394_third_party_admin_cannot_get_drivers_vendor_passthru ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_394_third_party_admin_cannot_get_drivers_vendor_passthru ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_inject_nmi -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_inject_nmi ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_portgroup_active_node -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_portgroup_active_node ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_connection_error +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_connection_error ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency_no_change +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency_no_change ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_connection_error_exceeded +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_connection_error_exceeded ... ok +ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object_exc +ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object_exc ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency_vendor +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency_vendor ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_395_owner_reader_can_get_bios_setttings ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_395_owner_reader_can_get_bios_setttings ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_portgroup_enroll_node -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_portgroup_enroll_node ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_inject_nmi_fail -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_inject_nmi_fail ... ok +ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object_exc_resource_not_found +ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object_exc_resource_not_found ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http_error +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http_error ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode ... ok +ironic.tests.unit.common.test_swift.SwiftTestCase.test_get_temp_url +ironic.tests.unit.common.test_swift.SwiftTestCase.test_get_temp_url ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http_noauth +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http_noauth ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_396_lessee_reader_can_get_bios_settings ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_396_lessee_reader_can_get_bios_settings ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_loading_error -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_loading_error ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_to_node_in_inspect_wait_state -ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_to_node_in_inspect_wait_state ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_reset_secure_boot_to_default -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_reset_secure_boot_to_default ... ok -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_reset_secure_boot_to_default_not_implemented -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_reset_secure_boot_to_default_not_implemented ... ok -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_node_locked -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_node_locked ... ok +ironic.tests.unit.common.test_swift.SwiftTestCase.test_head_object +ironic.tests.unit.common.test_swift.SwiftTestCase.test_head_object ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_swift +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_swift ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode_fail +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode_fail ... ok +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_swift_noauth +ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_swift_noauth ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_397_third_party_admin_cannot_get_bios_settings ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_397_third_party_admin_cannot_get_bios_settings ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device ... ok -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_network_error -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_network_error ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_compat -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_compat ... ok -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_portgroup_physnet_inconsistent -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_portgroup_physnet_inconsistent ... ok +ironic.tests.unit.common.test_swift.SwiftTestCase.test_update_object_meta +ironic.tests.unit.common.test_swift.SwiftTestCase.test_update_object_meta ... ok +:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead +ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_empty +ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_empty ... ok +ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_correct_setting +ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_correct_setting ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode_unsupported +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode_unsupported ... ok +:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead +ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_exclude_port +ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_exclude_port ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_398_owner_reader_cannot_get_conductors ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_398_owner_reader_cannot_get_conductors ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_failure -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_failure ... ok -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_vif_invalid_for_attach -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_vif_invalid_for_attach ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_noop -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_noop ... ok +ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_default +ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_default ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_indicator_state +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_indicator_state ... ok +:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead +ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_exclude_port_no_id +ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_exclude_port_no_id ... ok +ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_default_limit +ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_default_limit ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state ... ok +:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_399_lessee_reader_cannot_get_conductors ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_399_lessee_reader_cannot_get_conductors ... ok -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_validate_error -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_validate_error ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device ... ok -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach ... ok -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_node_locked -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_node_locked ... ok +ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_one_port +ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_one_port ... ok +ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_negative_setting +ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_negative_setting ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_fails +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_fails ... ok +:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead +ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_zero_setting +ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_zero_setting ... ok +ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_two_ports +ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_two_ports ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_incorrect +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_incorrect ... ok +:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead +ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_two_ports_inconsistent +ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_two_ports_inconsistent ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_no_change +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_no_change ... ok ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-4ad87072-a0d0-4d6b-a01b-2de77569b002 +Openstack-Request-Id: req-76cd72aa-8626-4433-b4e9-fda478c48f52 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49180,14 +45454,14 @@ GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-ce49e860-160c-4d5f-893c-12395cd7e99f +Openstack-Request-Id: req-ccd19837-df40-4f2f-8493-df7d19d6d27f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"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}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-ce49e860-160c-4d5f-893c-12395cd7e99f +Openstack-Request-Id: req-ccd19837-df40-4f2f-8493-df7d19d6d27f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49196,14 +45470,14 @@ GET: /v1/drivers/fake-driverz/vendor_passthru/methods {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-786a7979-beab-48c5-a8d1-adedf67cb841 +Openstack-Request-Id: req-e74d209b-7528-49a3-af6a-ca710d8bcea1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"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}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-786a7979-beab-48c5-a8d1-adedf67cb841 +Openstack-Request-Id: req-e74d209b-7528-49a3-af6a-ca710d8bcea1 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49212,14 +45486,14 @@ GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/bios {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c26711be-ab43-4c7e-a233-883ef6a6e66b +Openstack-Request-Id: req-8b5fb3c4-d00b-42e8-9441-7ecf5d9b0f72 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"bios": []} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c26711be-ab43-4c7e-a233-883ef6a6e66b +Openstack-Request-Id: req-8b5fb3c4-d00b-42e8-9441-7ecf5d9b0f72 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49228,14 +45502,14 @@ GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/bios {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-74a6e00f-d5be-485a-8d33-19807516f507 +Openstack-Request-Id: req-13062634-62ee-4265-8754-ea7462c29d6f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"bios": []} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-74a6e00f-d5be-485a-8d33-19807516f507 +Openstack-Request-Id: req-13062634-62ee-4265-8754-ea7462c29d6f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49244,14 +45518,14 @@ GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/bios {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-24a5619f-ba4c-4c29-ae9c-adee47c3d1e0 +Openstack-Request-Id: req-1309f881-2783-42a5-a0a7-e3040cf93013 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-24a5619f-ba4c-4c29-ae9c-adee47c3d1e0 +Openstack-Request-Id: req-1309f881-2783-42a5-a0a7-e3040cf93013 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49260,14 +45534,14 @@ GET: /v1/conductors {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-148d1278-c40f-438f-b623-6f80f6d6cbc3 +Openstack-Request-Id: req-b6895d7d-e90f-49ea-8825-82289ee20b57 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-148d1278-c40f-438f-b623-6f80f6d6cbc3 +Openstack-Request-Id: req-b6895d7d-e90f-49ea-8825-82289ee20b57 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49276,14 +45550,14 @@ GET: /v1/conductors {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-0efcbe85-0847-4cf9-8132-42f3a847e538 +Openstack-Request-Id: req-b5f23bd4-51b7-4d39-86e8-0a0d46944567 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-0efcbe85-0847-4cf9-8132-42f3a847e538 +Openstack-Request-Id: req-b5f23bd4-51b7-4d39-86e8-0a0d46944567 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49292,60 +45566,80 @@ GET: /v1/conductors {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-1b14cdeb-0320-490a-848f-4752639c22df +Openstack-Request-Id: req-7ab7de9d-7001-430d-acaf-13487856c797 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:conductor:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_400_third_party_admin_cannot_get_conductors ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_400_third_party_admin_cannot_get_conductors ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_fail -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_fail ... ok +ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_wsgi_service_with_ssl_enabled +ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_wsgi_service_with_ssl_enabled ... ok +ironic.tests.unit.common.test_network.GetPortsByPortgroupIdTestCase.test_ports_by_portgroup_id +ironic.tests.unit.common.test_network.GetPortsByPortgroupIdTestCase.test_ports_by_portgroup_id ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_unknown +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_unknown ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_401_owner_reader_can_get_allocations ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_401_owner_reader_can_get_allocations ... ok -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_raises_network_error -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_raises_network_error ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_fail_no_change -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_fail_no_change ... ok -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_validate_error -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_validate_error ... ok +ironic.tests.unit.common.test_network.GetPortsByPortgroupIdTestCase.test_ports_by_portgroup_id_empty +ironic.tests.unit.common.test_network.GetPortsByPortgroupIdTestCase.test_ports_by_portgroup_id_empty ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_not_implemented +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_not_implemented ... ok +This is bad/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware ... ok +ironic.tests.unit.conductor.test_base_manager.MiscTestCase.test__fail_transient_state +ironic.tests.unit.conductor.test_base_manager.MiscTestCase.test__fail_transient_state ... ok +ironic.tests.unit.common.test_network.TestRemoveVifsTestCase.test_remove_vifs_from_node_failure +ironic.tests.unit.common.test_network.TestRemoveVifsTestCase.test_remove_vifs_from_node_failure ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_402_lessee_reader_can_get_allocations ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_402_lessee_reader_can_get_allocations ... ok -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_list -ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_list ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistence_fallback -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistence_fallback ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__add_ip_addresses_for_ipv6_stateful +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__add_ip_addresses_for_ipv6_stateful ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_invalid_args +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_invalid_args ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__uncidr_ipv4 +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__uncidr_ipv4 ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__uncidr_ipv6 +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__uncidr_ipv6 ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_stage +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_stage ... ok +ironic.tests.unit.conductor.test_base_manager.MiscTestCase.test__fail_transient_state_maintenance +ironic.tests.unit.conductor.test_base_manager.MiscTestCase.test__fail_transient_state_maintenance ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_403_owner_reader_can_get_their_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_403_owner_reader_can_get_their_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_version_cap -ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_version_cap ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency ... ok -ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_version_capped -ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_version_capped ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency_no_change -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency_no_change ... ok -ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_versions_in_sync -ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_versions_in_sync ... ok +/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_all_ports_fail +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_all_ports_fail ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_stage_both +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_stage_both ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_bad_step_return_value +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_bad_step_return_value ... ok +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_validate +ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_validate ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_404_lessee_reader_can_get_their_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_404_lessee_reader_can_get_their_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_add_node_traits -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_add_node_traits ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_add_node_traits_replace -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_add_node_traits_replace ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency_vendor -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency_vendor ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_create_port_False -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_create_port_False ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_create_port_True -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_create_port_True ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_rescue_false -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_rescue_false ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_create_some_ports_fail +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_create_some_ports_fail ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_execute_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_execute_fail ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_no_port +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_no_port ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_no_pxe_enabled_ports +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_no_pxe_enabled_ports ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_multiple_systems +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_multiple_systems ... ok ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-1b14cdeb-0320-490a-848f-4752639c22df +Openstack-Request-Id: req-7ab7de9d-7001-430d-acaf-13487856c797 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49354,412 +45648,378 @@ GET: /v1/allocations {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3c996130-e508-46df-905e-133e2b98d8e6 +Openstack-Request-Id: req-50d314e9-74d7-486d-b0f2-f27e5d5aedf3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "fd3676cc-d7b6-4047-8917-eceba1ab5b7d", "created_at": "2024-01-06T13:43:59.141461+00:00", "updated_at": "2024-01-06T13:43:59.148792+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/fd3676cc-d7b6-4047-8917-eceba1ab5b7d", "rel": "self"}, {"href": "http://localhost/allocations/fd3676cc-d7b6-4047-8917-eceba1ab5b7d", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} +{"allocations": [{"uuid": "2516b127-7dd7-4701-a25d-956a7d0479db", "created_at": "2024-01-06T14:13:57.091482+00:00", "updated_at": "2024-01-06T14:13:57.096856+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/2516b127-7dd7-4701-a25d-956a7d0479db", "rel": "self"}, {"href": "http://localhost/allocations/2516b127-7dd7-4701-a25d-956a7d0479db", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-3c996130-e508-46df-905e-133e2b98d8e6 +Openstack-Request-Id: req-50d314e9-74d7-486d-b0f2-f27e5d5aedf3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "fd3676cc-d7b6-4047-8917-eceba1ab5b7d", "created_at": "2024-01-06T13:43:59.141461+00:00", "updated_at": "2024-01-06T13:43:59.148792+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/fd3676cc-d7b6-4047-8917-eceba1ab5b7d", "rel": "self"}, {"href": "http://localhost/allocations/fd3676cc-d7b6-4047-8917-eceba1ab5b7d", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} +{"allocations": [{"uuid": "2516b127-7dd7-4701-a25d-956a7d0479db", "created_at": "2024-01-06T14:13:57.091482+00:00", "updated_at": "2024-01-06T14:13:57.096856+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/2516b127-7dd7-4701-a25d-956a7d0479db", "rel": "self"}, {"href": "http://localhost/allocations/2516b127-7dd7-4701-a25d-956a7d0479db", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} API ACL Testing Path get /v1/allocations GET: /v1/allocations {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-409aa064-200b-47cf-900a-584282a04067 +Openstack-Request-Id: req-f345e154-532b-4692-a880-a8c8886a6608 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "7571c8e0-d66f-4d09-b36e-dd382bb8f514", "created_at": "2024-01-06T13:43:59.418920+00:00", "updated_at": "2024-01-06T13:43:59.428200+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/7571c8e0-d66f-4d09-b36e-dd382bb8f514", "rel": "self"}, {"href": "http://localhost/allocations/7571c8e0-d66f-4d09-b36e-dd382bb8f514", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} +{"allocations": [{"uuid": "70297e43-95f3-4c02-b388-4c6cfdc32ac1", "created_at": "2024-01-06T14:13:57.374709+00:00", "updated_at": "2024-01-06T14:13:57.380040+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/70297e43-95f3-4c02-b388-4c6cfdc32ac1", "rel": "self"}, {"href": "http://localhost/allocations/70297e43-95f3-4c02-b388-4c6cfdc32ac1", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-409aa064-200b-47cf-900a-584282a04067 +Openstack-Request-Id: req-f345e154-532b-4692-a880-a8c8886a6608 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"allocations": [{"uuid": "7571c8e0-d66f-4d09-b36e-dd382bb8f514", "created_at": "2024-01-06T13:43:59.418920+00:00", "updated_at": "2024-01-06T13:43:59.428200+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/7571c8e0-d66f-4d09-b36e-dd382bb8f514", "rel": "self"}, {"href": "http://localhost/allocations/7571c8e0-d66f-4d09-b36e-dd382bb8f514", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} -API ACL Testing Path get /v1/allocations/0491806a-ee46-4bf8-94b6-3b3258e52e24 -GET: /v1/allocations/0491806a-ee46-4bf8-94b6-3b3258e52e24 {} +{"allocations": [{"uuid": "70297e43-95f3-4c02-b388-4c6cfdc32ac1", "created_at": "2024-01-06T14:13:57.374709+00:00", "updated_at": "2024-01-06T14:13:57.380040+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/70297e43-95f3-4c02-b388-4c6cfdc32ac1", "rel": "self"}, {"href": "http://localhost/allocations/70297e43-95f3-4c02-b388-4c6cfdc32ac1", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} +API ACL Testing Path get /v1/allocations/0833914f-4cae-498c-8ba7-2280b60b4a02 +GET: /v1/allocations/0833914f-4cae-498c-8ba7-2280b60b4a02 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-16d13d74-abcd-4b1c-b804-1d0875eac5c1 +Openstack-Request-Id: req-85150f6f-6850-42a5-bc3c-f1ba8f9450a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "0491806a-ee46-4bf8-94b6-3b3258e52e24", "created_at": "2024-01-06T13:43:59.966774+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/0491806a-ee46-4bf8-94b6-3b3258e52e24", "rel": "self"}, {"href": "http://localhost/allocations/0491806a-ee46-4bf8-94b6-3b3258e52e24", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} +{"uuid": "0833914f-4cae-498c-8ba7-2280b60b4a02", "created_at": "2024-01-06T14:13:57.600508+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/0833914f-4cae-498c-8ba7-2280b60b4a02", "rel": "self"}, {"href": "http://localhost/allocations/0833914f-4cae-498c-8ba7-2280b60b4a02", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} resource_class CUSTOM_TEST ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-16d13d74-abcd-4b1c-b804-1d0875eac5c1 +Openstack-Request-Id: req-85150f6f-6850-42a5-bc3c-f1ba8f9450a0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "0491806a-ee46-4bf8-94b6-3b3258e52e24", "created_at": "2024-01-06T13:43:59.966774+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/0491806a-ee46-4bf8-94b6-3b3258e52e24", "rel": "self"}, {"href": "http://localhost/allocations/0491806a-ee46-4bf8-94b6-3b3258e52e24", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} -API ACL Testing Path get /v1/allocations/5f35ed8b-2580-4171-a1e0-d82164862135 -GET: /v1/allocations/5f35ed8b-2580-4171-a1e0-d82164862135 {} +{"uuid": "0833914f-4cae-498c-8ba7-2280b60b4a02", "created_at": "2024-01-06T14:13:57.600508+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/0833914f-4cae-498c-8ba7-2280b60b4a02", "rel": "self"}, {"href": "http://localhost/allocations/0833914f-4cae-498c-8ba7-2280b60b4a02", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} +API ACL Testing Path get /v1/allocations/4bbcbebd-233d-4dfe-a91c-b919860c406e +GET: /v1/allocations/4bbcbebd-233d-4dfe-a91c-b919860c406e {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6fc43dec-1292-4d98-a93f-1de213c5ef40 +Openstack-Request-Id: req-5690224b-027f-4b48-a58c-822bdeb75b10 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5f35ed8b-2580-4171-a1e0-d82164862135", "created_at": "2024-01-06T13:44:00.576225+00:00", "updated_at": "2024-01-06T13:44:00.581805+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/5f35ed8b-2580-4171-a1e0-d82164862135", "rel": "self"}, {"href": "http://localhost/allocations/5f35ed8b-2580-4171-a1e0-d82164862135", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "4bbcbebd-233d-4dfe-a91c-b919860c406e", "created_at": "2024-01-06T14:13:57.882966+00:00", "updated_at": "2024-01-06T14:13:57.888333+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/4bbcbebd-233d-4dfe-a91c-b919860c406e", "rel": "self"}, {"href": "http://localhost/allocations/4bbcbebd-233d-4dfe-a91c-b919860c406e", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} resource_class CUSTOM_LEASED ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6fc43dec-1292-4d98-a93f-1de213c5ef40 +Openstack-Request-Id: req-5690224b-027f-4b48-a58c-822bdeb75b10 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "5f35ed8b-2580-4171-a1e0-d82164862135", "created_at": "2024-01-06T13:44:00.576225+00:00", "updated_at": "2024-01-06T13:44:00.581805+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/5f35ed8b-2580-4171-a1e0-d82164862135", "rel": "self"}, {"href": "http://localhost/allocations/5f35ed8b-2580-4171-a1e0-d82164862135", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} -API ACL Testing Path delete /v1/allocations/fd4f343a-5124-4f3b-a87e-a19e6cb9f7de -DELETE: /v1/allocations/fd4f343a-5124-4f3b-a87e-a19e6cb9f7de +{"uuid": "4bbcbebd-233d-4dfe-a91c-b919860c406e", "created_at": "2024-01-06T14:13:57.882966+00:00", "updated_at": "2024-01-06T14:13:57.888333+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/4bbcbebd-233d-4dfe-a91c-b919860c406e", "rel": "self"}, {"href": "http://localhost/allocations/4bbcbebd-233d-4dfe-a91c-b919860c406e", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +API ACL Testing Path delete /v1/allocations/64f7b6b3-fef3-46cf-ac41-ff62c4f3666c +DELETE: /v1/allocations/64f7b6b3-fef3-46cf-ac41-ff62c4f3666c ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_405_owner_admin_can_delete_their_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_405_owner_admin_can_delete_their_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_rescue_true -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_rescue_true ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode_fail -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode_fail ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_boot_mode -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_boot_mode ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_fail_in_tear_down_cleaning +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_fail_in_tear_down_cleaning ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_406_owner_manager_can_delete_their_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_406_owner_manager_can_delete_their_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_power_state -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_power_state ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode_unsupported -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode_unsupported ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_secure_boot -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_secure_boot ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_indicator_state -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_indicator_state ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_clean -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_clean ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_last_step_noop +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_last_step_noop ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_access_error_retry +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_access_error_retry ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_all_ports +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_all_ports ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_no_steps +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_no_steps ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_attribute_error +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_attribute_error ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_instance_uuid +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_instance_uuid ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_407_lessee_admin_can_delete_their_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_407_lessee_admin_can_delete_their_allocation ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_deploy -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_deploy ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_fails -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_fails ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_allocation -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_node -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_node ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_with_sg +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_with_sg ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_connection_error_retry +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_connection_error_retry ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_fast_track +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_fast_track ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_408_lessee_manager_can_delete_their_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_408_lessee_manager_can_delete_their_allocation ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_incorrect -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_incorrect ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_port -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_port ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_no_change -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_no_change ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_allocation -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_allocation ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_unknown -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_unknown ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_node -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_node ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_portgroup -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_portgroup ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_not_implemented -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_not_implemented ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_not_found +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_not_found ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_last_step_noop_fast_track +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_last_step_noop_fast_track ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_with_client_id_to_network +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_with_client_id_to_network ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_bad_step_return_value +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_bad_step_return_value ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_wait_until_get_system_ready +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_wait_until_get_system_ready ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_smartnic_port_to_network +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_smartnic_port_to_network ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_409_owner_member_can_delete_their_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_409_owner_member_can_delete_their_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_volume_connector -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_volume_connector ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_volume_target -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_volume_target ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_invalid_args -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_invalid_args ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_clean -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_clean ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_deploy -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_deploy ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_local_group_information +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_local_group_information ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_execute_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_execute_fail ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_wait_until_get_system_ready_with_connection_error +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_wait_until_get_system_ready_with_connection_error ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_neutron_port_data +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_neutron_port_data ... ok +ironic.tests.unit.drivers.modules.storage.test_external.ExternalInterfaceTestCase.test_should_write_image +ironic.tests.unit.drivers.modules.storage.test_external.ExternalInterfaceTestCase.test_should_write_image ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_410_lessee_member_can_delete_their_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_410_lessee_member_can_delete_their_allocation ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_stage -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_stage ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_deploy_with_deploy_steps -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_deploy_with_deploy_steps ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_rescue -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_rescue ... ok -/usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_stage_both -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_stage_both ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_tear_down -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_tear_down ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_fail_in_tear_down_cleaning +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_fail_in_tear_down_cleaning ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_neutron_port_data_ipv6 +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_neutron_port_data_ipv6 ... ok +ironic.tests.unit.drivers.modules.storage.test_external.ExternalInterfaceTestCase.test_validate_fails_with_ipxe_not_enabled +ironic.tests.unit.drivers.modules.storage.test_external.ExternalInterfaceTestCase.test_validate_fails_with_ipxe_not_enabled ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_node_portmap +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_node_portmap ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_last_step_noop +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_last_step_noop ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_411_owner_member_can_patch_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_411_owner_member_can_patch_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_unrescue -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_unrescue ... ok -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_validate -ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_validate ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_driver_vendor_passthru -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_driver_vendor_passthru ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_boot_device -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_boot_device ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_auto -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_auto ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_conductor_for -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_conductor_for ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_basic -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_basic ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_console_information -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_console_information ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_is_smartnic_port_false +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_is_smartnic_port_false ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_bad_command_result +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_bad_command_result ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_is_smartnic_port_true +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_is_smartnic_port_true ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_bad_command_result2 +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_bad_command_result2 ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_registered_clean +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_registered_clean ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports ... ok GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-964513b9-2542-4afc-a144-29c042adf846 +Openstack-Request-Id: req-ec064e74-cdce-4fc9-8654-b150fe122c07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-964513b9-2542-4afc-a144-29c042adf846 +Openstack-Request-Id: req-ec064e74-cdce-4fc9-8654-b150fe122c07 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/31f8f3d5-feb5-4dad-bb9c-2944437ccdf5 -DELETE: /v1/allocations/31f8f3d5-feb5-4dad-bb9c-2944437ccdf5 +API ACL Testing Path delete /v1/allocations/805ef6e0-e966-4060-be14-93349d0f4cc2 +DELETE: /v1/allocations/805ef6e0-e966-4060-be14-93349d0f4cc2 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d8ea42ca-0e5f-4f78-85b1-68b40dd0f1da +Openstack-Request-Id: req-e2f52065-61f2-48d1-be29-5303072c29e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d8ea42ca-0e5f-4f78-85b1-68b40dd0f1da +Openstack-Request-Id: req-e2f52065-61f2-48d1-be29-5303072c29e0 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/ff9ade93-8df3-4cce-8931-44493454057b -DELETE: /v1/allocations/ff9ade93-8df3-4cce-8931-44493454057b +API ACL Testing Path delete /v1/allocations/9d09804b-df29-4dc5-9825-c946cb1e9d37 +DELETE: /v1/allocations/9d09804b-df29-4dc5-9825-c946cb1e9d37 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1a2e2179-3092-4334-908f-9bc4c15b8c52 +Openstack-Request-Id: req-220330d9-51f1-4aba-813c-3d6e2b168c2e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-1a2e2179-3092-4334-908f-9bc4c15b8c52 +Openstack-Request-Id: req-220330d9-51f1-4aba-813c-3d6e2b168c2e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/1fcf04b0-1553-466a-80ef-6c4d2dba611b -DELETE: /v1/allocations/1fcf04b0-1553-466a-80ef-6c4d2dba611b +API ACL Testing Path delete /v1/allocations/cd3bebee-692e-441c-bece-a77a4b864f9f +DELETE: /v1/allocations/cd3bebee-692e-441c-bece-a77a4b864f9f GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7c2c19cc-c8a9-4108-8816-66d485f4d08a +Openstack-Request-Id: req-946d1ab6-1c3c-430e-9188-da04f1526509 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-7c2c19cc-c8a9-4108-8816-66d485f4d08a +Openstack-Request-Id: req-946d1ab6-1c3c-430e-9188-da04f1526509 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/9f294563-6f2e-4662-8842-8f2424de3cd3 -DELETE: /v1/allocations/9f294563-6f2e-4662-8842-8f2424de3cd3 +API ACL Testing Path delete /v1/allocations/3e2bc208-1924-4d0b-bcbf-af4a5f268727 +DELETE: /v1/allocations/3e2bc208-1924-4d0b-bcbf-af4a5f268727 GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c4130cec-ce4d-482d-adca-0713b179c3fd +Openstack-Request-Id: req-9a16469b-0072-4542-8e19-443e500e79be X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-c4130cec-ce4d-482d-adca-0713b179c3fd +Openstack-Request-Id: req-9a16469b-0072-4542-8e19-443e500e79be X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/075f4118-4dbc-4722-8183-aab7bda5ca0b -DELETE: /v1/allocations/075f4118-4dbc-4722-8183-aab7bda5ca0b +API ACL Testing Path delete /v1/allocations/3a5566b7-c868-48ea-9c99-818c3da5744a +DELETE: /v1/allocations/3a5566b7-c868-48ea-9c99-818c3da5744a GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e038d6ad-5dd9-495a-a85e-228ed01d1079 +Openstack-Request-Id: req-103a1021-2f9c-4087-94dc-3eb803fe5e74 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-e038d6ad-5dd9-495a-a85e-228ed01d1079 +Openstack-Request-Id: req-103a1021-2f9c-4087-94dc-3eb803fe5e74 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path patch /v1/allocations/b951834d-9d26-4423-9346-bc5dd5f01c16 -PATCH: /v1/allocations/b951834d-9d26-4423-9346-bc5dd5f01c16 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +API ACL Testing Path patch /v1/allocations/eacb0c1c-5a01-4841-9959-2a6738c8bb2a +PATCH: /v1/allocations/eacb0c1c-5a01-4841-9959-2a6738c8bb2a [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6be7cbfe-19d9-455c-ad37-4388cac9ccc1 +Openstack-Request-Id: req-d35d0780-07a9-48ca-89e7-a2e761190efe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "b951834d-9d26-4423-9346-bc5dd5f01c16", "created_at": "2024-01-06T13:44:05.133328+00:00", "updated_at": "2024-01-06T13:44:05.419512+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/b951834d-9d26-4423-9346-bc5dd5f01c16", "rel": "self"}, {"href": "http://localhost/allocations/b951834d-9d26-4423-9346-bc5dd5f01c16", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} +{"uuid": "eacb0c1c-5a01-4841-9959-2a6738c8bb2a", "created_at": "2024-01-06T14:13:59.779534+00:00", "updated_at": "2024-01-06T14:13:59.905705+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/eacb0c1c-5a01-4841-9959-2a6738c8bb2a", "rel": "self"}, {"href": "http://localhost/allocations/eacb0c1c-5a01-4841-9959-2a6738c8bb2a", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-6be7cbfe-19d9-455c-ad37-4388cac9ccc1 +Openstack-Request-Id: req-d35d0780-07a9-48ca-89e7-a2e761190efe X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "b951834d-9d26-4423-9346-bc5dd5f01c16", "created_at": "2024-01-06T13:44:05.133328+00:00", "updated_at": "2024-01-06T13:44:05.419512+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/b951834d-9d26-4423-9346-bc5dd5f01c16", "rel": "self"}, {"href": "http://localhost/allocations/b951834d-9d26-4423-9346-bc5dd5f01c16", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} -API ACL Testing Path patch /v1/allocations/c7208ea2-db55-447c-baa0-cbf7ed367230 -PATCH: /v1/allocations/c7208ea2-db55-447c-baa0-cbf7ed367230 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +{"uuid": "eacb0c1c-5a01-4841-9959-2a6738c8bb2a", "created_at": "2024-01-06T14:13:59.779534+00:00", "updated_at": "2024-01-06T14:13:59.905705+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/eacb0c1c-5a01-4841-9959-2a6738c8bb2a", "rel": "self"}, {"href": "http://localhost/allocations/eacb0c1c-5a01-4841-9959-2a6738c8bb2a", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} +API ACL Testing Path patch /v1/allocations/0e57f4d4-d9bf-4e5b-bcd8-ec0385df5806 +PATCH: /v1/allocations/0e57f4d4-d9bf-4e5b-bcd8-ec0385df5806 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_412_lessee_member_can_patch_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_412_lessee_member_can_patch_allocation ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_session -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_session ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_driver_properties -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_driver_properties ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_registered_deploy +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_registered_deploy ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_delete_fail +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_delete_fail ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_413_third_party_admin_can_get_allocations ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_413_third_party_admin_can_get_allocations ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_driver_vendor_passthru_methods -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_driver_vendor_passthru_methods ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_disabled_sessions_cache -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_disabled_sessions_cache ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_indicator_state -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_indicator_state ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_basic_session_caching -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_basic_session_caching ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_node_vendor_passthru_methods -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_node_vendor_passthru_methods ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_no_steps +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_no_steps ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__delete_configuration_final +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__delete_configuration_final ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_delete_race +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_delete_race ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_retired_last_step_change_tgt_state +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_retired_last_step_change_tgt_state ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__delete_configuration_final_registered +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__delete_configuration_final_registered ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_414_third_party_admin_can_create_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_414_third_party_admin_can_create_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_node_with_token -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_node_with_token ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_address -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_address ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_raid_logical_disk_properties -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_raid_logical_disk_properties ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_random_topic -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_random_topic ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_password -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_password ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_random_topic_no_conductors -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_random_topic_no_conductors ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_list_fail +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_list_fail ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_apply_configuration +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_apply_configuration ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_smartnic_ports +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_smartnic_ports ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_415_third_party_admin_cannot_create_allocation_with_owner_node ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_415_third_party_admin_cannot_create_allocation_with_owner_node ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_supported_boot_devices -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_supported_boot_devices ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_username -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_username ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_supported_indicators -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_supported_indicators ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_doesnt_cache -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_doesnt_cache ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_empty_target_raid_config +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_empty_target_raid_config ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_416_third_party_admin_cannot_create_allocation_with_candidates_not_owned ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_416_third_party_admin_cannot_create_allocation_with_candidates_not_owned ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_session_reuse -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_session_reuse ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_doesnt_cache -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_doesnt_cache ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_known_driver -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_known_driver ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_expire_old_sessions -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_expire_old_sessions ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_unknown_driver -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_unknown_driver ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_event_service -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_event_service ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network_not_all_pxe_enabled +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network_not_all_pxe_enabled ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios_exception +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios_exception ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_no_target_raid_config_after_skipping +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_no_target_raid_config_after_skipping ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network_not_all_pxe_enabled_all_ports +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network_not_all_pxe_enabled_all_ports ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_417_owner_admin_can_create_allocation_with_their_uuid ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_417_owner_admin_can_create_allocation_with_their_uuid ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_known_driver -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_known_driver ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_event_service_error -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_event_service_error ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_unknown_driver -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_unknown_driver ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_task_monitor -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_task_monitor ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_heartbeat -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_heartbeat ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_task_monitor_error -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_task_monitor_error ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_skip_nonroot +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_skip_nonroot ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios_unsupported +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios_unsupported ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_rollback_ports +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_rollback_ports ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_skip_root +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_skip_root ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_418_owner_manager_can_create_allocation_with_their_uuid ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_418_owner_manager_can_create_allocation_with_their_uuid ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_heartbeat_agent_token -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_heartbeat_agent_token ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_update_service -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_update_service ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_update_service_error -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_update_service_error ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_inject_nmi -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_inject_nmi ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_inspect_hardware -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_inspect_hardware ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_delete_configuration +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_delete_configuration ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_rollback_ports_exception +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_rollback_ports_exception ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled_individual_disabled +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled_individual_disabled ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_agent_down +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_agent_down ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_clean_steps +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_clean_steps ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_419_third_party_admin_cannot_read_an_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_419_third_party_admin_cannot_read_an_allocation ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme_with_port -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme_with_port ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_address -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_address ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_expected_exception -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_expected_exception ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_auth_type -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_auth_type ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_host_mismatch -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_host_mismatch ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_agent_up +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_agent_up ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_clean_steps_config_priority +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_clean_steps_config_priority ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled_individual_enabled +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled_individual_enabled ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_flat_interface +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_flat_interface ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_deploy_steps +ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_deploy_steps ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled ... ok GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8e973c8b-ae5a-4fab-9ff7-773093e17dd1 +Openstack-Request-Id: req-7c89dcbe-a9a5-42ba-a17a-a2383d7c7d13 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "c7208ea2-db55-447c-baa0-cbf7ed367230", "created_at": "2024-01-06T13:44:05.886322+00:00", "updated_at": "2024-01-06T13:44:06.086783+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/c7208ea2-db55-447c-baa0-cbf7ed367230", "rel": "self"}, {"href": "http://localhost/allocations/c7208ea2-db55-447c-baa0-cbf7ed367230", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "0e57f4d4-d9bf-4e5b-bcd8-ec0385df5806", "created_at": "2024-01-06T14:14:00.100550+00:00", "updated_at": "2024-01-06T14:14:00.200469+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/0e57f4d4-d9bf-4e5b-bcd8-ec0385df5806", "rel": "self"}, {"href": "http://localhost/allocations/0e57f4d4-d9bf-4e5b-bcd8-ec0385df5806", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8e973c8b-ae5a-4fab-9ff7-773093e17dd1 +Openstack-Request-Id: req-7c89dcbe-a9a5-42ba-a17a-a2383d7c7d13 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "c7208ea2-db55-447c-baa0-cbf7ed367230", "created_at": "2024-01-06T13:44:05.886322+00:00", "updated_at": "2024-01-06T13:44:06.086783+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/c7208ea2-db55-447c-baa0-cbf7ed367230", "rel": "self"}, {"href": "http://localhost/allocations/c7208ea2-db55-447c-baa0-cbf7ed367230", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "0e57f4d4-d9bf-4e5b-bcd8-ec0385df5806", "created_at": "2024-01-06T14:14:00.100550+00:00", "updated_at": "2024-01-06T14:14:00.200469+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/0e57f4d4-d9bf-4e5b-bcd8-ec0385df5806", "rel": "self"}, {"href": "http://localhost/allocations/0e57f4d4-d9bf-4e5b-bcd8-ec0385df5806", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} API ACL Testing Path get /v1/allocations GET: /v1/allocations {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-64f4d1f3-257c-4644-8151-b84b7d399c6d +Openstack-Request-Id: req-98d7cbd0-df42-4b91-9840-be8a9e01d78e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"allocations": []} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-64f4d1f3-257c-4644-8151-b84b7d399c6d +Openstack-Request-Id: req-98d7cbd0-df42-4b91-9840-be8a9e01d78e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49768,14 +46028,14 @@ POST: /v1/allocations {'resource_class': 'CUSTOM_TEST'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-47adbcce-490d-484b-acf3-6c2254e78e56 +Openstack-Request-Id: req-10ac3fc1-4a54-468f-b0c2-fc93337a8f9e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-47adbcce-490d-484b-acf3-6c2254e78e56 +Openstack-Request-Id: req-10ac3fc1-4a54-468f-b0c2-fc93337a8f9e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49784,14 +46044,14 @@ POST: /v1/allocations {'resource_class': 'CUSTOM_TEST', 'node': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} GOT:Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-705c0f43-1270-409f-9c26-95f5d6efa419 +Openstack-Request-Id: req-3c8ddf64-3f78-4f3d-bd32-99e7330041bf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-705c0f43-1270-409f-9c26-95f5d6efa419 +Openstack-Request-Id: req-3c8ddf64-3f78-4f3d-bd32-99e7330041bf X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49800,30 +46060,30 @@ POST: /v1/allocations {'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-f5de9778-2fda-4812-b9c3-c386f5a7b3ff +Openstack-Request-Id: req-e14cad14-1ff3-448c-9559-772af7db2d9e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Nodes cannot be found: 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881, 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Nodes cannot be found: 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f, 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881\", \"debuginfo\": null}"} ACL Test GOT Response: 400 Bad Request Content-Type: application/json -Openstack-Request-Id: req-f5de9778-2fda-4812-b9c3-c386f5a7b3ff +Openstack-Request-Id: req-e14cad14-1ff3-448c-9559-772af7db2d9e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Nodes cannot be found: 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881, 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Nodes cannot be found: 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f, 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881\", \"debuginfo\": null}"} API ACL Testing Path post /v1/allocations POST: /v1/allocations {'resource_class': 'CUSTOM_TEST', 'node': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-feafedee-0ec1-4aac-bdfe-8981ef1809a1 +Openstack-Request-Id: req-54b066e7-e5c3-41fe-bb1b-d6619a44de81 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-feafedee-0ec1-4aac-bdfe-8981ef1809a1 +Openstack-Request-Id: req-54b066e7-e5c3-41fe-bb1b-d6619a44de81 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -49832,172 +46092,170 @@ POST: /v1/allocations {'resource_class': 'CUSTOM_TEST', 'node': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b45ade6d-1901-4cbd-964c-02a3877d8b31 +Openstack-Request-Id: req-cd5590b5-1248-40cc-9e62-acb05d35eb4b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-b45ade6d-1901-4cbd-964c-02a3877d8b31 +Openstack-Request-Id: req-cd5590b5-1248-40cc-9e62-acb05d35eb4b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/allocations/cdb537d6-aa2a-4f35-aef3-e63cffa665dd -GET: /v1/allocations/cdb537d6-aa2a-4f35-aef3-e63cffa665dd {} +API ACL Testing Path get /v1/allocations/84952c93-fc0c-4204-870c-b82a721f8aae +GET: /v1/allocations/84952c93-fc0c-4204-870c-b82a721f8aae {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c02b90a0-eeaa-4891-b921-517df79fe661 +Openstack-Request-Id: req-f6ee2681-c53c-4447-90f5-34aab097561e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation cdb537d6-aa2a-4f35-aef3-e63cffa665dd could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 84952c93-fc0c-4204-870c-b82a721f8aae could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-c02b90a0-eeaa-4891-b921-517df79fe661 +Openstack-Request-Id: req-f6ee2681-c53c-4447-90f5-34aab097561e X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation cdb537d6-aa2a-4f35-aef3-e63cffa665dd could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 84952c93-fc0c-4204-870c-b82a721f8aae could not be found.\", \"debuginfo\": null}"} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_420_third_party_admin_cannot_patch_an_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_420_third_party_admin_cannot_patch_an_allocation ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_string_value_verify_ca -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_string_value_verify_ca ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_host_mismatch_with_rpc_disabled -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_host_mismatch_with_rpc_disabled ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_system_id -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_system_id ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_no_conductor_with_rpc_disabled -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_no_conductor_with_rpc_disabled ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_value_verify_ca -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_value_verify_ca ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_flat_interface_with_client_id +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_flat_interface_with_client_id ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_disabled +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_disabled ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_421_third_party_admin_cannot_delete_an_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_421_third_party_admin_cannot_delete_an_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_with_rpc_disabled -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_with_rpc_disabled ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_missing_info -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_missing_info ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_cast -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_cast ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_missing_system_id -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_missing_system_id ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_cast_error -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_cast_error ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_enabled +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_enabled ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface_missed_info +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface_missed_info ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up_no_manage_boot +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up_no_manage_boot ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_422_owner_reader_can_read_node_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_422_owner_reader_can_read_node_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_action -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_action ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface_with_client_id +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface_with_client_id ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_none +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_none ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up_smartnic +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up_smartnic ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_423_lessee_reader_can_read_node_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_423_lessee_reader_can_read_node_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_action_invalid_version -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_action_invalid_version ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_backport_versions -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_backport_versions ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_backport_versions_invalid_version -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_backport_versions_invalid_version ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_no_manage_agent_boot +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_no_manage_agent_boot ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_network_validate_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_network_validate_fail ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_power_on +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_power_on ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_424_third_party_admin_cannot_read_node_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_424_third_party_admin_cannot_read_node_allocation ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_path_verify_ca -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_path_verify_ca ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_class_action_versions -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_class_action_versions ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_class_action_versions_invalid_version -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_class_action_versions_invalid_version ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_auth_type -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_auth_type ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_remove_node_traits -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_remove_node_traits ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_capath -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_capath ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_remove_node_traits_all -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_remove_node_traits_all ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_string_value_verify_ca -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_string_value_verify_ca ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_power_validate_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_power_validate_fail ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_network_type_unmanaged +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_network_type_unmanaged ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_prepare_clean_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_prepare_clean_fail ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_fails_empty_rescue_password +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_fails_empty_rescue_password ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_425_owner_admin_can_delete_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_425_owner_admin_can_delete_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_rpc_disabled -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_rpc_disabled ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_with_root_prefix -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_with_root_prefix ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__fail_validation -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__fail_validation ... ok -API ACL Testing Path patch /v1/allocations/dbc22ca7-473f-4a5c-b5ec-347bbfacdfc0 -PATCH: /v1/allocations/dbc22ca7-473f-4a5c-b5ec-347bbfacdfc0 [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_no_smartnic_and_link_info +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_no_smartnic_and_link_info ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_fails_no_rescue_password +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_fails_no_rescue_password ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_prepare_clean_wait +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_prepare_clean_wait ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_no_manage_agent +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_no_manage_agent ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_smartnic_and_link_info +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_smartnic_and_link_info ... ok +API ACL Testing Path patch /v1/allocations/d23b628c-4977-4984-87d4-a82e21869e9d +PATCH: /v1/allocations/d23b628c-4977-4984-87d4-a82e21869e9d [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1ead9b1e-9efd-4334-8cb1-980b28e1eda4 +Openstack-Request-Id: req-11cba9f2-5d16-4d6d-8b13-bd0a585d993c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation dbc22ca7-473f-4a5c-b5ec-347bbfacdfc0 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation d23b628c-4977-4984-87d4-a82e21869e9d could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1ead9b1e-9efd-4334-8cb1-980b28e1eda4 +Openstack-Request-Id: req-11cba9f2-5d16-4d6d-8b13-bd0a585d993c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation dbc22ca7-473f-4a5c-b5ec-347bbfacdfc0 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path delete /v1/allocations/663cc58a-deaf-41e5-9b8d-b09805cce2b6 -DELETE: /v1/allocations/663cc58a-deaf-41e5-9b8d-b09805cce2b6 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation d23b628c-4977-4984-87d4-a82e21869e9d could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/allocations/988b4167-44b1-4700-839b-f505fc61ff86 +DELETE: /v1/allocations/988b4167-44b1-4700-839b-f505fc61ff86 GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1c4ef289-9ce2-454c-bbba-3821e473360b +Openstack-Request-Id: req-98b39a6e-4842-4e85-9724-76c94abb487a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 663cc58a-deaf-41e5-9b8d-b09805cce2b6 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 988b4167-44b1-4700-839b-f505fc61ff86 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-1c4ef289-9ce2-454c-bbba-3821e473360b +Openstack-Request-Id: req-98b39a6e-4842-4e85-9724-76c94abb487a X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 663cc58a-deaf-41e5-9b8d-b09805cce2b6 could not be found.\", \"debuginfo\": null}"} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 988b4167-44b1-4700-839b-f505fc61ff86 could not be found.\", \"debuginfo\": null}"} API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/allocation GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/allocation {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c0557df8-d5e9-4933-849b-d0a89aad42db +Openstack-Request-Id: req-fd0e5f8e-b0ea-4a7e-aff4-8ce6f10a86b3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "bf6ee853-8e48-4886-9df4-c3cd6554574c", "created_at": "2024-01-06T13:44:12.268912+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/bf6ee853-8e48-4886-9df4-c3cd6554574c", "rel": "self"}, {"href": "http://localhost/allocations/bf6ee853-8e48-4886-9df4-c3cd6554574c", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} +{"uuid": "30692799-5679-4a2e-bfbd-8be5a03b9eaa", "created_at": "2024-01-06T14:14:02.525399+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/30692799-5679-4a2e-bfbd-8be5a03b9eaa", "rel": "self"}, {"href": "http://localhost/allocations/30692799-5679-4a2e-bfbd-8be5a03b9eaa", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-c0557df8-d5e9-4933-849b-d0a89aad42db +Openstack-Request-Id: req-fd0e5f8e-b0ea-4a7e-aff4-8ce6f10a86b3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "bf6ee853-8e48-4886-9df4-c3cd6554574c", "created_at": "2024-01-06T13:44:12.268912+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/bf6ee853-8e48-4886-9df4-c3cd6554574c", "rel": "self"}, {"href": "http://localhost/allocations/bf6ee853-8e48-4886-9df4-c3cd6554574c", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} +{"uuid": "30692799-5679-4a2e-bfbd-8be5a03b9eaa", "created_at": "2024-01-06T14:14:02.525399+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/30692799-5679-4a2e-bfbd-8be5a03b9eaa", "rel": "self"}, {"href": "http://localhost/allocations/30692799-5679-4a2e-bfbd-8be5a03b9eaa", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} API ACL Testing Path get /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/allocation GET: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/allocation {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f8550af4-185e-4605-a638-b578fbdacfe0 +Openstack-Request-Id: req-3a448da5-738e-420c-9ff4-2bd8e453c704 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "da7755a8-3e07-4ba2-89d7-11d4461d7546", "created_at": "2024-01-06T13:44:12.652418+00:00", "updated_at": "2024-01-06T13:44:12.656988+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/da7755a8-3e07-4ba2-89d7-11d4461d7546", "rel": "self"}, {"href": "http://localhost/allocations/da7755a8-3e07-4ba2-89d7-11d4461d7546", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "003eda1c-9f49-4c70-98e4-befe1a7bc833", "created_at": "2024-01-06T14:14:02.789528+00:00", "updated_at": "2024-01-06T14:14:02.796631+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/003eda1c-9f49-4c70-98e4-befe1a7bc833", "rel": "self"}, {"href": "http://localhost/allocations/003eda1c-9f49-4c70-98e4-befe1a7bc833", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f8550af4-185e-4605-a638-b578fbdacfe0 +Openstack-Request-Id: req-3a448da5-738e-420c-9ff4-2bd8e453c704 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "da7755a8-3e07-4ba2-89d7-11d4461d7546", "created_at": "2024-01-06T13:44:12.652418+00:00", "updated_at": "2024-01-06T13:44:12.656988+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/da7755a8-3e07-4ba2-89d7-11d4461d7546", "rel": "self"}, {"href": "http://localhost/allocations/da7755a8-3e07-4ba2-89d7-11d4461d7546", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} +{"uuid": "003eda1c-9f49-4c70-98e4-befe1a7bc833", "created_at": "2024-01-06T14:14:02.789528+00:00", "updated_at": "2024-01-06T14:14:02.796631+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/003eda1c-9f49-4c70-98e4-befe1a7bc833", "rel": "self"}, {"href": "http://localhost/allocations/003eda1c-9f49-4c70-98e4-befe1a7bc833", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/allocation GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/allocation {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8042320b-a824-4561-ab36-abf76fd153bd +Openstack-Request-Id: req-22430397-1d4b-4bdf-b707-05fe22d7d475 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-8042320b-a824-4561-ab36-abf76fd153bd +Openstack-Request-Id: req-22430397-1d4b-4bdf-b707-05fe22d7d475 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50006,14 +46264,14 @@ DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/allocation GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d1a21bcf-dd17-4517-a31a-18d156322256 +Openstack-Request-Id: req-151289e6-3a3e-40f1-b742-ead45cf49189 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-d1a21bcf-dd17-4517-a31a-18d156322256 +Openstack-Request-Id: req-151289e6-3a3e-40f1-b742-ead45cf49189 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50022,100 +46280,108 @@ DELETE: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/allocation GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-355661df-85e8-4643-898b-acd6aa6dfc25 +Openstack-Request-Id: req-9b9b2174-d84b-4205-bf5d-873699f3d0f3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_426_owner_manager_can_delete_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_426_owner_manager_can_delete_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_serialized_instance_has_uuid -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_serialized_instance_has_uuid ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_iscsi -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_iscsi ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_steps_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_steps_fail ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_with_smartnic_port +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_with_smartnic_port ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_smartnic_and_no_link_info +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_smartnic_and_no_link_info ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_maintenance +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_maintenance ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_427_lessee_admin_can_delete_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_427_lessee_admin_can_delete_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_boot_device -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_boot_device ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_console_mode -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_console_mode ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_iscsi_and_unknown -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_iscsi_and_unknown ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_indicator_state -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_indicator_state ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_exception_by_neutronclient +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_exception_by_neutronclient ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_no_manage_agent_boot +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_no_manage_agent_boot ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_less_than_configured +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_less_than_configured ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_428_lessee_manager_not_delete_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_428_lessee_manager_not_delete_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_target_raid_config -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_target_raid_config ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_multiple_fc_wwns -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_multiple_fc_wwns ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_node -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_node ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_raises_with_insufficient_data -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_raises_with_insufficient_data ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_power_on +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_power_on ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_more_than_configured +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_more_than_configured ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_no_sg_from_neutron +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_no_sg_from_neutron ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_429_third_party_admin_cannot_delete_allocation ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_429_third_party_admin_cannot_delete_allocation ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_port -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_port ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_portgroup -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_portgroup ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_single_path -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_single_path ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_volume_connector -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_volume_connector ... ok +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_with_smartnic_port +ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_with_smartnic_port ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios_exception +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios_exception ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_down_target_state_down +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_down_target_state_down ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__get_post_step_hook +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__get_post_step_hook ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_down_target_state_up +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_down_target_state_up ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_430_owner_reader_cannot_get_deploy_templates ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_430_owner_reader_cannot_get_deploy_templates ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_volume_target -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_volume_target ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_unknown_raises_excption -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_unknown_raises_excption ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_validate_driver_interfaces -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_validate_driver_interfaces ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_called_with_target_and_connector -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_called_with_target_and_connector ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_volumes_fails_without_connectors -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_volumes_fails_without_connectors ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vendor_passthru -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__get_post_step_hook_no_hook_registered +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__get_post_step_hook_no_hook_registered ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios_unsupported +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios_unsupported ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_up_target_state_down +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_up_target_state_down ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_up_target_state_up +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_up_target_state_up ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_disable_ramdisk +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_disable_ramdisk ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_431_lessee_reader_cannot_get_deploy_templates ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_431_lessee_reader_cannot_get_deploy_templates ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_attach -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_attach ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_volumes_no_volumes -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_volumes_no_volumes ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_detach -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_detach ... ok -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_list -ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_list ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_volumes_failure -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_volumes_failure ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_active_max_retry +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_active_max_retry ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_network_validate_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_network_validate_fail ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_432_third_party_admin_cannot_get_deploy_templates ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_432_third_party_admin_cannot_get_deploy_templates ... ok -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_volumes_failure_no_attach_error -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_volumes_failure_no_attach_error ... ok -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps_no_steps -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps_no_steps ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_detach_volumes_failure -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_detach_volumes_failure ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_down +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_down ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_down_max_retry +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_down_max_retry ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_power_validate_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_power_validate_fail ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_433_third_party_admin_cannot_post_deploy_template ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_433_third_party_admin_cannot_post_deploy_template ... ok -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps_on_node -ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps_on_node ... ok -ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_excl_lock_task_first_arg -ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_excl_lock_task_first_arg ... ok -ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_excl_lock_task_second_arg -ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_excl_lock_task_second_arg ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_detach_volumes_failure_raises_exception -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_detach_volumes_failure_raises_exception ... ok -ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_shared_lock_task_first_arg -ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_shared_lock_task_first_arg ... ok -ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_shared_lock_task_second_arg -ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_shared_lock_task_second_arg ... ok +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_up +ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_up ... ok +ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port +ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_prepare_clean_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_prepare_clean_fail ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_deploy +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_deploy ... ok +ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_client_passed +ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_client_passed ... ok +ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_failure +ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_failure ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_prepare_clean_wait +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_prepare_clean_wait ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail ... ok +ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_not_found +ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_not_found ... ok ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-355661df-85e8-4643-898b-acd6aa6dfc25 +Openstack-Request-Id: req-9b9b2174-d84b-4205-bf5d-873699f3d0f3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50124,14 +46390,14 @@ DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/allocation GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-480c82a3-5a4d-4764-a89a-2ca00e3357fa +Openstack-Request-Id: req-6a668753-9c72-4c55-b80d-9691d1ffe1d2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-480c82a3-5a4d-4764-a89a-2ca00e3357fa +Openstack-Request-Id: req-6a668753-9c72-4c55-b80d-9691d1ffe1d2 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50140,14 +46406,14 @@ DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/allocation GOT:Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2f6378ee-9c5a-4535-afa9-7000e61771d3 +Openstack-Request-Id: req-5387c7a0-81ca-4829-9f82-1e9ab654f598 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} ACL Test GOT Response: 503 Service Unavailable Content-Type: application/json -Openstack-Request-Id: req-2f6378ee-9c5a-4535-afa9-7000e61771d3 +Openstack-Request-Id: req-5387c7a0-81ca-4829-9f82-1e9ab654f598 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50156,14 +46422,14 @@ DELETE: /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/allocation GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-99f545e0-4561-462d-a896-7842de2f1424 +Openstack-Request-Id: req-9d3959c5-92cd-4f2b-9d21-a43f90292479 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-99f545e0-4561-462d-a896-7842de2f1424 +Openstack-Request-Id: req-9d3959c5-92cd-4f2b-9d21-a43f90292479 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50172,14 +46438,14 @@ GET: /v1/deploy_templates {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-8a2731a1-d2a6-42bb-b802-6d1b74b34863 +Openstack-Request-Id: req-71a41fe6-b7da-4d67-ad4b-c931eea33024 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-8a2731a1-d2a6-42bb-b802-6d1b74b34863 +Openstack-Request-Id: req-71a41fe6-b7da-4d67-ad4b-c931eea33024 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50188,14 +46454,14 @@ GET: /v1/deploy_templates {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-0037cf1c-df8d-4501-9836-0fb0c0bf14f5 +Openstack-Request-Id: req-6ce442fe-6c70-4b66-9b9a-8d55ef548f10 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-0037cf1c-df8d-4501-9836-0fb0c0bf14f5 +Openstack-Request-Id: req-6ce442fe-6c70-4b66-9b9a-8d55ef548f10 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50204,14 +46470,14 @@ GET: /v1/deploy_templates {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-10306b29-4d2d-4f7b-88c9-590505d81360 +Openstack-Request-Id: req-2d58805b-fb0a-4ce4-944a-f1cfa4038753 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-10306b29-4d2d-4f7b-88c9-590505d81360 +Openstack-Request-Id: req-2d58805b-fb0a-4ce4-944a-f1cfa4038753 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50220,14 +46486,14 @@ POST: /v1/deploy_templates {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-d242b5bd-0769-4fb0-8e26-86d245bb2112 +Openstack-Request-Id: req-7cddc79d-c5c0-4b74-8469-8ff9739be9bb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:deploy_template:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-d242b5bd-0769-4fb0-8e26-86d245bb2112 +Openstack-Request-Id: req-7cddc79d-c5c0-4b74-8469-8ff9739be9bb X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50236,98 +46502,122 @@ GET: /v1/chassis {} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_434_owner_reader_cannot_access_chassis ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_434_owner_reader_cannot_access_chassis ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_should_write_image -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_should_write_image ... ok -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_error_state -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_error_state ... ok -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_no_state_change -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_no_state_change ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail_deploy +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail_deploy ... ok +ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_not_reset_mac +ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_not_reset_mac ... ok +ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port +ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_pregenerated_token +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_pregenerated_token ... ok +ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port_with_client +ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port_with_client ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_steps_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_steps_fail ... ok +ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port_with_exception +ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port_with_exception ... ok +ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_by_name +ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_by_name ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_boot_instance +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_boot_instance ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_network_error_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_network_error_fail ... ok +ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_by_uuid +ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_by_uuid ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_boot_instance_no_power_on +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_boot_instance_no_power_on ... ok +ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_duplicate +ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_duplicate ... ok +ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_failure +ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_failure ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_continue_node_clean +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_continue_node_clean ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_435_lessee_reader_cannot_access_chassis ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_435_lessee_reader_cannot_access_chassis ... ok -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_only_once -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_only_once ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fail_on_unknown_volume_types -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fail_on_unknown_volume_types ... ok -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_resource_released -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_resource_released ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_fc_conn_iscsi_target -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_fc_conn_iscsi_target ... ok -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_stable_to_stable -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_stable_to_stable ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot ... ok +ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_not_found +ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_not_found ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_invalid_power_update +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_invalid_power_update ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_continue_node_clean_no_skip_step +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_continue_node_clean_no_skip_step ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_436_third_party_admin_cannot_access_chassis ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_436_third_party_admin_cannot_access_chassis ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_iscsi_conn_fc_target -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_iscsi_conn_fc_target ... ok -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_stable_to_unstable -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_stable_to_unstable ... ok -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_unstable_to_stable -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_unstable_to_stable ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_when_fc_connectors_unequal -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_when_fc_connectors_unequal ... ok -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_unstable_to_unstable -ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_unstable_to_unstable ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_1 +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_1 ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_boot_loader_install_fail +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_boot_loader_install_fail ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_agent_busy +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_agent_busy ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_2 +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_2 ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_always +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_always ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_437_third_party_admin_cannot_create_chassis ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_437_third_party_admin_cannot_create_chassis ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_callback_stable_state -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_callback_stable_state ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_with_ipxe_not_enabled -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_with_ipxe_not_enabled ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_fsm_raises -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_fsm_raises ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_no_callback_notify -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_no_callback_notify ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_failure_if_fc_boot_no_connectors -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_failure_if_fc_boot_no_connectors ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_3 +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_3 ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_automated_all +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_automated_all ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_default +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_default ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_4 +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_4 ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_438_node_history_get_admin ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_438_node_history_get_admin ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_no_callback_stable_state -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_no_callback_stable_state ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_failure_if_iscsi_boot_no_connectors -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_failure_if_iscsi_boot_no_connectors ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_callback -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_callback ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_callback_and_error_handler -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_callback_and_error_handler ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_target_state -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_target_state ... ok -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_release_clears_resources -ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_release_clears_resources ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_5 +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_5 ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_never +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_never ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_automated_first_step_async +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_automated_first_step_async ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_no_root_uuid +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_no_root_uuid ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed_no_nova +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed_no_nova ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_439_node_history_get_member ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_439_node_history_get_member ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_connectors_and_boot -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_connectors_and_boot ... ok -ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_add_secret_token -ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_add_secret_token ... ok -ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_is_agent_token_present -ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_is_agent_token_present ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_fc_connectors -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_fc_connectors ... ok -ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_wipe_deploy_internal_info -ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_wipe_deploy_internal_info ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_collect_logs +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_collect_logs ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed_no_nova_auth_url +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed_no_nova_auth_url ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_no_root_uuid_whole_disk +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_no_root_uuid_whole_disk ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_1 +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_1 ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_continue_from_last_cleaning +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_continue_from_last_cleaning ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_440_node_history_get_reader ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_440_node_history_get_reader ... ok -ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_cleaning -ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_cleaning ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_fc_targets -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_fc_targets ... ok -ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_inspecting -ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_inspecting ... ok -ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_none -ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_none ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_iscsi_connector -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_iscsi_connector ... ok -ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_provisioning -ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_provisioning ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_non_software_raid +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_non_software_raid ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_2 +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_2 ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_3 +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_3 ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_all +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_all ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid ... ok +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_4 +ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_4 ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_bios +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_bios ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__cache_tftp_images_master_path +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__cache_tftp_images_master_path ... ok GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-5d12078c-ec5b-4358-9a32-f61d1f1823b1 +Openstack-Request-Id: req-af1d52b2-2f4e-4fc0-b78f-c841a41932f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-5d12078c-ec5b-4358-9a32-f61d1f1823b1 +Openstack-Request-Id: req-af1d52b2-2f4e-4fc0-b78f-c841a41932f6 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50336,14 +46626,14 @@ GET: /v1/chassis {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-552e55df-18aa-4917-8982-fff42045ed1e +Openstack-Request-Id: req-2002b4ba-ea45-4e34-a648-908fde0dab38 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-552e55df-18aa-4917-8982-fff42045ed1e +Openstack-Request-Id: req-2002b4ba-ea45-4e34-a648-908fde0dab38 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50352,14 +46642,14 @@ GET: /v1/chassis {} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-4d420c26-ac31-40d6-b279-08d5468e8528 +Openstack-Request-Id: req-46ae6ea4-f578-4b2a-b4de-87b7de920b48 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"role:reader and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-4d420c26-ac31-40d6-b279-08d5468e8528 +Openstack-Request-Id: req-46ae6ea4-f578-4b2a-b4de-87b7de920b48 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50368,14 +46658,14 @@ POST: /v1/chassis {'description': 'test-chassis'} GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-7b51acc6-e3f9-4c27-85af-25ec76dae1ea +Openstack-Request-Id: req-69dac7c8-665a-4c2f-8496-b05710e30e3f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"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}"} ACL Test GOT Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-7b51acc6-e3f9-4c27-85af-25ec76dae1ea +Openstack-Request-Id: req-69dac7c8-665a-4c2f-8496-b05710e30e3f X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50384,176 +46674,192 @@ GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8e81e5c2-d667-4655-b284-818ce20e5a23 +Openstack-Request-Id: req-529e65db-b244-4e15-9108-6941871210f9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "81ec1fa0-ab00-49e5-9a79-506c8cc6e8d6", "created_at": "2024-01-06T13:44:21.335047+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/81ec1fa0-ab00-49e5-9a79-506c8cc6e8d6", "rel": "self"}]}]} +{"history": [{"uuid": "a8fdb620-7ac2-415f-b6c5-a7613f124cd6", "created_at": "2024-01-06T14:14:06.725050+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/a8fdb620-7ac2-415f-b6c5-a7613f124cd6", "rel": "self"}]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-8e81e5c2-d667-4655-b284-818ce20e5a23 +Openstack-Request-Id: req-529e65db-b244-4e15-9108-6941871210f9 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "81ec1fa0-ab00-49e5-9a79-506c8cc6e8d6", "created_at": "2024-01-06T13:44:21.335047+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/81ec1fa0-ab00-49e5-9a79-506c8cc6e8d6", "rel": "self"}]}]} +{"history": [{"uuid": "a8fdb620-7ac2-415f-b6c5-a7613f124cd6", "created_at": "2024-01-06T14:14:06.725050+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/a8fdb620-7ac2-415f-b6c5-a7613f124cd6", "rel": "self"}]}]} API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-96f69554-918b-4a97-9504-508590ab3332 +Openstack-Request-Id: req-846a0e8a-a492-485a-beea-b92e27624879 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "07df66c8-b7ff-4ad2-af54-f4275426a427", "created_at": "2024-01-06T13:44:22.076361+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/07df66c8-b7ff-4ad2-af54-f4275426a427", "rel": "self"}]}]} +{"history": [{"uuid": "b1f4eabc-0b11-4135-a9d8-0fdd78c838ca", "created_at": "2024-01-06T14:14:06.947502+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/b1f4eabc-0b11-4135-a9d8-0fdd78c838ca", "rel": "self"}]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-96f69554-918b-4a97-9504-508590ab3332 +Openstack-Request-Id: req-846a0e8a-a492-485a-beea-b92e27624879 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "07df66c8-b7ff-4ad2-af54-f4275426a427", "created_at": "2024-01-06T13:44:22.076361+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/07df66c8-b7ff-4ad2-af54-f4275426a427", "rel": "self"}]}]} +{"history": [{"uuid": "b1f4eabc-0b11-4135-a9d8-0fdd78c838ca", "created_at": "2024-01-06T14:14:06.947502+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/b1f4eabc-0b11-4135-a9d8-0fdd78c838ca", "rel": "self"}]}]} API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e23d20dc-c169-4d05-aec5-1551ae4eb809 +Openstack-Request-Id: req-8ab95d6b-36b9-4ab8-8f1a-f6be4571319c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "b8d4e7f1-6160-4400-a956-b598d8d7d252", "created_at": "2024-01-06T13:44:22.725776+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/b8d4e7f1-6160-4400-a956-b598d8d7d252", "rel": "self"}]}]} +{"history": [{"uuid": "33e107c4-3899-4ab5-841e-37654405b173", "created_at": "2024-01-06T14:14:07.174247+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/33e107c4-3899-4ab5-841e-37654405b173", "rel": "self"}]}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-e23d20dc-c169-4d05-aec5-1551ae4eb809 +Openstack-Request-Id: req-8ab95d6b-36b9-4ab8-8f1a-f6be4571319c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"history": [{"uuid": "b8d4e7f1-6160-4400-a956-b598d8d7d252", "created_at": "2024-01-06T13:44:22.725776+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/b8d4e7f1-6160-4400-a956-b598d8d7d252", "rel": "self"}]}]} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/fa03a392-692c-4582-b67a-8c66c7420f4a -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/fa03a392-692c-4582-b67a-8c66c7420f4a {} +{"history": [{"uuid": "33e107c4-3899-4ab5-841e-37654405b173", "created_at": "2024-01-06T14:14:07.174247+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/33e107c4-3899-4ab5-841e-37654405b173", "rel": "self"}]}]} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/95a118c9-0d80-4496-a6ef-e253617175db +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/95a118c9-0d80-4496-a6ef-e253617175db {} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_441_node_history_get_entry_admin ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_441_node_history_get_entry_admin ... ok -ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_rescuing -ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_rescuing ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_iscsi_targets -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_iscsi_targets ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_all_disable_ramdisk +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_all_disable_ramdisk ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_442_node_history_get_entry_member ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_442_node_history_get_entry_member ... ok -ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_tenant -ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_tenant ... ok -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_no_settings -ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_no_settings ... ok -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps ... ok -ironic.tests.unit.drivers.modules.storage.test_external.ExternalInterfaceTestCase.test_should_write_image -ironic.tests.unit.drivers.modules.storage.test_external.ExternalInterfaceTestCase.test_should_write_image ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_exception_bios +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_exception_bios ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_deploy_ramdisk +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_deploy_ramdisk ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_continue_from_last_cleaning +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_continue_from_last_cleaning ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_ipxe +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_ipxe ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_443_node_history_get_entry_reader ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_443_node_history_get_entry_reader ... ok -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps_no_skip -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps_no_skip ... ok -ironic.tests.unit.drivers.modules.storage.test_external.ExternalInterfaceTestCase.test_validate_fails_with_ipxe_not_enabled -ironic.tests.unit.drivers.modules.storage.test_external.ExternalInterfaceTestCase.test_validate_fails_with_ipxe_not_enabled ... ok -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps_unset_clean_step -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps_unset_clean_step ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_exception_uefi +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_exception_uefi ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_missing_deploy_kernel +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_missing_deploy_kernel ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_first_step_async +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_first_step_async ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_explicit_uuid +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_explicit_uuid ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_444_lessee_node_history_get_admin ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_444_lessee_node_history_get_admin ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final ... ok -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_bad_command_result -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_bad_command_result ... ok -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps_no_skip -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps_no_skip ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel_ipxe +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel_ipxe ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_explicit_uuid_bios +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_explicit_uuid_bios ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel_ipxe_anaconda +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel_ipxe_anaconda ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_445_lessee_node_history_get_member ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_445_lessee_node_history_get_member ... ok -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps_unset_deploy_step -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps_unset_deploy_step ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_bad_command_result2 -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_bad_command_result2 ... ok -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_steps_exception -ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_steps_exception ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_registered_clean -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_registered_clean ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot_fail ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_boot_iso +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_boot_iso ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_set_boot_device_fail +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_set_boot_device_fail ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot_last_step +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot_last_step ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_kickstart_stage2_missing +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_kickstart_stage2_missing ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_446_lessee_node_history_get_reader ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_446_lessee_node_history_get_reader ... ok -ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_adopting -ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_adopting ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_registered_deploy -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_registered_deploy ... ok -ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_non_existent_mode -ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_non_existent_mode ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_uefi +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_uefi ... ok +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_localboot +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_localboot ... ok +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device_node_locked +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device_node_locked ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_whole_disk_image +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_whole_disk_image ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_whole_disk_image +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_whole_disk_image ... ok ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_447_lessee_node_history_get_entry_admin ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_447_lessee_node_history_get_entry_admin ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__delete_configuration_final -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__delete_configuration_final ... ok -ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_valid -ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_valid ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__delete_configuration_final_registered -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__delete_configuration_final_registered ... ok -ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_no_change -ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_no_change ... ok -ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_store_existing -ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_store_existing ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_apply_configuration -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_apply_configuration ... ok +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device_validate_fail +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device_validate_fail ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_whole_disk_image_bios +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_whole_disk_image_bios ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_with_kickstart_boot_option +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_with_kickstart_boot_option ... ok +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_supported_boot_devices +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_supported_boot_devices ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_with_prep +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_with_prep ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_with_kickstart_url_http +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_with_kickstart_url_http ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_post_clean_step_hook +ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_post_clean_step_hook ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_deploy +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_deploy ... ok GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-fe948338-7a3d-4c95-be2d-5f970f2d7f99 +Openstack-Request-Id: req-209d6370-a5a9-4ec9-b522-baac8a91f345 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-fe948338-7a3d-4c95-be2d-5f970f2d7f99 +Openstack-Request-Id: req-209d6370-a5a9-4ec9-b522-baac8a91f345 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/82bdb180-b879-4835-bee1-035964080209 -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/82bdb180-b879-4835-bee1-035964080209 {} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/5a4b7a6d-aeaf-4cfb-ac37-f3f052136f07 +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/5a4b7a6d-aeaf-4cfb-ac37-f3f052136f07 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-88c92421-0255-422c-b5d7-37353dbd3dc3 +Openstack-Request-Id: req-404c5407-4f12-4b27-9690-6917060503a5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "82bdb180-b879-4835-bee1-035964080209", "created_at": "2024-01-06T13:44:23.912599+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/82bdb180-b879-4835-bee1-035964080209", "rel": "self"}]} +{"uuid": "5a4b7a6d-aeaf-4cfb-ac37-f3f052136f07", "created_at": "2024-01-06T14:14:07.641048+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/5a4b7a6d-aeaf-4cfb-ac37-f3f052136f07", "rel": "self"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-88c92421-0255-422c-b5d7-37353dbd3dc3 +Openstack-Request-Id: req-404c5407-4f12-4b27-9690-6917060503a5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "82bdb180-b879-4835-bee1-035964080209", "created_at": "2024-01-06T13:44:23.912599+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/82bdb180-b879-4835-bee1-035964080209", "rel": "self"}]} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/dc31a6e4-56f8-46ca-9f9f-fcf7005d49a4 -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/dc31a6e4-56f8-46ca-9f9f-fcf7005d49a4 {} +{"uuid": "5a4b7a6d-aeaf-4cfb-ac37-f3f052136f07", "created_at": "2024-01-06T14:14:07.641048+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/5a4b7a6d-aeaf-4cfb-ac37-f3f052136f07", "rel": "self"}]} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/4f1c343e-b963-43e1-b1fa-f0011ec1e195 +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/4f1c343e-b963-43e1-b1fa-f0011ec1e195 {} GOT:Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f41b8e1c-a8f4-4b77-a805-c7f90a8895f5 +Openstack-Request-Id: req-e8478206-b44e-4868-af00-1498adbc3496 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "dc31a6e4-56f8-46ca-9f9f-fcf7005d49a4", "created_at": "2024-01-06T13:44:24.368088+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/dc31a6e4-56f8-46ca-9f9f-fcf7005d49a4", "rel": "self"}]} +{"uuid": "4f1c343e-b963-43e1-b1fa-f0011ec1e195", "created_at": "2024-01-06T14:14:07.873909+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/4f1c343e-b963-43e1-b1fa-f0011ec1e195", "rel": "self"}]} ACL Test GOT Response: 200 OK Content-Type: application/json -Openstack-Request-Id: req-f41b8e1c-a8f4-4b77-a805-c7f90a8895f5 +Openstack-Request-Id: req-e8478206-b44e-4868-af00-1498adbc3496 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"uuid": "dc31a6e4-56f8-46ca-9f9f-fcf7005d49a4", "created_at": "2024-01-06T13:44:24.368088+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/dc31a6e4-56f8-46ca-9f9f-fcf7005d49a4", "rel": "self"}]} +{"uuid": "4f1c343e-b963-43e1-b1fa-f0011ec1e195", "created_at": "2024-01-06T14:14:07.873909+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/4f1c343e-b963-43e1-b1fa-f0011ec1e195", "rel": "self"}]} API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-da4064d2-b081-4f2e-a901-e7f1af989780 +Openstack-Request-Id: req-07bce3c8-8e54-43a0-a1ae-5d06ddbe1377 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-da4064d2-b081-4f2e-a901-e7f1af989780 +Openstack-Request-Id: req-07bce3c8-8e54-43a0-a1ae-5d06ddbe1377 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50562,14 +46868,14 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f9c27a6f-13a0-4e29-b44c-ce61028f0f1e +Openstack-Request-Id: req-4a7e6e6f-8f87-4b5b-88d9-8dbaa8eea0e8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-f9c27a6f-13a0-4e29-b44c-ce61028f0f1e +Openstack-Request-Id: req-4a7e6e6f-8f87-4b5b-88d9-8dbaa8eea0e8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 @@ -50578,1734 +46884,2430 @@ GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-58e3378d-3e80-448a-958a-6043da02e330 +Openstack-Request-Id: req-82f9a3f5-5274-4b6f-88cf-deeb6ba6739c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-58e3378d-3e80-448a-958a-6043da02e330 +Openstack-Request-Id: req-82f9a3f5-5274-4b6f-88cf-deeb6ba6739c X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/2b54d489-d335-433c-a3d2-7a2e6f47220d -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/2b54d489-d335-433c-a3d2-7a2e6f47220d {} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/1cea586a-8d56-42b2-8937-764a733eb713 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/1cea586a-8d56-42b2-8937-764a733eb713 {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-79bc66d0-b803-4b1b-b5e3-0d7476c50ecb +Openstack-Request-Id: req-cc2aa902-5682-4c00-b767-40823ea3adb8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} ACL Test GOT Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-79bc66d0-b803-4b1b-b5e3-0d7476c50ecb +Openstack-Request-Id: req-cc2aa902-5682-4c00-b767-40823ea3adb8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/bbdff32a-70cc-466d-a089-e0d946266d1b -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/bbdff32a-70cc-466d-a089-e0d946266d1b {} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/8d10351b-31b7-468d-9eee-2c6c47843d84 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/8d10351b-31b7-468d-9eee-2c6c47843d84 {} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_448_lessee_history_get_entry_member ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_448_lessee_history_get_entry_member ... ok -ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_store_new -ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_store_new ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration ... ok -ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_take_over -ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_take_over ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_449_lessee_node_history_get_entry_reader -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_449_lessee_node_history_get_entry_reader ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_empty_target_raid_config -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_empty_target_raid_config ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_create_1 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_create_1 ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_no_target_raid_config_after_skipping -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_no_target_raid_config_after_skipping ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_create_2 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_create_2 ... ok -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_450_third_party_admin_cannot_get_node_history -ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_450_third_party_admin_cannot_get_node_history ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_skip_nonroot -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_skip_nonroot ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_1 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_1 ... ok -ironic.tests.unit.api.test_healthcheck.TestHealthcheckMiddleware.test_disable -ironic.tests.unit.api.test_healthcheck.TestHealthcheckMiddleware.test_disable ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_skip_root -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_skip_root ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_2 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_2 ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_delete_configuration -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_delete_configuration ... ok -ironic.tests.unit.api.test_healthcheck.TestHealthcheckMiddleware.test_enable -ironic.tests.unit.api.test_healthcheck.TestHealthcheckMiddleware.test_enable ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_add_1 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_add_1 ... ok -ironic.tests.unit.api.test_root.TestRoot.test_get_root -ironic.tests.unit.api.test_root.TestRoot.test_get_root ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_clean_steps -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_clean_steps ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_add_2 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_add_2 ... ok -ironic.tests.unit.api.test_root.TestRoot.test_no_html_errors -ironic.tests.unit.api.test_root.TestRoot.test_no_html_errors ... ok -ironic.tests.unit.api.test_root.TestRoot.test_no_html_errors2 -ironic.tests.unit.api.test_root.TestRoot.test_no_html_errors2 ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_clean_steps_config_priority -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_clean_steps_config_priority ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_1 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_1 ... ok -INFO [alembic.runtime.migration] Context impl SQLiteImpl. -INFO [alembic.runtime.migration] Will assume non-transactional DDL. -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_deploy_steps -ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_deploy_steps ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_2 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_2 ... ok -INFO [alembic.runtime.migration] Context impl SQLiteImpl. -INFO [alembic.runtime.migration] Will assume non-transactional DDL. -ironic.tests.unit.cmd.test_dbsync.DbSyncTestCase.test_upgrade_and_version -ironic.tests.unit.cmd.test_dbsync.DbSyncTestCase.test_upgrade_and_version ... ok -ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema -ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_3 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_3 ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_1 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_1 ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up_no_manage_boot -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up_no_manage_boot ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_2 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_2 ... ok -ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_args -ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_args ... ok -ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_kwargs -ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_kwargs ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_3 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_3 ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up_smartnic -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up_smartnic ... ok -ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_mixed -ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_mixed ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_1 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_1 ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_no_manage_agent_boot -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_no_manage_agent_boot ... ok -ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task -ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_2 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_2 ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_power_on -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_power_on ... ok -ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task_default_is_flat -ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task_default_is_flat ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_fails_empty_rescue_password -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_fails_empty_rescue_password ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_3 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_3 ... ok -ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task_unknown_network_interface -ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task_unknown_network_interface ... ok -ironic.tests.unit.common.test_driver_factory.NewFactoryTestCase.test_new_driver_factory_unknown_entrypoint -ironic.tests.unit.common.test_driver_factory.NewFactoryTestCase.test_new_driver_factory_unknown_entrypoint ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_fails_no_rescue_password -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_fails_no_rescue_password ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_no_physnet_update_1 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_no_physnet_update_1 ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_no_manage_agent -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_no_manage_agent ... ok -ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_automatic_retry -ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_automatic_retry ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_no_physnet_update_2 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_no_physnet_update_2 ... ok -ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_driver_not_found -ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_driver_not_found ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_with_smartnic_port -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_with_smartnic_port ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_1 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_1 ... ok -ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_hardware_type_success -ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_hardware_type_success ... ok -ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_hardware_type_success_groups -ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_hardware_type_success_groups ... ok -ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_reset_interval -ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_reset_interval ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_2 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_2 ... ok -ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_uncached -ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_uncached ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_no_manage_agent_boot -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_no_manage_agent_boot ... ok -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_3 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_3 ... ok -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy_fail -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy_fail ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_power_on -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_power_on ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_create_1 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_create_1 ... ok -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy_segmented -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy_segmented ... ok -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_hard_link -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_hard_link ... ok -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_with_smartnic_port -ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_with_smartnic_port ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_create_2 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_create_2 ... ok -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_hard_link_fail -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_hard_link_fail ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__get_post_step_hook -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__get_post_step_hook ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_update_1 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_update_1 ... ok -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_show -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_show ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__get_post_step_hook_no_hook_registered -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__get_post_step_hook_no_hook_registered ... ok -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href ... ok -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href_path_not_found_or_not_file -ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href_path_not_found_or_not_file ... ok -ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_file_image_service -ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_file_image_service ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_update_2 -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_update_2 ... ok -ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_glance_image_service -ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_glance_image_service ... ok -ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_glance_image_service_url -ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_glance_image_service_url ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_deploy -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_deploy ... ok -ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_http_image_service -ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_http_image_service ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_inconsistent_physnets -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_inconsistent_physnets ... ok -ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_https_image_service -ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_https_image_service ... ok -ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_image_service_invalid_image_ref -ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_image_service_invalid_image_ref ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_inconsistent_physnets_fix -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_inconsistent_physnets_fix ... ok -ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port -ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail_deploy -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail_deploy ... ok -ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port_with_client -ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port_with_client ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_no_portgroup_create -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_no_portgroup_create ... ok -ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port_with_exception -ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port_with_exception ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_pregenerated_token -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_pregenerated_token ... ok -ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_by_name -ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_by_name ... ok -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_no_portgroup_update -ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_no_portgroup_update ... ok -ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_by_uuid -ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_by_uuid ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_boot_instance -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_boot_instance ... ok -ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_duplicate -ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_duplicate ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_boot_instance_no_power_on -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_boot_instance_no_power_on ... ok -ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_failure -ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_failure ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot ... ok -ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_not_found -ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_not_found ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_01 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_01 ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_boot_loader_install_fail -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_boot_loader_install_fail ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_02 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_02 ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_03 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_03 ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_always -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_always ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_04 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_04 ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_default -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_default ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_05 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_05 ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_never -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_never ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_06 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_06 ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_07 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_07 ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_no_root_uuid -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_no_root_uuid ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_08 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_08 ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_09 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_09 ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_no_root_uuid_whole_disk -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_no_root_uuid_whole_disk ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_10 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_10 ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_non_software_raid -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_non_software_raid ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_11 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_11 ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_12 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_12 ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_13 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_13 ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_14 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_14 ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_bios -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_bios ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_15 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_15 ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_16 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_16 ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_exception_bios -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_exception_bios ... ok -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_17 -ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_17 ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_exception_uefi -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_exception_uefi ... ok -ironic.tests.unit.common.test_pxe_utils.CleanUpPxeEnvTestCase.test__clean_up_pxe_env -ironic.tests.unit.common.test_pxe_utils.CleanUpPxeEnvTestCase.test__clean_up_pxe_env ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_explicit_uuid -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_explicit_uuid ... ok -ironic.tests.unit.common.test_pxe_utils.TFTPImageCacheTestCase.test_with_master_path -ironic.tests.unit.common.test_pxe_utils.TFTPImageCacheTestCase.test_with_master_path ... ok -ironic.tests.unit.common.test_pxe_utils.TFTPImageCacheTestCase.test_without_master_path -ironic.tests.unit.common.test_pxe_utils.TFTPImageCacheTestCase.test_without_master_path ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_explicit_uuid_bios -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_explicit_uuid_bios ... ok -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_contains_all_db_objects -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_contains_all_db_objects ... ok -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_current_object_versions -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_current_object_versions ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_set_boot_device_fail -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_set_boot_device_fail ... ok -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_current_rpc_version -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_current_rpc_version ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_uefi -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_uefi ... ok -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_no_gaps_in_object_versions -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_no_gaps_in_object_versions ... ok -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_no_gaps_in_release_versions -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_no_gaps_in_release_versions ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_whole_disk_image -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_whole_disk_image ... ok -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_object_names_are_registered -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_object_names_are_registered ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_whole_disk_image_bios -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_whole_disk_image_bios ... ok -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_rpc_and_objects_versions_supported -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_rpc_and_objects_versions_supported ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_create_schema_and_version -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_create_schema_and_version ... skipped "Backend 'postgresql+psycopg2' is unavailable: Could not connect" -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_structure -ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_structure ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_with_prep -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_with_prep ... ok -ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_context -ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_context ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_and_create_schema -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_and_create_schema ... skipped "Backend 'postgresql+psycopg2' is unavailable: Could not connect" -ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_entity -ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_entity ... ok -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_post_clean_step_hook -ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_post_clean_step_hook ... ok -ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_entity_empty_base -ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_entity_empty_base ... ok +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_deploy +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_deploy ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_prepare_instance_to_boot ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_prepare_instance_to_boot ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_and_version -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_and_version ... skipped "Backend 'postgresql+psycopg2' is unavailable: Could not connect" -ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_context -ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_context ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_449_lessee_node_history_get_entry_reader +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_449_lessee_node_history_get_entry_reader ... ok +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device_node_locked +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device_node_locked ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_rescue +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_rescue ... ok +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device_validate_fail +ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device_validate_fail ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_prepare_instance_to_boot_configure_fails ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_prepare_instance_to_boot_configure_fails ... ok -ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_entity -ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_entity ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_twice -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_twice ... skipped "Backend 'postgresql+psycopg2' is unavailable: Could not connect" +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_deploy_kernel +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_deploy_kernel ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_deploy_ramdisk +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_deploy_ramdisk ... ok +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_450_third_party_admin_cannot_get_node_history +ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_450_third_party_admin_cannot_get_node_history ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_prepare_instance_to_boot_localboot_prep_partition ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_prepare_instance_to_boot_localboot_prep_partition ... ok -ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_entity_empty_base -ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_entity_empty_base ... ok -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_walk_versions -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_walk_versions ... skipped "Backend 'postgresql+psycopg2' is unavailable: Could not connect" -ironic.tests.unit.common.test_utils.BareMetalUtilsTestCase.test_create_link -ironic.tests.unit.common.test_utils.BareMetalUtilsTestCase.test_create_link ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_rescue_kernel +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_rescue_kernel ... ok +ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_after_add_request_id +ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_after_add_request_id ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_rescue_ramdisk +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_rescue_ramdisk ... ok +ironic.tests.unit.conductor.test_manager.ConcurrentActionLimitTestCase.test_concurrent_action_limit_cleaning +ironic.tests.unit.conductor.test_manager.ConcurrentActionLimitTestCase.test_concurrent_action_limit_cleaning ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_switch_to_tenant_network ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_switch_to_tenant_network ... ok -ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedDict_default_value -ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedDict_default_value ... ok -ironic.tests.unit.common.test_utils.BareMetalUtilsTestCase.test_create_link_EEXIST -ironic.tests.unit.common.test_utils.BareMetalUtilsTestCase.test_create_link_EEXIST ... ok -ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedDict_type_check -ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedDict_type_check ... ok -ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_file -ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_file ... ok +ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_after_miss_context +ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_after_miss_context ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_deploy +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_deploy ... ok +ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_auth_token_info +ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_auth_token_info ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_rescue +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_rescue ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_switch_to_tenant_network_fails ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_switch_to_tenant_network_fails ... ok -ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_string -ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_string ... ok -ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedList_default_value -ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedList_default_value ... ok +ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_noauth_token_removed +ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_noauth_token_removed ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_ramdisk +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_ramdisk ... ok +ironic.tests.unit.conductor.test_manager.ConcurrentActionLimitTestCase.test_concurrent_action_limit_deploy +ironic.tests.unit.conductor.test_manager.ConcurrentActionLimitTestCase.test_concurrent_action_limit_deploy ... ok +ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_not_admin +ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_not_admin ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent ... ok -ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedList_type_check -ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedList_type_check ... ok -ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_with_quotes -ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_with_quotes ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_free_space_ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_free_space_ok ... ok +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_rescue +ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_rescue ... ok +ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_public_api +ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_public_api ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_default_noop +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_default_noop ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_get_power_state_fails ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_get_power_state_fails ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create_allocation_duplicated_name -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create_allocation_duplicated_name ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_writable_not_writable -ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_writable_not_writable ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_writable_ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_writable_ok ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create_allocation_duplicated_uuid -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create_allocation_duplicated_uuid ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_free_space_raises -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_free_space_raises ... ok +ironic.tests.unit.api.test_hooks.TestPolicyDeprecation.test_policy_deprecation_check +ironic.tests.unit.api.test_hooks.TestPolicyDeprecation.test_policy_deprecation_check ... ok +ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy +ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_no_source +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_no_source ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_raises_exception_with_absolute_path +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_raises_exception_with_absolute_path ... ok +ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_authenticated +ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_authenticated ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_no_power_on_support ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_no_power_on_support ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_no_dir -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_no_dir ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_ok ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_with_pass_in -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_with_pass_in ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files ... ok +ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_not_authenticated +ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_not_authenticated ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_power_action_oob_power_off ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_power_action_oob_power_off ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_that_does_not_exist -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_that_does_not_exist ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_uuid -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_uuid ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_good -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_good ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_exception_on_chmod +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_exception_on_chmod ... ok +ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_deprecated +ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_deprecated ... ok +ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_public_unauthenticated +ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_public_unauthenticated ... ok +ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_22_root +ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_22_root ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_exception_on_copy +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_exception_on_copy ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_power_action_oob_power_off_failed ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_power_action_oob_power_off_failed ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_recovers -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_recovers ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_with_node -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_with_node ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_warning_only -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_warning_only ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_id -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_id ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir ... ok +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_relative_path +ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_relative_path ... ok +ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_23_root +ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_23_root ... ok +ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions +ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions ... ok +ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_locked +ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_locked ... ok +ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_32_root +ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_32_root ... ok +ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_objects +ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_objects ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_power_off_fails ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_power_off_fails ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir_mocked -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir_mocked ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_id_that_does_not_exist -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_id_that_does_not_exist ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_name -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_name ... ok -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir_mocked_error_on_rmtree -ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir_mocked_error_on_rmtree ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_name_that_does_not_exist -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_name_that_does_not_exist ... ok -ironic.tests.unit.common.test_utils.ValidateConductorGroupTestCase.test_validate_conductor_group_fail -ironic.tests.unit.common.test_utils.ValidateConductorGroupTestCase.test_validate_conductor_group_fail ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_uuid -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_uuid ... ok -ironic.tests.unit.common.test_utils.ValidateConductorGroupTestCase.test_validate_conductor_group_success -ironic.tests.unit.common.test_utils.ValidateConductorGroupTestCase.test_validate_conductor_group_success ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_uuid_that_does_not_exist -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_uuid_that_does_not_exist ... ok -ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker -ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker ... ok -ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker_none_free -ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker_none_free ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list ... ok +ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_releases +ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_releases ... ok +INFO [alembic.runtime.migration] Context impl SQLiteImpl. +INFO [alembic.runtime.migration] Will assume non-transactional DDL. ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_soft_poweroff_doesnt_complete ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_soft_poweroff_doesnt_complete ... ok +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-9823ab7f-38dd-4a0f-a990-05a237e707c5 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-9823ab7f-38dd-4a0f-a990-05a237e707c5 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/0bcd1d08-277d-4d99-8078-5e53381e441a +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/0bcd1d08-277d-4d99-8078-5e53381e441a {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-23cd39c9-98bb-4669-8f6b-58967531d067 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-23cd39c9-98bb-4669-8f6b-58967531d067 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 +GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 {} +GOT:Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-e6400bf7-5636-46e8-a5ee-10cd004770cc +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +ACL Test GOT Response: 404 Not Found +Content-Type: application/json +Openstack-Request-Id: req-e6400bf7-5636-46e8-a5ee-10cd004770cc +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} +GET: /v1/bad/path {} +GOT:Response: 404 Not Found +Content-Type: application/json +{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} +GET: /v1/chassis {} +GOT:{'chassis': []} +GET: /v1/chassis {} +GOT:Response: 401 Unauthorized +Content-Type: application/json +Www-Authenticate: Basic realm="Baremetal API" +{"error":{"message":"Authorization required","code":401}} +GET: /v1/ {} +GOT:{'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.80'}} +GET: /v1/ {} +GOT:{'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.80'}, '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'}]} +GET: /v1/ {} +GOT:{'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.80'}, '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'}]} +GET: /v1/ {} +GOT:{'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.80'}, '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'}]} +GET: /v1/ {} +ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_root +ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_root ... ok +ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_releases_objects +ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_releases_objects ... ok +ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_worker_pool_full +ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_worker_pool_full ... ok +ironic.tests.unit.common.test_utils.BareMetalUtilsTestCase.test_create_link +ironic.tests.unit.common.test_utils.BareMetalUtilsTestCase.test_create_link ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_soft_poweroff_fails ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_soft_poweroff_fails ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_conductor_affinity -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_conductor_affinity ... ok +ironic.tests.unit.common.test_utils.BareMetalUtilsTestCase.test_create_link_EEXIST +ironic.tests.unit.common.test_utils.BareMetalUtilsTestCase.test_create_link_EEXIST ... ok +ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_get_root_helper +ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_get_root_helper ... ok ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_soft_poweroff_race ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_soft_poweroff_race ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_node -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_node ... ok -ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles -ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_rsc -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_rsc ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_after_reboot -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_after_reboot ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_state -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_state ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_automated_clean_version_mismatch -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_automated_clean_version_mismatch ... ok -ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_failed -ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_failed ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_invalid_fields -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_invalid_fields ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_sorted -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_sorted ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_clean_version_mismatch_fail -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_clean_version_mismatch_fail ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_allocation_not_found -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_allocation_not_found ... ok -ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_no_console_enabled -ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_no_console_enabled ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_conflict -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_conflict ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_fail -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_fail ... ok -ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_node_locked -ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_node_locked ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_success -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_success ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_manual_clean_version_mismatch -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_manual_clean_version_mismatch ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_associated_with_another_node -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_associated_with_another_node ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_no_step_running -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_no_step_running ... ok -ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_node_not_found -ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_node_not_found ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_duplicated_name -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_duplicated_name ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_old_command -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_old_command ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_node_already_associated -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_node_already_associated ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_not_found -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_not_found ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_conductor_shutdown_flag -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_conductor_shutdown_flag ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_uuid -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_uuid ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_reboot -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_reboot ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_del_host_waits_on_workerpool -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_del_host_waits_on_workerpool ... ok -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_with_node_id -ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_with_node_id ... ok -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_create_chassis_already_exists -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_create_chassis_already_exists ... ok -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis ... ok -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis_that_does_not_exist -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis_that_does_not_exist ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_running -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_running ... ok -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis_with_nodes -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis_with_nodes ... ok -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_by_id -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_by_id ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_del_host_with_mdns -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_del_host_with_mdns ... ok -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_by_uuid -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_by_uuid ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_unknown -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_unknown ... ok -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_list -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_list ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_with_hook -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_with_hook ... ok -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_that_does_not_exist -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_that_does_not_exist ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_prevent_double_start -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_prevent_double_start ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_with_hook_fails -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_with_hook_fails ... ok -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis ... ok -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis_that_does_not_exist -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis_that_does_not_exist ... ok -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_manual_cleaning -ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_manual_cleaning ... ok -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis_uuid -ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis_uuid ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_clears_conductor_locks -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_clears_conductor_locks ... ok -ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps -ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_address -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_address ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_dbapi_single_call -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_dbapi_single_call ... ok -ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_busy -ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_busy ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_name -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_name ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_uuid -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_uuid ... ok -ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_deploy -ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_deploy ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_no_mode -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_no_mode ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_hw_type_register -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_hw_type_register ... ok -ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_missing_interface -ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_missing_interface ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_not_empty -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_not_empty ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_on_hw_types -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_on_hw_types ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_that_does_not_exist -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_that_does_not_exist ... ok -ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_missing_steps -ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_missing_steps ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_fail_agent_token_required -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_fail_agent_token_required ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_on_missing_driver -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_on_missing_driver ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_uuid -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_uuid ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_fail_all_attempts -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_fail_all_attempts ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_address -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_address ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_succeed_after_one_timeout -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_succeed_after_one_timeout ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_address_that_does_not_exist -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_address_that_does_not_exist ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_succeed_after_two_timeouts -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_succeed_after_two_timeouts ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_id -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_id ... ok +ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_not_use_standard_locale +ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_not_use_standard_locale ... ok +ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_wrong_state +ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_wrong_state ... ok ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_basics ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_basics ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_id_that_does_not_exist -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_id_that_does_not_exist ... ok +ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_use_standard_locale_no_env_variables +ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_use_standard_locale_no_env_variables ... ok ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_get_power_state ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_get_power_state ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_name -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_name ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_recover_nodes_stuck -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_recover_nodes_stuck ... ok +ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_use_standard_locale_with_env_variables +ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_use_standard_locale_with_env_variables ... ok +ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port +ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port ... ok +ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_without_root_helper +ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_without_root_helper ... ok ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_get_power_state_unknown ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_get_power_state_unknown ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_name_that_does_not_exist -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_name_that_does_not_exist ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_uuid -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_uuid ... ok +ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_mac_exists +ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_mac_exists ... ok +ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_obj_versions +ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_obj_versions ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test__get_hash_object +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test__get_hash_object ... ok +ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_node_locked +ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_node_locked ... ok +ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_obj_versions_bad +ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_obj_versions_bad ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test__get_hash_object_throws_for_invalid_or_unsupported_hash_name +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test__get_hash_object_throws_for_invalid_or_unsupported_hash_name ... ok ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_conductor -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_conductor ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_uuid_that_does_not_exist -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_uuid_that_does_not_exist ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_and +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_and ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_differ +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_differ ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_boolean +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_boolean ... ok +ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_physnet_validation_failure_conflict +ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_physnet_validation_failure_conflict ... ok ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot_another_state ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot_another_state ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_list -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_list ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_equal +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_equal ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_args +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_args ... ok +ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_physnet_validation_failure_inconsistent +ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_physnet_validation_failure_inconsistent ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_args_kwargs +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_args_kwargs ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_equal_not_binary +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_equal_not_binary ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_function +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_function ... ok ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot_into_instance ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot_into_instance ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_list_sorted -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_list_sorted ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroups_by_node_id -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroups_by_node_id ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_fips_enabled +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_fips_enabled ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_kwargs +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_kwargs ... ok +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_hostname_safe +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_hostname_safe ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_integer +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_integer ... ok +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_and_maintenance_no_vif +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_and_maintenance_no_vif ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mac_address +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mac_address ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_datapath_id +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_datapath_id ... ok ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot_timeout ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot_timeout ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroups_by_node_id_that_does_not_exist -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroups_by_node_id_that_does_not_exist ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mandatory +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mandatory ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_logical_name +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_logical_name ... ok ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_validate ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_validate ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup ... ok +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_and_maintenance_vif_present +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_and_maintenance_vif_present ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mixed_unvalidated +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mixed_unvalidated ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_no_proxy +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_no_proxy ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_name +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_name ... ok ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_validate_fails ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_validate_fails ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_duplicated_address -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_duplicated_address ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_driver_names -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_driver_names ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_safe_rstrip +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_safe_rstrip ... ok +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_port_unbound +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_port_unbound ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_or +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_or ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_safe_rstrip_not_raises_exceptions +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_safe_rstrip_not_raises_exceptions ... ok ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_validate_no_fast_track ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_validate_no_fast_track ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_duplicated_name -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_duplicated_name ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_not_found -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_not_found ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_agent_add_clean_params -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_agent_add_clean_params ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_driver_specific_tasks -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_driver_specific_tasks ... ok -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_uuid -ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_uuid ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_build_agent_options_conf -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_build_agent_options_conf ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_mdns -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_mdns ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_build_agent_options_keystone -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_build_agent_options_keystone ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_mdns_and_debug -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_mdns_and_debug ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_no_force_raw -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_no_force_raw ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_no_stream -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_no_stream ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_partition -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_partition ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_no_enabled_interfaces -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_no_enabled_interfaces ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_create_volume_connector_duplicated_type_connector_id -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_create_volume_connector_duplicated_type_connector_id ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_true -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_true ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_create_volume_connector_duplicated_uuid -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_create_volume_connector_duplicated_uuid ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_destroy_volume_connector -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_destroy_volume_connector ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_clears_conductor_locks -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_clears_conductor_locks ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_by_id -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_by_id ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_broken_fast_track -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_broken_fast_track ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_by_uuid -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_by_uuid ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_doesnt_unregister_conductor -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_doesnt_unregister_conductor ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_fast_track -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_fast_track ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_list -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_list ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_uninitialized_conductor -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_uninitialized_conductor ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_manage_boot_false -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_manage_boot_false ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_list_sorted -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_list_sorted ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connectors_by_node_id -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connectors_by_node_id ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_unregisters_conductor -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_unregisters_conductor ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connectors_by_node_id_that_does_not_exist -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connectors_by_node_id_that_does_not_exist ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_cleaning_error -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_cleaning_error ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_fast_track -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_fast_track ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_duplicated_type_connector_id -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_duplicated_type_connector_id ... ok -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_warning_on_low_workers_pool -ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_warning_on_low_workers_pool ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_fails_invalid_id -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_fails_invalid_id ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_manage_boot_false -ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_manage_boot_false ... ok -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_uuid -ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_uuid ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_string +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_string ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_unix_file_modification_datetime +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_unix_file_modification_datetime ... ok +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_state +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_state ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_bios +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_bios ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_string_list +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_string_list ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_datapath_id +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_datapath_id ... ok +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_locked +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_locked ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_fallback +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_fallback ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_mac +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_mac ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_unexpected_args +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_unexpected_args ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_uuid +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_uuid ... ok +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_mac_invalid_format +ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_mac_invalid_format ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_fallback_bios +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_fallback_bios ... ok +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_with_instance_not_in_active_port_bound +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_with_instance_not_in_active_port_bound ... ok +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities ... ok +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_uuid_or_name +ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_uuid_or_name ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_other_arch +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_other_arch ... ok +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_add_to_existing_capabilities +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_add_to_existing_capabilities ... ok +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_with_instance_not_in_active_port_unbound +ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_with_instance_not_in_active_port_unbound ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_uefi +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_uefi ... ok +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_dynamic_driver_interfaces_set +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_dynamic_driver_interfaces_set ... ok +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_capabilities_not_dict +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_capabilities_not_dict ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_uefi +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_uefi ... ok +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_invalid_capabilities +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_invalid_capabilities ... ok +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_invalid_network_interface +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_invalid_network_interface ... ok +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_multiple_keys +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_multiple_keys ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template ... ok +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_invalid_network_interface_instance_info_override +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_invalid_network_interface_instance_info_override ... ok +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_replace_to_existing_capabilities +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_replace_to_existing_capabilities ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_boot_validate_failure +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_boot_validate_failure ... ok +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_validate_network_port +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_validate_network_port ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_none +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_none ... ok +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_valid_interfaces +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_valid_interfaces ... ok +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_validate_network_port_fail +ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_validate_network_port_fail ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_none_bios +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_none_bios ... ok +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_valid_network_interface_instance_info_override +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_valid_network_interface_instance_info_override ... ok +ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_file +ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_file ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_override_pxe_fallback +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_override_pxe_fallback ... ok +ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_string +ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_string ... ok +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_no_network_interface +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_no_network_interface ... ok +ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_with_quotes +ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_with_quotes ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_ramdisk_deploy +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_ramdisk_deploy ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_bios_without_by_arch +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_bios_without_by_arch ... ok +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_no_network_interface_default_from_conf +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_no_network_interface_default_from_conf ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_cpu_in_by_arch +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_cpu_in_by_arch ... ok +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_candidate_nodes_mismatch +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_candidate_nodes_mismatch ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_cpu_not_in_by_arch +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_cpu_not_in_by_arch ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_emtpy_property +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_emtpy_property ... ok +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_node_associated_with_another_instance +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_node_associated_with_another_instance ... ok +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_node_update_dynamic_driver_set_interfaces +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_node_update_dynamic_driver_set_interfaces ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_take_over_failure +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_take_over_failure ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_emtpy_property_bios_default +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_emtpy_property_bios_default ... ok +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_non_existing_node +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_non_existing_node ... ok +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_none_network_interface +ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_none_network_interface ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_uefi_without_by_arch +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_uefi_without_by_arch ... ok +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_fallback +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_fallback ... ok +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_resource_class_mismatch +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_resource_class_mismatch ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_bios_without_by_arch +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_bios_without_by_arch ... ok +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_no_answer_drivername +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_no_answer_drivername ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_cpu_in_by_arch +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_cpu_in_by_arch ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_with_takeover +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_with_takeover ... ok +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_no_answer_drivername_node +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_no_answer_drivername_node ... ok +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_state_not_active +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_state_not_active ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_cpu_not_in_by_arch +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_cpu_not_in_by_arch ... ok +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_one +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_one ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_emtpy_property +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_emtpy_property ... ok +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_traits_mismatch +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_traits_mismatch ... ok +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_two +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_two ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_emtpy_property_bios +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_emtpy_property_bios ... ok +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_unsupported +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_unsupported ... ok +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_uuid_associated_with_another_instance +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_uuid_associated_with_another_instance ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_adopt_node +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_adopt_node ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_per_node +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_per_node ... ok +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_check_exception_IncompatibleInterface +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_check_exception_IncompatibleInterface ... ok +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_from_additional_defaults +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_from_additional_defaults ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_uefi_without_by_arch +ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_uefi_without_by_arch ... ok +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_associated_node +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_associated_node ... ok +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_from_config +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_from_config ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test__check_disk_layout_unchanged ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test__check_disk_layout_unchanged ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort_tear_down_fail -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort_tear_down_fail ... ok +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_network_from_additional_defaults_hardware_type +ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_network_from_additional_defaults_hardware_type ... ok +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_candidate_nodes +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_candidate_nodes ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test__check_disk_layout_unchanged_fails ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test__check_disk_layout_unchanged_fails ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target_duplicated_nodeid_and_bootindex -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target_duplicated_nodeid_and_bootindex ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_adopt_node_retry +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_adopt_node_retry ... ok +ironic.tests.unit.common.test_driver_factory.NewFactoryTestCase.test_new_driver_factory_unknown_entrypoint +ironic.tests.unit.common.test_driver_factory.NewFactoryTestCase.test_new_driver_factory_unknown_entrypoint ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_configdrive ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_configdrive ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target_duplicated_uuid -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target_duplicated_uuid ... ok +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_unassociated_node +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_unassociated_node ... ok +ironic.tests.unit.common.test_driver_factory.StorageInterfaceFactoryTestCase.test_build_interface_for_task +ironic.tests.unit.common.test_driver_factory.StorageInterfaceFactoryTestCase.test_build_interface_for_task ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_good ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_good ... ok -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort_with_step_name -ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort_with_step_name ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_destroy_volume_target -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_destroy_volume_target ... ok +ironic.tests.unit.common.test_driver_factory.WarnUnsupportedDriversTestCase.test__warn_if_unsupported_with_supported +ironic.tests.unit.common.test_driver_factory.WarnUnsupportedDriversTestCase.test__warn_if_unsupported_with_supported ... ok +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_without_resource_class +ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_without_resource_class ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_ephemeral_disk ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_ephemeral_disk ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_by_id -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_by_id ... ok -ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive -ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive ... ok +ironic.tests.unit.common.test_driver_factory.WarnUnsupportedDriversTestCase.test__warn_if_unsupported_with_unsupported +ironic.tests.unit.common.test_driver_factory.WarnUnsupportedDriversTestCase.test__warn_if_unsupported_with_unsupported ... ok +ironic.tests.unit.common.test_glance_service.TestGlanceSerializer.test_serialize +ironic.tests.unit.common.test_glance_service.TestGlanceSerializer.test_serialize ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_manage_of_failed_adoption +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_manage_of_failed_adoption ... ok +ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_add_items_to_cache +ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_add_items_to_cache ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_ephemeral_gb ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_ephemeral_gb ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_by_uuid -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_by_uuid ... ok -ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift -ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift ... ok +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_name_match_first +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_name_match_first ... ok +ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_do_not_return_expired_tempurls +ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_do_not_return_expired_tempurls ... ok +ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_remove_expired_items_from_cache +ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_remove_expired_items_from_cache ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_preserve_ephemeral ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_preserve_ephemeral ... ok -ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_build -ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_build ... ok +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_candidates_do_not_match +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_candidates_do_not_match ... ok +ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_return_cached_tempurl +ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_return_cached_tempurl ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_root_gb ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_root_gb ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_list -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_list ... ok -ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_no_deploy_timeout -ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_no_deploy_timeout ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_list_sorted -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_list_sorted ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_node_id -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_node_id ... ok -ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_no_deploy_timeout_fallback -ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_no_deploy_timeout_fallback ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_node_id_that_does_not_exist -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_node_id_that_does_not_exist ... ok -ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector -ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector ... ok -ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector_node_locked -ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector_node_locked ... ok -ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector_node_power_on -ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector_node_power_on ... ok +ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_swift_temp_url_cache_disabled +ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_swift_temp_url_cache_disabled ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_invalid_agent_token +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_invalid_agent_token ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_missing_instance_source ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_missing_instance_source ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_volume_id -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_volume_id ... ok -ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover -ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover ... ok +ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_swift_temp_url_cache_enabled +ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_swift_temp_url_cache_enabled ... ok +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_changed_after_lock +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_changed_after_lock ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_missing_root_gb ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_missing_root_gb ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_volume_id_that_does_not_exist -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_volume_id_that_does_not_exist ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_false_connerror +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_false_connerror ... ok +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_filtered_out +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_filtered_out ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_false_ioerror +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_false_ioerror ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_non_image_deploy ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_non_image_deploy ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_true_ioerror +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_true_ioerror ... ok +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_filtered_out_project +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_filtered_out_project ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_nonglance_image ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_nonglance_image ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_invalid_agent_token_older_version +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_invalid_agent_token_older_version ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_true_oserror +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_true_oserror ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_nonglance_image_anaconda ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_nonglance_image_anaconda ... ok -ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_enabled -ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_enabled ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_duplicated_nodeid_and_bootindex -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_duplicated_nodeid_and_bootindex ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_custom_timeout +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_custom_timeout ... ok +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_locked +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_locked ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_nonglance_image_no_kernel ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_nonglance_image_no_kernel ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_http_scheme +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_http_scheme ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_unicode_swap_mb ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_unicode_swap_mb ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_fails_invalid_id -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_fails_invalid_id ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_false +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_false ... ok +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_success +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_success ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_invalid_newer_version +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_invalid_newer_version ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_ephemeral_gb ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_ephemeral_gb ... ok -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_uuid -ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_uuid ... ok -ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_exception -ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_exception ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_path +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_path ... ok +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_with_candidates +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_with_candidates ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_ephemeral_missing_format ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_ephemeral_missing_format ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_true +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_true ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_true_connerror +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_true_connerror ... ok +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_with_traits +ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_with_traits ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_tls_required +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_tls_required ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_preserve_ephemeral_false ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_preserve_ephemeral_false ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_ansi_c +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_ansi_c ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_cache_allowed +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_cache_allowed ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_cache_disabled +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_cache_disabled ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_preserve_ephemeral_true ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_preserve_ephemeral_true ... ok -ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_port_cleaned -ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_port_cleaned ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_no_content_length +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_no_content_length ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_rfc_822 +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_rfc_822 ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_whole_disk_image ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_whole_disk_image ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_db_error +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_db_error ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_agent_token +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_agent_token ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_rfc_850 +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_rfc_850 ... ok ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_whole_disk_image_missing_root ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_whole_disk_image_missing_root ... ok -ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_clean_dhcp_opts -ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_clean_dhcp_opts ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_ipxe_config_whole_disk_image -ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_ipxe_config_whole_disk_image ... ok -ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_get_ip_addresses -ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_get_ip_addresses ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_ipxe_iscsi_boot -ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_ipxe_iscsi_boot ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_pxe_config_whole_disk_image -ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_pxe_config_whole_disk_image ... ok -ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_update_dhcp -ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_update_dhcp ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_elilo_config_whole_disk_image -ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_elilo_config_whole_disk_image ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_grub_config_whole_disk_image -ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_grub_config_whole_disk_image ... ok -ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_cd -ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_cd ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_ipxe_config_whole_disk_image -ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_ipxe_config_whole_disk_image ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_ipmifailure_bios -ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_ipmifailure_bios ... ok -ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_disk -ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_disk ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_ipmifailure_uefi -ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_ipmifailure_uefi ... ok -ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_floppy -ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_floppy ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_okay -ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_okay ... ok -ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_persistent -ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_persistent ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_some_other_exception -ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_some_other_exception ... ok -ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test_validate_correct_vendor -ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test_validate_correct_vendor ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_anaconda_deploy_image_source -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_anaconda_deploy_image_source ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_clear_job_queue -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_clear_job_queue ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_boot_iso_conflict -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_boot_iso_conflict ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_boot_device -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_boot_device ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_missing_stage2_id -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_missing_stage2_id ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_not_authorized -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_not_authorized ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_boot_device_from_driver_internal_info -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_boot_device_from_driver_internal_info ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_not_found -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_not_found ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_properties -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_properties ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_invalid_image_href -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_invalid_image_href ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_sensors_data -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_sensors_data ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_local_boot -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_local_boot ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_custom_timeout +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_custom_timeout ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_error_with_secret_parameter +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_error_with_secret_parameter ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_http_scheme +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_http_scheme ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images_fail +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images_fail ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_path_forbidden +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_path_forbidden ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_path_redirected +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_path_redirected ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_swift_error +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_swift_error ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_boot_option_anaconda_deploy +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_boot_option_anaconda_deploy ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_connect_error +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_connect_error ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_boot_option_default_value +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_boot_option_default_value ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_error +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_error ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_false +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_false ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_fail +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_fail ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_false_error +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_false_error ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_from_keystone +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_from_keystone ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_unexpected_error +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_unexpected_error ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_os_error +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_os_error ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_true +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_true ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_none +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_none ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_agent_verify_ca +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_agent_verify_ca ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_true_error +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_true_error ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_anaconda_deploy +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_anaconda_deploy ... ok +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_valid_path +ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_valid_path ... ok +ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_file_image_service +ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_file_image_service ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_anaconda_deploy_false +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_anaconda_deploy_false ... ok +ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_glance_image_service +ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_glance_image_service ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_software_raid +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_software_raid ... ok +ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_glance_image_service_url +ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_glance_image_service_url ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_agent_version +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_agent_version ... ok +ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_http_image_service +ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_http_image_service ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_software_raid_false +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_software_raid_false ... ok +ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_https_image_service +ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_https_image_service ... ok +ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_image_service_invalid_image_ref +ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_image_service_invalid_image_ref ... ok +ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_duplicate +ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_duplicate ... ok +ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_failure +ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_failure ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_no_required_agent_token +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_no_required_agent_token ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_ironic_exception +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_ironic_exception ... ok +ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_missing +ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_missing ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state ... ok +ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_name +ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_name ... ok +ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_uuid +ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_uuid ... ok +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_multiple_segments +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_multiple_segments ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_required_agent_token +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_with_required_agent_token ... ok +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_multiple_segments_no_physnet +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_multiple_segments_no_physnet ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_raises_error_old +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_raises_error_old ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs ... ok +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_network_failure +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_network_failure ... ok +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_network_missing +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_network_missing ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs_never +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs_never ... ok +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_no_segment +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_no_segment ... ok +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_no_segment_no_physnet +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_no_segment_no_physnet ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_raises_prepare_error +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_raises_prepare_error ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_without_agent_version_anaconda +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_without_agent_version_anaconda ... ok +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_port_failure +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_port_failure ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs_overide +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs_overide ... ok +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_port_missing +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_port_missing ... ok +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_single_segment +ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_single_segment ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_unexpected_exception +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_unexpected_exception ... ok +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_without_version +ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_heartbeat_without_version ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipa_debug_rescue +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipa_debug_rescue ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_no_poweroff +ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_no_poweroff ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_from_driver_info +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_from_driver_info ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_fast_track +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_fast_track ... ok +ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover +ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_from_instance_info +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_from_instance_info ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_with_default +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_with_default ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_no_dest +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_no_dest ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok ... ok +ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_enabled +ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_enabled ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_no_master +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_no_master ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_ipa_debug +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_ipa_debug ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_out_of_date +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_out_of_date ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_up_to_date +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_up_to_date ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_local_boot +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_local_boot ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_glance_img +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_glance_img ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok_2 +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok_2 ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_glance_img_not_cached +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_glance_img_not_cached ... ok +ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_exception +ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_exception ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_no_kernel_no_ramdisk +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_no_kernel_no_ramdisk ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_master_same_time +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_master_same_time ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_master_up_to_date +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_master_up_to_date ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_opts_ramdisk_opt +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_opts_ramdisk_opt ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_no_master +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_no_master ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok_configdrive +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok_configdrive ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_no_updated_at +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_no_updated_at ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_rescue +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_rescue ... ok +ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_port_cleaned +ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_port_cleaned ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_out_of_date +ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_out_of_date ... ok +ironic.tests.unit.drivers.modules.test_image_utils.Ilo5ImageHandlerTestCase.test_ilo5_kernel_param_config +ironic.tests.unit.drivers.modules.test_image_utils.Ilo5ImageHandlerTestCase.test_ilo5_kernel_param_config ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_without_is_whole_disk_image +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_without_is_whole_disk_image ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_exception_ignored +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_exception_ignored ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_unexpected_prepare_error +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_unexpected_prepare_error ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ramdisk_params +ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ramdisk_params ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_check_inspecting +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_check_inspecting ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_finished +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_finished ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_inspecting +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_inspecting ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_do_node_deploy_steps +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_do_node_deploy_steps ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe_insecure_heartbeat +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe_insecure_heartbeat ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_inspector +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_not_inspector ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe_source_path +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe_source_path ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_boot_clean_up_failed +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_boot_clean_up_failed ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_prepare_instance_kickstart_config +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_prepare_instance_kickstart_config ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_error +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_error ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_prepare_instance_kickstart_config_not_anaconda_boot +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_prepare_instance_kickstart_config_not_anaconda_boot ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_error_managed +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_error_managed ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_records_lessee +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_records_lessee ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_error_managed_no_power_off +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_error_managed_no_power_off ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template_has_additional_variables +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template_has_additional_variables ... ok +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template_missing_variable +ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template_missing_variable ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_network_clean_up_failed +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_network_clean_up_failed ... ok +ironic.tests.unit.common.test_pxe_utils.TFTPImageCacheTestCase.test_with_master_path +ironic.tests.unit.common.test_pxe_utils.TFTPImageCacheTestCase.test_with_master_path ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_source_path +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_source_path ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok ... ok +ironic.tests.unit.common.test_pxe_utils.TFTPImageCacheTestCase.test_without_master_path +ironic.tests.unit.common.test_pxe_utils.TFTPImageCacheTestCase.test_without_master_path ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok_managed +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok_managed ... ok +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config ... ok +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_source_path_none +ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_source_path_none ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok_managed_no_power_off +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok_managed_no_power_off ... ok +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_empty_target_raid_config +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_empty_target_raid_config ... ok +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_no_target_raid_config_after_skipping +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_no_target_raid_config_after_skipping ... ok +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok_managed_no_power_off_on_fast_track +ironic.tests.unit.drivers.modules.test_inspector.CheckStatusTestCase.test_status_ok_managed_no_power_off_on_fast_track ... ok +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_skip_nonroot +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_skip_nonroot ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_fail ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_no_ipmitool +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_no_ipmitool ... ok +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_skip_root +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_skip_root ... ok +ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_automated_clean +ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_automated_clean ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_pass +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_pass ... ok +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_get_logical_disk_properties +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_get_logical_disk_properties ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_fail ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_no_ipmitool +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_no_ipmitool ... ok +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_get_logical_disk_properties_custom_schema +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_get_logical_disk_properties_custom_schema ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_pass +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_pass ... ok ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_from_valid_states ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_from_valid_states ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_supported_boot_devices -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_supported_boot_devices ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_nonglance_image -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_nonglance_image ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_ramdisk_deploy -ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_ramdisk_deploy ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_known_good_state -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_known_good_state ... ok -ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_both_clean_up -ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_both_clean_up ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_reset_idrac -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_reset_idrac ... ok -ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_clean_up_another_fs -ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_clean_up_another_fs ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_set_boot_device -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_set_boot_device ... ok +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_multiple_root_volumes +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_multiple_root_volumes ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_fail ... ok +ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_boot_timeout +ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_boot_timeout ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_no_ipmitool +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_no_ipmitool ... ok +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_pass +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_pass ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_fail ... ok +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay_current_capabilities_empty +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay_current_capabilities_empty ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_no_ipmitool +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_no_ipmitool ... ok +ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_manual_clean +ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_manual_clean ... ok +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay_no_root_volumes +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay_no_root_volumes ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_pass +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_pass ... ok ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_ok_with_console ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_ok_with_console ... ok -ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_clean_up_fail -ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_clean_up_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_set_boot_device_fail -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_set_boot_device_fail ... ok -ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_no_clean_up -ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_no_clean_up ... ok -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_get_power_state -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_get_power_state ... ok -ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_one_clean_up -ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_one_clean_up ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test___set_and_wait_no_needless_status_polling +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test___set_and_wait_no_needless_status_polling ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__check_cipher_suite_errors +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__check_cipher_suite_errors ... ok +ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_deploy_timeouts +ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_deploy_timeouts ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_empty_list +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_empty_list ... ok ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_ok_without_console ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_ok_without_console ... ok -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_get_power_state_fail -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_get_power_state_fail ... ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_custom_params -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_custom_params ... ok -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_get_properties -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_get_properties ... ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_error -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_error ... ok -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_retries_fail -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_retries_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_retries_power_change_success -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_retries_power_change_success ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_one_element +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_one_element ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_returns_last_to_first +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_returns_last_to_first ... ok +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_skip_MAX +ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_skip_MAX ... ok +ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test_check_rescuewait_timeouts +ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test_check_rescuewait_timeouts ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_additional_property +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_additional_property ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_IPMI_version_1_5 +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_IPMI_version_1_5 ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_custom_schema +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_custom_schema ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite ... ok ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_with_allocation ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_with_allocation ... ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_fast_track -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_fast_track ... ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_fast_track_via_driver_info -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_fast_track_via_driver_info ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_disk_type +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_disk_type ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_error_noconfig +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_error_noconfig ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_int_type +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_int_type ... ok +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_disable_console_already_disabled +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_disable_console_already_disabled ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_is_root_volume +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_is_root_volume ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_set_with_error_config +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_set_with_error_config ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_multiple_is_root_volume +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_multiple_is_root_volume ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_set_with_error_noconfig +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_set_with_error_noconfig ... ok ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_with_source_path ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_with_source_path ... ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_ok ... ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_require_managed_boot -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_require_managed_boot ... ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_unmanaged_error -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_unmanaged_error ... ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_unmanaged_ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_unmanaged_ok ... ok -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_retries_success -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_retries_success ... ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_validate_ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_validate_ok ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_number_of_phy_disks +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_number_of_phy_disks ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_exception +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_exception ... ok +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_enable_console_already_enabled +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_enable_console_already_enabled ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_physical_disks +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_physical_disks ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_first_call_to_address +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_first_call_to_address ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_raid_level +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_raid_level ... ok +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_share_physical_disks +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_share_physical_disks ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_second_call_to_address_no_sleep +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_second_call_to_address_no_sleep ... ok +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console_disabled +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console_disabled ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_size_gb +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_size_gb ... ok ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_console_raises_error ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_console_raises_error ... ok -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_validate_require_managed_boot -ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_validate_require_managed_boot ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_second_call_to_address_sleep +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_second_call_to_address_sleep ... ok +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console_validate_fail +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console_validate_fail ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_max_size_gb +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_max_size_gb ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_try_different_cipher_suite +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_try_different_cipher_suite ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_logical_disk +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_logical_disk ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_raid_level +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_raid_level ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_two_calls_to_diff_address +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_two_calls_to_diff_address ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_size_gb +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_size_gb ... ok +ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_driver_raises_error +ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_driver_raises_error ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_check_exit_code +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_check_exit_code ... ok +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_disabled +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_disabled ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_okay +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_okay ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_okay_software +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_okay_software ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_dual_bridging +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_dual_bridging ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_too_few_physical_disks +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_too_few_physical_disks ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_with_jbod_volume +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_with_jbod_volume ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_empty_password +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_empty_password ... ok +ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_invalid_state +ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_invalid_state ... ok +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_enabled +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_enabled ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_zero_logical_disks +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_zero_logical_disks ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_empty_username +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_empty_username ... ok +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_zero_size_gb +ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_zero_size_gb ... ok +ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier +ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_ironic_retries +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_ironic_retries ... ok +ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier_no_notifier +ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier_no_notifier ... ok +ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_protected +ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_protected ... ok +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_start_fail +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_start_fail ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_ironic_retries_multiple +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_ironic_retries_multiple ... ok +ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier_no_publisher_id +ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier_no_publisher_id ... ok +ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier +ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_port +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_port ... ok +ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier_no_notifier +ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier_no_notifier ... ok +ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier_no_publisher_id +ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier_no_publisher_id ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_single_bridging +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_single_bridging ... ok +ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_validate_fail +ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_validate_fail ... ok +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_stop_fail +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_stop_fail ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_timeout +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_timeout ... ok +ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_notifications_disabled +ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_notifications_disabled ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_timing +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_timing ... ok +ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_notifications_enabled +ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_notifications_enabled ... ok +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_validation_fail +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_validation_fail ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_password +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_password ... ok +ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_worker_pool_full +ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_worker_pool_full ... ok +ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_with_custom_topics +ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_with_custom_topics ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_timing +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_timing ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test__sync_power_state_multiple_nodes +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test__sync_power_state_multiple_nodes ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_free_space_ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_free_space_ok ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_username +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_username ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_writable_not_writable +ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_writable_not_writable ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_disappears_on_acquire +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_disappears_on_acquire ... ok +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_worker_pool_full +ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_worker_pool_full ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_writable_ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_writable_ok ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__ipmitool_timing_args +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__ipmitool_timing_args ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_deploywait_on_acquire +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_deploywait_on_acquire ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_free_space_raises +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_free_space_raises ... ok +ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector +ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_caller_exception +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_caller_exception ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_enroll_on_acquire +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_enroll_on_acquire ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_no_dir +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_no_dir ... ok +ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector_node_locked +ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector_node_locked ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_ok ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_str_password +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_str_password ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_maintenance_on_acquire +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_maintenance_on_acquire ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_with_pass_in +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_with_pass_in ... ok +ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector_node_power_on +ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector_node_power_on ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_tempfile_known_exception +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_tempfile_known_exception ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_power_transition_on_acquire +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_power_transition_on_acquire ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_locked_on_acquire +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_locked_on_acquire ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_tempfile_unknown_exception +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_tempfile_unknown_exception ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_good +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_good ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_recovers +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_recovers ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_not_mapped +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_not_mapped ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_with_numeric_password +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_with_numeric_password ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_warning_only +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_warning_only ... ok +ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_interface_not_support +ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_interface_not_support ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_single_node +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_single_node ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_write_exception +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_write_exception ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir_mocked +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir_mocked ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_single_node_adopt_failed +ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_single_node_adopt_failed ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info ... ok +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir_mocked_error_on_rmtree +ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir_mocked_error_on_rmtree ... ok +ironic.tests.unit.common.test_utils.ValidateConductorGroupTestCase.test_validate_conductor_group_fail +ironic.tests.unit.common.test_utils.ValidateConductorGroupTestCase.test_validate_conductor_group_fail ... ok +ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_interface_return_failed +ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_interface_return_failed ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_have_credentials +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_have_credentials ... ok +ironic.tests.unit.common.test_utils.ValidateConductorGroupTestCase.test_validate_conductor_group_success +ironic.tests.unit.common.test_utils.ValidateConductorGroupTestCase.test_validate_conductor_group_success ... ok +ironic.tests.unit.conductor.test_manager.RaidTestCases.test_get_raid_logical_disk_properties +ironic.tests.unit.conductor.test_manager.RaidTestCases.test_get_raid_logical_disk_properties ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_invalid_ipmi_port +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_invalid_ipmi_port ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_invalid_ipmi_prot_version +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_invalid_ipmi_prot_version ... ok +ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config +ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config ... ok +ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_succeeded +ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_succeeded ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite ... ok +ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive +ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite_ipmi_1_5 +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite_ipmi_1_5 ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_abort +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_abort ... ok +ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config_empty +ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config_empty ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite_not_a_number +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite_not_a_number ... ok +ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config_invalid_parameter_value +ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config_invalid_parameter_value ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_abort_clean_up_fail +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_abort_clean_up_fail ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_hex_kg_key +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_hex_kg_key ... ok +ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive_failed_db_conn +ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive_failed_db_conn ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_hex_kg_key_odd_chars +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_hex_kg_key_odd_chars ... ok +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_port_valid +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_port_valid ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_prot_version_1_5 +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_prot_version_1_5 ... ok +ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive_failed_error +ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive_failed_error ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_bad_state +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_bad_state ... ok +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data_multiple_workers +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data_multiple_workers ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_numeric_password +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_numeric_password ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_terminal_port_allocated +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_terminal_port_allocated ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_terminal_port_specified +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_terminal_port_specified ... ok +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_all +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_all ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort_tear_down_fail +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort_tear_down_fail ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_errors +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_errors ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_undefined_credentials +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_undefined_credentials ... ok +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort_with_step_name +ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort_with_step_name ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_missing_parameters +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_missing_parameters ... ok +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_non +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_non ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_not_supported +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_not_supported ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_returns_rescue +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_returns_rescue ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_pass +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_pass ... ok +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_part +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_part ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_invalid_bridging_type +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_invalid_bridging_type ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_all +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_all ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_no_bridging +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_no_bridging ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_returns_rescuewait +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_returns_rescuewait ... ok +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_missing_parameters +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_missing_parameters ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_not_supported +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_not_supported ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_async +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_async ... ok +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_maintenance +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_maintenance ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_pass +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_pass ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_on_max_retries +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_on_max_retries ... ok +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_no_management +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_no_management ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_error +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_error ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_continue_from_last_step +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_continue_from_last_step ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_bad_state +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_bad_state ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_exception +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_exception ... ok +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_shutdown +ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_shutdown ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_off +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_off ... ok +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action ... ok +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_copies_object +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_copies_object ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_on +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_on ... ok +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_on_object +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_on_object ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_dynamic +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_dynamic ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_ironic_error +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_ironic_error ... ok +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_on_raise +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_on_raise ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__soft_power_off +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__soft_power_off ... ok +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_backport_versions +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_backport_versions ... ok +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__soft_power_off_max_retries +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__soft_power_off_max_retries ... ok +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action_on_object +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action_on_object ... ok +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action_on_raise +ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action_on_raise ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_fast_track +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_fast_track ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_bmc_initialization_in_progress +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_bmc_initialization_in_progress ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_other_error +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_other_error ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_insufficient_resources_for_session +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_insufficient_resources_for_session ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_node_busy +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_node_busy ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_in_deploywait +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_in_deploywait ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_out_of_space +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_out_of_space ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_association_with_ports +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_association_with_ports ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_timeout +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_timeout ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_failure +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_failure ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_bmc_initialization_in_progress +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_bmc_initialization_in_progress ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_node_locked +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_node_locked ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_invalid_state +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_invalid_state ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_insufficient_resources_for_session +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_insufficient_resources_for_session ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_maintenance +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_maintenance ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_node_busy +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_node_busy ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_out_of_space +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_out_of_space ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_active_state_and_maintenance +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_active_state_and_maintenance ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_network_validate_fail +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_network_validate_fail ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done_with_console +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done_with_console ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_timeout +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_timeout ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_deleting_state +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_deleting_state ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_power_validate_fail +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_power_validate_fail ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_bmc_initialization_in_progress +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_bmc_initialization_in_progress ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_insufficient_resources_for_session +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_insufficient_resources_for_session ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_rescue_validate_fail +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_rescue_validate_fail ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_inspect_wait_state +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_inspect_wait_state ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_node_busy +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_node_busy ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done_with_console_error +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done_with_console_error ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_out_of_space +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_out_of_space ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_timeout +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_timeout ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__exec_stop_console ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__exec_stop_console ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_none +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_none ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__get_ipmi_cmd ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__get_ipmi_cmd ... ok -ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_driver_raises_error -ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_driver_raises_error ... ok -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_while_powered_off -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_while_powered_off ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__get_ipmi_cmd_without_user ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__get_ipmi_cmd_without_user ... ok -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_while_powered_on -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_while_powered_on ... ok +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_manageable_state +ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_manageable_state ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy_first_agent_boot +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy_first_agent_boot ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console ... ok -ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_invalid_state -ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_invalid_state ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_async +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_async ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy_no_skip_step +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy_no_skip_step ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console_empty_password ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console_empty_password ... ok -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_while_powered_on_timeout -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_while_powered_on_timeout ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_invalid_state +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_invalid_state ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_driver_not_found +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_driver_not_found ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console_fail ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console_fail ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_steps_validation +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_steps_validation ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_maintenance +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_maintenance ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_http_method_not_supported +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_http_method_not_supported ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console_fail_nodir ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console_fail_nodir ... ok -ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_protected -ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_protected ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_validate_fail +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_validate_fail ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_method_not_supported +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_method_not_supported ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_agent_busy +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_agent_busy ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_invalid_port ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_invalid_port ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_no_default_interface +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_no_default_interface ... ok +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_provision_rescue_abort +ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_provision_rescue_abort ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_missing_port ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_missing_port ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_sync +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_sync ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_missing_port_auto_allocate ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_missing_port_auto_allocate ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_bad_step_return_value +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_bad_step_return_value ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_validation_failed +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_validation_failed ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_wrong_ipmi_protocol_version ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_wrong_ipmi_protocol_version ... ok -ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_validate_fail -ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_validate_fail ... ok +ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_automated_clean +ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_automated_clean ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_driver_vendor_passthru_methods +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_driver_vendor_passthru_methods ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_get_console ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_get_console ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_driver_vendor_passthru_methods_no_default_interface +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_driver_vendor_passthru_methods_no_default_interface ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_start_console ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_start_console ... ok -ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_worker_pool_full -ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_worker_pool_full ... ok +ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_clean_step_not_abortable +ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_clean_step_not_abortable ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_exception +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_exception ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_start_console_alloc_port ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_start_console_alloc_port ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_node_vendor_passthru_methods +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_node_vendor_passthru_methods ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_start_console_with_port ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_start_console_with_port ... ok +ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_manual_clean +ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_manual_clean ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_handled_exception +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_handled_exception ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_stop_console ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_stop_console ... ok -ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_automated_clean -ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_automated_clean ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_async +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_async ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_stop_console_fail ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_stop_console_fail ... ok -ironic.tests.unit.drivers.modules.test_noop_mgmt.TestNoopManagement.test_dummy_methods -ironic.tests.unit.drivers.modules.test_noop_mgmt.TestNoopManagement.test_dummy_methods ... ok -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state ... ok -ironic.tests.unit.drivers.modules.test_noop_mgmt.TestNoopManagement.test_set_boot_device -ironic.tests.unit.drivers.modules.test_noop_mgmt.TestNoopManagement.test_set_boot_device ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue -ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue ... ok -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state_fail -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state_fail ... ok -ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_clean_step_not_abortable -ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_clean_step_not_abortable ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue_fails_no_rescue_kernel -ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue_fails_no_rescue_kernel ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue_no_rescue_ramdisk -ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue_no_rescue_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc ... ok -ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_manual_clean -ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_manual_clean ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_masterswitch -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_masterswitch ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_masterswitchplus -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_masterswitchplus ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_rackpdu -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_rackpdu ... ok ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_manage ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_manage ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_aten -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_aten ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_cyberpower -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_cyberpower ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_http_method_not_supported +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_http_method_not_supported ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__exec_stop_console +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__exec_stop_console ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_ironic_exception +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_ironic_exception ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__get_ipmi_cmd +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__get_ipmi_cmd ... ok ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_provide ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_provide ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default_version -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default_version ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default_version_and_missing_community -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default_version_and_missing_community ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_eatonpower -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_eatonpower ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_driver -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_driver ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_missing_method_parameters +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_missing_method_parameters ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__get_ipmi_cmd_without_user +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__get_ipmi_cmd_without_user ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_no_steps +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_no_steps ... ok ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_provide_in_maintenance ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_provide_in_maintenance ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_outlet -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_outlet ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_version -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_version ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_address -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_address ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_node_already_locked +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_node_already_locked ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_empty_password +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_empty_password ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_fail ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_oob_reboot +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_oob_reboot ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_shared_lock +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_shared_lock ... ok ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provisioning_action_worker_pool_full ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provisioning_action_worker_pool_full ... ok -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state_timeout -ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state_timeout ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_community_snmp_v1 -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_community_snmp_v1 ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_community_snmp_v2c -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_community_snmp_v2c ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test__execute_foreign_drives_with_foreign_drives -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test__execute_foreign_drives_with_foreign_drives ... ok -ironic.tests.unit.conductor.test_manager.MiscTestCase.test__mapped_to_this_conductor -ironic.tests.unit.conductor.test_manager.MiscTestCase.test__mapped_to_this_conductor ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_driver -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_driver ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_outlet -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_outlet ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_user -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_user ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test__execute_foreign_drives_with_no_foreign_drives -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test__execute_foreign_drives_with_no_foreign_drives ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_raritan_pdu2 -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_raritan_pdu2 ... ok -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_iter_nodes -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_iter_nodes ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_read_community -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_read_community ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_apply_configuration -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_apply_configuration ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_read_write_community -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_read_write_community ... ok -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_iter_nodes_shutdown -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_iter_nodes_shutdown ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_servertech_sentry3 -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_servertech_sentry3 ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_delete_existing -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_delete_existing ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_servertech_sentry4 -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_servertech_sentry4 ... ok -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_port -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_port ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_fails_if_disk_already_reserved -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_fails_if_disk_already_reserved ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_port_default -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_port_default ... ok -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_deploy_templates -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_deploy_templates ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v1 -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v1 ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_fails_if_not_enough_space -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_fails_if_not_enough_space ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v2c -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v2c ... ok -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_instance_traits -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_instance_traits ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3 -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3 ... ok -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_unexpected -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_unexpected ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_fails_with_sharing_disabled -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_fails_with_sharing_disabled ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_badproto -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_badproto ... ok -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_dynamic_driver_interfaces -ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_dynamic_driver_interfaces ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_default_proto -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_default_proto ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_in_clean -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_in_clean ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_key_proto -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_key_proto ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_nokey -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_nokey ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_fail_nodir +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_fail_nodir ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_acquire_node_disappears +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_acquire_node_disappears ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_acquire_node_locked +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_acquire_node_locked ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_sync +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_sync ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_exiting_no_worker_avail +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_exiting_no_worker_avail ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_invalid_port +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_invalid_port ... ok +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_oob_reboot_fail +ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_oob_reboot_fail ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_exiting_with_other_exception +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_exiting_with_other_exception ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_missing_port +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_missing_port ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_maintenance_after_lock +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_maintenance_after_lock ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_unsupported_method +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_unsupported_method ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_missing_port_auto_allocate +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_missing_port_auto_allocate ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_no_deploywait_after_lock +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_no_deploywait_after_lock ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_wrong_ipmi_protocol_version +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_wrong_ipmi_protocol_version ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_not_mapped +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_not_mapped ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_exception_getting_current +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_exception_getting_current ... ok +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_worker_pool_full +ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_worker_pool_full ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_timeout +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_timeout ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_get_console +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_get_console ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_worker_limit +ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_worker_limit ... ok +ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_exclusive +ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_exclusive ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeout +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeout ... ok +ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_interface_check +ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_interface_check ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_exception_in_background_task +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_exception_in_background_task ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_acquire_node_disappears +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_acquire_node_disappears ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console_alloc_port +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console_alloc_port ... ok +ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_limit +ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_limit ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_acquire_node_locked +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_acquire_node_locked ... ok +ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_never_run +ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_never_run ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console_with_port +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console_with_port ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_exit_with_other_exception +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_exit_with_other_exception ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_existing +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_existing ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_exiting_no_worker_avail +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_exiting_no_worker_avail ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_no_acquire_after_lock +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_no_acquire_after_lock ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_not_mapped +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_not_mapped ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_node_already_locked +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_node_already_locked ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_to_maintenance_after_lock +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_to_maintenance_after_lock ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_worker_limit +ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_worker_limit ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_stop_console +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_stop_console ... ok +ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi +ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_stop_console_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_stop_console_fail ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_valid +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_valid ... ok +ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_node_locked +ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_node_locked ... ok +ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_not_implemented +ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_not_implemented ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_instance +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_instance ... ok +ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_validate_invalid_param +ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_validate_invalid_param ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_ramdisk +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_ramdisk ... ok +ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_validate_missing_param +ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_validate_missing_param ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_ramdisk_rescue +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_ramdisk_rescue ... ok ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_short_key -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_short_key ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_in_deploy -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_in_deploy ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_compat -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_compat ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_get_properties +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_get_properties ... ok ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_invalid_parameter_value ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_invalid_parameter_value ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_context_engine_id -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_context_engine_id ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_context_name -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_context_name ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_no_change -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_no_change ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_validate_fail +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_validate_fail ... ok ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_node_locked ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_node_locked ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_badproto -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_badproto ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_default_proto -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_default_proto ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_active +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_active ... ok ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_node_not_found ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_node_not_found ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_backing_physical_disks -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_backing_physical_disks ... ok +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_worker_pool_full +ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_worker_pool_full ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_kickstart +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_kickstart ... ok ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_replace ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_replace ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_max_size -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_max_size ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_max_size_and_share_physical_disks -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_max_size_and_share_physical_disks ... ok +ironic.tests.unit.conductor.test_manager.CreateNodeTestCase.test_create_node +ironic.tests.unit.conductor.test_manager.CreateNodeTestCase.test_create_node ... ok +ironic.tests.unit.conductor.test_manager.CreateNodeTestCase.test_create_node_validation_fails +ironic.tests.unit.conductor.test_manager.CreateNodeTestCase.test_create_node_validation_fails ... ok ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_key_proto -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_key_proto ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_max_size_without_backing_disks -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_max_size_without_backing_disks ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_kickstart_bios +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_kickstart_bios ... ok ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_all ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_all ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_nokey -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_nokey ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_short_key -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_short_key ... ok +ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_simple +ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_simple ... ok +ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_stop +ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_stop ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_ramdisk_pxe_conf_exists +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_ramdisk_pxe_conf_exists ... ok ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_empty ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_empty ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_teltronix -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_teltronix ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_multiple_controllers -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_multiple_controllers ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_all_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_all_steps ... ok ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_node_locked ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_node_locked ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_vertivgeist_pdu -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_vertivgeist_pdu ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_write_community -ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_write_community ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_multiple_max_and_sharing_same_disks -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_multiple_max_and_sharing_same_disks ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_ramdisk_pxe_conf_missing +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_ramdisk_pxe_conf_missing ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_disable_core_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_disable_core_steps ... ok ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_node_not_found ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_node_not_found ... ok -ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_clean_and_deploy_step_all_args -ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_clean_and_deploy_step_all_args ... ok -ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_deploy_and_clean_step_all_args -ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_deploy_and_clean_step_all_args ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_duplicate_template_and_user_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_duplicate_template_and_user_steps ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_adopt_failed_no_power_change +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_adopt_failed_no_power_change ... ok ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_node_trait_not_found ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_node_trait_not_found ... ok -ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_deploy_and_clean_step_priority_only -ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_deploy_and_clean_step_priority_only ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_nested_raid_10 -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_nested_raid_10 ... ok -ironic.tests.unit.drivers.test_base.DeployStepTestCase.test_get_and_execute_deploy_steps -ironic.tests.unit.drivers.test_base.DeployStepTestCase.test_get_and_execute_deploy_steps ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup ... ok -ironic.tests.unit.drivers.test_base.TestDeployInterface.test_warning_on_heartbeat -ironic.tests.unit.drivers.test_base.TestDeployInterface.test_warning_on_heartbeat ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_nested_raid_level -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_nested_raid_level ... ok -ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_default_interfaces -ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_default_interfaces ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_predefined_number_of_physical_disks -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_predefined_number_of_physical_disks ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_association_with_ports -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_association_with_ports ... ok -ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_agent_rescue -ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_agent_rescue ... ok -ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_cinder_storage -ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_cinder_storage ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_share_physical_disks -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_share_physical_disks ... ok -ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_noop_mgmt -ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_noop_mgmt ... ok -ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_shellinabox -ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_shellinabox ... ok -ironic.tests.unit.drivers.test_redfish.RedfishHardwareTestCase.test_default_interfaces -ironic.tests.unit.drivers.test_redfish.RedfishHardwareTestCase.test_default_interfaces ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_without_drives_conversion -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_without_drives_conversion ... ok -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_create -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_create ... ok -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_delete -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_delete ... ok -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_get -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_get ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_failure -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_failure ... ok -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_get_by_node_id -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_get_by_node_id ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_in_clean -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_in_clean ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_node_locked -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_node_locked ... ok -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_create -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_create ... ok -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_delete -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_delete ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_in_deploy -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_in_deploy ... ok -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_save -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_save ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_active_state_and_maintenance -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_active_state_and_maintenance ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_no_change -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_no_change ... ok -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_save -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_save ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_deleting_state -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_deleting_state ... ok -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_sync_node_setting_create_and_update -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_sync_node_setting_create_and_update ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_with_mix_realtime_controller_in_ehba_mode -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_with_mix_realtime_controller_in_ehba_mode ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_inspect_wait_state -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_inspect_wait_state ... ok -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_sync_node_setting_delete_nochange -ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_sync_node_setting_delete_nochange ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_list -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_list ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_with_mix_realtime_controller_in_raid_mode -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_with_mix_realtime_controller_in_raid_mode ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_load -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_load ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_refresh -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_refresh ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_get_logical_disks -ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_get_logical_disks ... ok -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_manageable_state -ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_manageable_state ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register ... ok -ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method -ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_hardware_interfaces -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_hardware_interfaces ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_duplicate_template_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_duplicate_template_steps ... ok ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector ... ok -ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_managers_fail -ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_managers_fail ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group_uppercased -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group_uppercased ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_bios +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_bios ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_error +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_error ... ok ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_duplicate ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_duplicate ... ok -ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_no_managers -ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_no_managers ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group_with_update -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group_with_update ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_allowed_in_maintenance +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_allowed_in_maintenance ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_steps ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_cleaning +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_cleaning ... ok ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_node_locked ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_node_locked ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_template_and_driver_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_template_and_driver_steps ... ok ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_node_power_on ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_node_power_on ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_update_existing_true -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_update_existing_true ... ok -ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_oem_not_found -ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_oem_not_found ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_template_and_user_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_template_and_user_steps ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_associated +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_associated ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes ... ok ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_type ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_type ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_with_invalid_group -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_with_invalid_group ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_save -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_save ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_user_and_driver_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_user_and_driver_steps ... ok ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_uuid ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_uuid ... ok -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_failed -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_failed ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_touch -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_touch ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_unregister -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_unregister ... ok -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_with_delete -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_with_delete ... ok -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target ... ok -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_unregister_all_hardware_interfaces -ironic.tests.unit.objects.test_conductor.TestConductorObject.test_unregister_all_hardware_interfaces ... ok -ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test__repr__includes_default_function_name_and_source_hash -ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test__repr__includes_default_function_name_and_source_hash ... ok -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_duplicate -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_duplicate ... ok -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_without_delete -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_without_delete ... ok -ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_default_as_function -ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_default_as_function ... ok -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_locked -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_locked ... ok -ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_function -ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_function ... ok -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_without_nonroot -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_without_nonroot ... ok -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_not_found -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_not_found ... ok -ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_function_invalid_type -ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_function_invalid_type ... ok -ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_invalid_type -ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_invalid_type ... ok -ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_string -ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_string ... ok -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_without_root -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_create_configuration_without_root ... ok -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_power_on -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_power_on ... ok -ironic.tests.unit.objects.test_objects.TestMisc.test_max_version -ironic.tests.unit.objects.test_objects.TestMisc.test_max_version ... ok -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_not_found -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_not_found ... ok -ironic.tests.unit.objects.test_objects.TestMisc.test_max_version_one -ironic.tests.unit.objects.test_objects.TestMisc.test_max_version_one ... ok -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_delete_configuration_failed -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_delete_configuration_failed ... ok -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_uuid -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_uuid ... ok -ironic.tests.unit.objects.test_objects.TestMisc.test_max_version_two -ironic.tests.unit.objects.test_objects.TestMisc.test_max_version_two ... ok -ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object -ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object ... ok -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_delete_configuration_success -ironic.tests.unit.drivers.modules.ibmc.test_raid.IbmcRAIDTestCase.test_sync_delete_configuration_success ... ok -ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object_map_version_bad -ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object_map_version_bad ... ok -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_volume_type -ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_volume_type ... ok -ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object_old -ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object_old ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_as_dict -ironic.tests.unit.objects.test_objects.TestObject.test_as_dict ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_override_driver_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_override_driver_steps ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported ... ok +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_broken_driver +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_broken_driver ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_override_template_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_override_template_steps ... ok +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification_known_notify_exc +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification_known_notify_exc ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_rescue +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_rescue ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_skip_missing +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_skip_missing ... ok +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification_known_payload_exc +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification_known_payload_exc ... ok +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_console_notification +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_console_notification ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_template_and_driver_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_template_and_driver_steps ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_rescue_bios +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_rescue_bios ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_console_disable_fail +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_console_disable_fail ... ok +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_console_notification_error_status +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_console_notification_error_status ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_user_and_driver_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_user_and_driver_steps ... ok +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_power_set_notification +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_power_set_notification ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_user_and_template_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_user_and_template_steps ... ok +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_power_state_corrected_notification +ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_power_state_corrected_notification ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_not_called +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_not_called ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deploy_steps_unsorted +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deploy_steps_unsorted ... ok ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_instance_deploy_failure ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_instance_deploy_failure ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_as_dict_with_nested_object -ironic.tests.unit.objects.test_objects.TestObject.test_as_dict_with_nested_object ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance_boot_from_volume -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance_boot_from_volume ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_as_dict_with_nested_object_list -ironic.tests.unit.objects.test_objects.TestObject.test_as_dict_with_nested_object_list ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_console_enabled +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_console_enabled ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_bm +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_bm ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_steps ... ok ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_invalid_parameter_value ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_invalid_parameter_value ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_assign_value_without_DictCompat -ironic.tests.unit.objects.test_objects.TestObject.test_assign_value_without_DictCompat ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_base_attributes -ironic.tests.unit.objects.test_objects.TestObject.test_base_attributes ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_changed_1 -ironic.tests.unit.objects.test_objects.TestObject.test_changed_1 ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_steps_only_enabled +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_steps_only_enabled ... ok ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_ok ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_ok ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_changed_2 -ironic.tests.unit.objects.test_objects.TestObject.test_changed_2 ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_changed_3 -ironic.tests.unit.objects.test_objects.TestObject.test_changed_3 ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_invalid_provision_state +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_invalid_provision_state ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_templates +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_templates ... ok ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_skip_missing ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_skip_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance_boot_from_volume_bios -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance_boot_from_volume_bios ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_changed_4 -ironic.tests.unit.objects.test_objects.TestObject.test_changed_4 ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_templates_no_traits +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_templates_no_traits ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_changes_in_primitive -ironic.tests.unit.objects.test_objects.TestObject.test_changes_in_primitive ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_contains -ironic.tests.unit.objects.test_objects.TestObject.test_contains ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_new -ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_new ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_steps_from_deployment_templates +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_steps_from_deployment_templates ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_power_off +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_power_off ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_only_enabled ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_only_enabled ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_bios -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_bios ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_old -ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_old ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_old_keep -ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_old_keep ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_no_override ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_no_override ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_boot_from_volume -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_boot_from_volume ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_same -ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_same ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_dehydration -ironic.tests.unit.objects.test_objects.TestObject.test_dehydration ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_disable_core +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_disable_core ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_override_disable ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_override_disable ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_cleaning -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_cleaning ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db -ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db_downgrade -ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db_downgrade ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_disable_non_core +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_disable_non_core ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_protected +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_protected ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_override_fail ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_override_fail ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db_pinned -ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db_pinned ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_deploying -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_deploying ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_uefi +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_uefi ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_duplicates +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_duplicates ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_override_ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_override_ok ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_get -ironic.tests.unit.objects.test_objects.TestObject.test_get ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_get_changes -ironic.tests.unit.objects.test_objects.TestObject.test_get_changes ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_rescuing -ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_rescuing ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_get_changes_pinned -ironic.tests.unit.objects.test_objects.TestObject.test_get_changes_pinned ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_missing_deploy_kernel +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_missing_deploy_kernel ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_get_steps_exception +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_get_steps_exception ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_protected_provision_state_available +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_protected_provision_state_available ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_unsorted ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_unsorted ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_get_changes_pinned_2versions -ironic.tests.unit.objects.test_objects.TestObject.test_get_changes_pinned_2versions ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_no_pin -ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_no_pin ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_deploy_info -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_deploy_info ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_missing_deploy_ramdisk +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_missing_deploy_ramdisk ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_invalid_arg +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_invalid_arg ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned -ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned_bad -ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned_bad ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_no_port +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_no_port ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_missing_required_arg +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_missing_required_arg ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_reserved +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_reserved ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_disable_ramdisk ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_disable_ramdisk ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_default_mode -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_default_mode ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned_no_myobj -ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned_no_myobj ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_no_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_no_steps ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_good +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_good ... ok +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_with_allocation +ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_with_allocation ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_get_steps_exception ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_get_steps_exception ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_get_updates -ironic.tests.unit.objects.test_objects.TestObject.test_get_updates ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_invalid_params -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_invalid_params ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_hydration -ironic.tests.unit.objects.test_objects.TestObject.test_hydration ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_not_supported +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_not_supported ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_good_whole_disk_image +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_good_whole_disk_image ... ok +ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target +ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_invalid_arg ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_invalid_arg ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_rescue_mode -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_rescue_mode ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_hydration_bad_ns -ironic.tests.unit.objects.test_objects.TestObject.test_hydration_bad_ns ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_hydration_type_error -ironic.tests.unit.objects.test_objects.TestObject.test_hydration_type_error ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_override_core +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_override_core ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_inspection +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_inspection ... ok +ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_already_destroyed +ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_already_destroyed ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_missing_required_arg ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_missing_required_arg ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_hrefs_http_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_hrefs_http_image ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_load -ironic.tests.unit.objects.test_objects.TestObject.test_load ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_load_in_base -ironic.tests.unit.objects.test_objects.TestObject.test_load_in_base ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_loaded_in_primitive -ironic.tests.unit.objects.test_objects.TestObject.test_loaded_in_primitive ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_obj_attr_is_set -ironic.tests.unit.objects.test_objects.TestObject.test_obj_attr_is_set ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_skip_missing +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_skip_missing ... ok +ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_gone +ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_gone ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_no_steps ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_no_steps ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_hrefs_https_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_hrefs_https_image ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_obj_constructor -ironic.tests.unit.objects.test_objects.TestObject.test_obj_constructor ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_obj_fields -ironic.tests.unit.objects.test_objects.TestObject.test_obj_fields ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_object_inheritance -ironic.tests.unit.objects.test_objects.TestObject.test_object_inheritance ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_inspection_no_inspection_ramdisk +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_inspection_no_inspection_ramdisk ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test_set_node_deployment_steps +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test_set_node_deployment_steps ... ok +ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_locked +ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_locked ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_not_supported ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_not_supported ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_instance_image_info -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_instance_image_info ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_object_property -ironic.tests.unit.objects.test_objects.TestObject.test_object_property ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_kickstart_fail_http_url_not_set +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_kickstart_fail_http_url_not_set ... ok +ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_power_on +ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_power_on ... ok +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test_set_node_deployment_steps_skip_missing +ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test_set_node_deployment_steps_skip_missing ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_requires_ramdisk ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_requires_ramdisk ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_object_property_type_error -ironic.tests.unit.objects.test_objects.TestObject.test_object_property_type_error ... ok +ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_get_indicator_state +ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_get_indicator_state ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_kickstart_missing_stage2_id +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_kickstart_missing_stage2_id ... ok +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps ... ok +ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_get_supported_indicators +ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_get_supported_indicators ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test_set_node_cleaning_steps_automated ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test_set_node_cleaning_steps_automated ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_clean_up_instance -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_clean_up_instance ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_orphaned_object -ironic.tests.unit.objects.test_objects.TestObject.test_orphaned_object ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_refresh_object -ironic.tests.unit.objects.test_objects.TestObject.test_refresh_object ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_no_image_source_for_local_boot +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_no_image_source_for_local_boot ... ok +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_only_enabled +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_only_enabled ... ok +ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_set_indicator_state +ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_set_indicator_state ... ok ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test_set_node_cleaning_steps_manual ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test_set_node_cleaning_steps_manual ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_static_result -ironic.tests.unit.objects.test_objects.TestObject.test_static_result ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_clean_up_ramdisk -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_clean_up_ramdisk ... ok +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_fail +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_fail ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_non_local +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_non_local ... ok +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_error_state +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_error_state ... ok +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_no_state_change +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_no_state_change ... ok +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_off +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_off ... ok +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_only_once +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_only_once ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_skip_check_write_image_false +ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_skip_check_write_image_false ... ok +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_resource_released +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_resource_released ... ok +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_ok +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_ok ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes +ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes ... ok +ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_maintenance +ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_maintenance ... ok +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_stable_to_stable +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_stable_to_stable ... ok +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_unsorted +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_unsorted ... ok +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_stable_to_unstable +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_stable_to_unstable ... ok +ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_not_retry_with_token +ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_not_retry_with_token ... ok +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_unstable_to_stable +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_unstable_to_stable ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_alive +ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_alive ... ok +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_unstable_to_unstable +ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_unstable_to_unstable ... ok +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test_execute_verify_step +ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test_execute_verify_step ... ok +ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_recent_power_change +ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_recent_power_change ... ok ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_supports_version -ironic.tests.unit.objects.test_objects.TestObject.test_supports_version ... ok +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track ... ok ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error_cancelled ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error_cancelled ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_unknown_objtype -ironic.tests.unit.objects.test_objects.TestObject.test_unknown_objtype ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_boot_ramdisk -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_boot_ramdisk ... ok +ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_retry +ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_retry ... ok ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error_exists ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error_exists ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_updates -ironic.tests.unit.objects.test_objects.TestObject.test_updates ... ok +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_config_false +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_config_false ... ok ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error_no_error ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error_no_error ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_local_or_whole_disk_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_local_or_whole_disk_image ... ok -ironic.tests.unit.objects.test_objects.TestObject.test_with_alternate_context -ironic.tests.unit.objects.test_objects.TestObject.test_with_alternate_context ... ok -ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__calculate_target_state -ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__calculate_target_state ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_create -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_create ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_partition_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_partition_image ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_destroy -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_destroy ... ok -ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_db_not_in_sync -ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_db_not_in_sync ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_glance_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_glance_image ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get_by_id -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get_by_id ... ok -ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_different_state -ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_different_state ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get_by_uuid -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get_by_uuid ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_glance_image_cleaning -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_glance_image_cleaning ... ok -ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_failed_getting_state_notify -ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_failed_getting_state_notify ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_by_node_id -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_by_node_id ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_by_volume_id -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_by_volume_id ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_middle_of_clean_step -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_middle_of_clean_step ... ok -ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_same_state -ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_same_state ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_none -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_none ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_payload_schemas -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_payload_schemas ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_not_a_glance_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_not_a_glance_image ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_refresh -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_refresh ... ok -ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_already_being_processed -ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_already_being_processed ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_save -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_save ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_not_a_glance_image_cleaning -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_not_a_glance_image_cleaning ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_cleaning +ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_cleaning ... ok +ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_wrong_state +ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_wrong_state ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_abort_on_conductor_take_over_cleaning +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_abort_on_conductor_take_over_cleaning ... ok +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_disabled_in_driver_info +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_disabled_in_driver_info ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_abort_on_conductor_take_over_deploying +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_abort_on_conductor_take_over_deploying ... ok +ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_timeouts +ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_timeouts ... ok +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_disabled_in_driver_info_string +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_disabled_in_driver_info_string ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_maintenance +ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_maintenance ... ok +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device ... ok +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_error_blocks +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_error_blocks ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_cleanfail +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_cleanfail ... ok +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device_current_none +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device_current_none ... ok +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_no_heartbeat +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_no_heartbeat ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_cleanwait +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_cleanwait ... ok +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device_fail +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device_fail ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_release_exceptions_skipping +ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_release_exceptions_skipping ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_manual +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_manual ... ok +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_power_off_false +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_power_off_false ... ok +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device_primary_none +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_boot_device_primary_none ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_no_fail +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_no_fail ... ok +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_properties +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_properties ... ok +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_powered_after_heartbeat +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_powered_after_heartbeat ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_no_teardown +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_no_teardown ... ok +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_supported_boot_devices +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_get_supported_boot_devices ... ok +ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_release_node_not_locked +ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_release_node_not_locked ... ok +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_via_driver_info +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_via_driver_info ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_tear_down_error +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_tear_down_error ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_set_boot_device +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_set_boot_device ... ok +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_correct_power_state_on_upgrade_lock +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_correct_power_state_on_upgrade_lock ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_cleanwait_timeout +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_cleanwait_timeout ... ok +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_via_driver_info_string +ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_via_driver_info_string ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_get_power_state_error +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_get_power_state_error ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_cleanwait_timeout_handler_call +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_cleanwait_timeout_handler_call ... ok +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_set_boot_device_fail +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_set_boot_device_fail ... ok +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_exclude_current_conductor +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_exclude_current_conductor ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_get_power_state_fail +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_get_power_state_fail ... ok +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_validate +ironic.tests.unit.drivers.modules.xclarity.test_management.XClarityManagementDriverTestCase.test_validate ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_clean +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_clean ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_maintenance_on_upgrade_lock +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_maintenance_on_upgrade_lock ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout_known_exc +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout_known_exc ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_get_power_state +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_get_power_state ... ok +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_deploy +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_deploy ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout_unknown_exc +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout_unknown_exc ... ok +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_get_power_state_fail +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_get_power_state_fail ... ok +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_operation +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_operation ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded2 +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded2 ... ok +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_get_properties +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_get_properties ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_power_state_error_handler_no_worker +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_power_state_error_handler_no_worker ... ok +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_false_no_need +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_false_no_need ... ok +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_reboot +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_reboot ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_power_state_error_handler_other_error +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_power_state_error_handler_other_error ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded_notify +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded_notify ... ok +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_false_power_on +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_false_power_on ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_reboot_timeout +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_reboot_timeout ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_provision_error_handler_no_worker +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_provision_error_handler_no_worker ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_no_power_sync_support +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_no_power_sync_support ... ok +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_true +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_true ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_set_power +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_set_power ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_provision_error_handler_other_error +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_provision_error_handler_other_error ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_power_state_sync_max_retries_gps_exception +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_power_state_sync_max_retries_gps_exception ... ok +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_with_smart_nic_port +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_with_smart_nic_port ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_set_power_fail +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_set_power_fail ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_retry_then_success +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_retry_then_success ... ok +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_remove_node_rescue_password_save_false +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_remove_node_rescue_password_save_false ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_bad_state +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_bad_state ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_set_power_timeout +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_set_power_timeout ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_no_sync +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_no_sync ... ok +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_remove_node_rescue_password_save_true +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_remove_node_rescue_password_save_true ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_ironic_exc +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_ironic_exc ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_validate +ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_validate ... ok +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_restore_power_state_if_needed_false +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_restore_power_state_if_needed_false ... ok +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_other_exc +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_other_exc ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_no_sync_notify +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_no_sync_notify ... ok +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_description_invalid +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_description_invalid ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_set_failed_state_false +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_set_failed_state_false ... ok +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_restore_power_state_if_needed_true +ironic.tests.unit.conductor.test_utils.MiscTestCase.test_restore_power_state_if_needed_true ... ok +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_empty_dict +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_empty_dict/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " + ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_sync +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_sync ... ok +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_missing_description +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_missing_description ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_cleaning_error_handler_no_worker +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_cleaning_error_handler_no_worker ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_utils.NodeGetBootModeTestCase.test_node_get_boot_mode_unsupported +ironic.tests.unit.conductor.test_utils.NodeGetBootModeTestCase.test_node_get_boot_mode_unsupported ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_not_dict +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_not_dict ... ok +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_sync_failed +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_sync_failed ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_cleaning_error_handler_other_error +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_cleaning_error_handler_other_error ... ok +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_required_invalid +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_required_invalid ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_utils.NodeGetBootModeTestCase.test_node_get_boot_mode_valid +ironic.tests.unit.conductor.test_utils.NodeGetBootModeTestCase.test_node_get_boot_mode_valid ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_unknown_key +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_unknown_key ... ok +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_not_set +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_not_set ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_deploying_error_handler_no_worker +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_deploying_error_handler_no_worker ... ok +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_not_dict +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_not_dict ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_adopting +ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_adopting ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_unchanged +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_unchanged ... ok +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_all_args +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_all_args ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_deploying_error_handler_other_error +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_deploying_error_handler_other_error ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_abortable +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_abortable ... ok +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_unchanged_for_fake_node +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_unchanged_for_fake_node ... ok +ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_always +ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_always ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_rescue_error_handler_no_worker +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_rescue_error_handler_no_worker ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_argsinfo +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_argsinfo ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_validate_fail +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_validate_fail ... ok +ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_default +ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_default ... ok +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_priority +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_priority ... ok +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_rescue_error_handler_other_error +ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_rescue_error_handler_other_error ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_priority_only +ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_priority_only ... ok +ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__calculate_target_state +ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__calculate_target_state ... ok +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_vendor_detection +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_vendor_detection ... ok +ironic.tests.unit.drivers.test_base.CleanStepTestCase.test_get_and_execute_clean_steps +ironic.tests.unit.drivers.test_base.CleanStepTestCase.test_get_and_execute_clean_steps ... ok +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +/usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details + warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_wrong_provision_state_on_upgrade_lock +ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_wrong_provision_state_on_upgrade_lock ... ok +ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_db_not_in_sync +ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_db_not_in_sync ... ok +ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_all_args +ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_all_args ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_already_mapped +ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_already_mapped ... ok +ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_bad_argsinfo +ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_bad_argsinfo ... ok +ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_different_state +ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_different_state ... ok +ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_bad_priority +ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_bad_priority ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_good +ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_good ... ok +ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_priority_only +ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_priority_only ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_no_free_worker +ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_no_free_worker ... ok +ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_check_func_references +ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_check_func_references ... ok +ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_never +ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_never ... ok +ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_failed_getting_state_notify +ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_failed_getting_state_notify ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_node_locked +ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_node_locked ... ok +ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_exclusive_task_metadata +ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_exclusive_task_metadata ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_not_mapped +ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_not_mapped ... ok +ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_non_existent_device +ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_non_existent_device ... ok +ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_ironicexception +ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_ironicexception ... ok +ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_same_state +ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_same_state ... ok +ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_noexception +ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_noexception ... ok +ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_worker_limit +ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_worker_limit ... ok +ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_valid +ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_valid ... ok +ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_nonironicexception +ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_nonironicexception ... ok +ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_already_being_processed +ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_already_being_processed ... ok +ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_shared_task_metadata +ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_shared_task_metadata ... ok +ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_adopting +ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_adopting ... ok +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration ... ok +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration_delete_existing +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration_delete_existing ... ok +ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_non_existent_mode +ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_non_existent_mode ... ok +ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_from_all_nodes_one_pass +ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_from_all_nodes_one_pass ... ok +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration_invalid +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration_invalid ... ok +ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_valid +ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_valid ... ok +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_get_logical_disk_properties +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_get_logical_disk_properties ... ok +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate ... ok +ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_no_change +ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_no_change ... ok +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate_no_target_raid_config +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate_no_target_raid_config ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_failed_getting_state ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_failed_getting_state ... ok -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_save_after_refresh -ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_save_after_refresh ... ok -GET: / {} -GOT:Response: 400 Bad Request -Content-Type: application/json -Openstack-Request-Id: req-82adb5e7-beef-421e-bec0-5b5ee8c6dcc3 -{"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}"} -GET: / {} -GOT:Response: 500 Internal Server Error -Content-Type: application/json -Openstack-Request-Id: req-5c3befcc-bc41-458c-b014-2aa10f9980a7 -{"error_message": "{\"faultcode\":\"Server\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} -GET: / {} -GOT:Response: 500 Internal Server Error -Content-Type: application/json -Openstack-Request-Id: req-751fb5d0-95b1-4fdb-9474-0fdddc48c912 -{"error_message": "{\"faultcode\":\"Server\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} -GET: / {} -GOT:Response: 500 Internal Server Error -Content-Type: application/json -Openstack-Request-Id: req-7e0f3033-5b24-4fe5-b177-651f31db3fba -{"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 \\\"/build/reproducible-path/ironic-21.1.0/ironic/api/method.py\\\", line 42, in callfunction\\n result = f(self, *args, **kwargs)\\n ^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n File \\\"/build/reproducible-path/ironic-21.1.0/ironic/api/controllers/root.py\\\", line 43, in index\\n return root()\\n ^^^^^^\\n\\n File \\\"\\\", line 3, in root\\n\\n File \\\"/usr/lib/python3.11/unittest/mock.py\\\", line 1118, in __call__\\n return self._mock_call(*args, **kwargs)\\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n File \\\"/usr/lib/python3.11/unittest/mock.py\\\", line 1122, in _mock_call\\n return self._execute_mock_call(*args, **kwargs)\\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n File \\\"/usr/lib/python3.11/unittest/mock.py\\\", line 1177, 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\"}"} -GET: / {} -GOT:Response: 500 Internal Server Error -Content-Type: application/json -Openstack-Request-Id: req-6b5cf99d-66a5-4082-8fa6-2bb1630a67e7 -{"error_message": "{\"faultcode\":\"Server\",\"faultstring\":\"Remote error: TestException Test exception message.\\n['\",\"debuginfo\":null}"} -GET: / {} -GOT:Response: 500 Internal Server Error -Content-Type: application/json -Openstack-Request-Id: req-04f5ef4d-e607-4754-ac90-9fbb32ec2303 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Error message without traceback \\n but \\n multiline\", \"debuginfo\": null}"} -GET: / {} -GOT:Response: 500 Internal Server Error -Content-Type: application/json -Openstack-Request-Id: req-ea4e8ee8-0db8-40ad-9221-bd3d017e971e -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Error message without traceback \\n but \\n multiline\", \"debuginfo\": null}"} -GET: / {} -GOT:Response: 500 Internal Server Error -Content-Type: application/json -Openstack-Request-Id: req-34681bad-a530-47a4-9458-ee240a54f1d8 -{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Error message without traceback \\n but \\n multiline\", \"debuginfo\": \"Traceback (most recent call last):\\n\\n File \\\"/build/reproducible-path/ironic-21.1.0/ironic/api/method.py\\\", line 42, in callfunction\\n result = f(self, *args, **kwargs)\\n ^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n File \\\"/build/reproducible-path/ironic-21.1.0/ironic/api/controllers/root.py\\\", line 43, in index\\n return root()\\n ^^^^^^\\n\\n File \\\"\\\", line 3, in root\\n\\n File \\\"/usr/lib/python3.11/unittest/mock.py\\\", line 1118, in __call__\\n return self._mock_call(*args, **kwargs)\\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n File \\\"/usr/lib/python3.11/unittest/mock.py\\\", line 1122, in _mock_call\\n return self._execute_mock_call(*args, **kwargs)\\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n File \\\"/usr/lib/python3.11/unittest/mock.py\\\", line 1177, in _execute_mock_call\\n raise effect\\n\\nException: Error message without traceback \\n but \\n multiline\\n\"}"} -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_rescue_glance_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_rescue_glance_image ... ok +ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_store_existing +ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_store_existing ... ok +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate_raid_config +ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate_raid_config ... ok +ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config +ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config ... ok +ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_store_new +ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_store_new ... ok +ironic.tests.unit.drivers.test_base.TestDeployInterface.test_warning_on_heartbeat +ironic.tests.unit.drivers.test_base.TestDeployInterface.test_warning_on_heartbeat ... ok +ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_take_over +ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_take_over ... ok +ironic.tests.unit.drivers.test_ibmc.IBMCHardwareTestCase.test_default_interfaces +ironic.tests.unit.drivers.test_ibmc.IBMCHardwareTestCase.test_default_interfaces ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_failed_getting_state_notify ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_failed_getting_state_notify ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_rescue_not_a_glance_image -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_rescue_not_a_glance_image ... ok +ironic.tests.unit.objects.test_fields.TestNotificationLevelField.test_coerce_bad_value +ironic.tests.unit.objects.test_fields.TestNotificationLevelField.test_coerce_bad_value ... ok +ironic.tests.unit.objects.test_fields.TestNotificationLevelField.test_coerce_good_value +ironic.tests.unit.objects.test_fields.TestNotificationLevelField.test_coerce_good_value ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_in_same_state ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_in_same_state ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate ... ok +ironic.tests.unit.objects.test_fields.TestNotificationStatusField.test_coerce_bad_value +ironic.tests.unit.objects.test_fields.TestNotificationStatusField.test_coerce_bad_value ... ok +ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config_two_pass +ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config_two_pass ... ok +ironic.tests.unit.objects.test_fields.TestNotificationStatusField.test_coerce_good_value +ironic.tests.unit.objects.test_fields.TestNotificationStatusField.test_coerce_good_value ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_in_same_state_db_not_in_sync ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_in_same_state_db_not_in_sync ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_bios -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_bios ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_inspection -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_inspection ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test__validate_property_values_success +ironic.tests.unit.objects.test_node.TestNodeObject.test__validate_property_values_success ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_insecure +ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_insecure ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_invalid_state ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_invalid_state ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_inspection_missing -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_inspection_missing ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_glance -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_glance ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure +ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_configdrive_as_dict +ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_configdrive_as_dict ... ok +ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config_with_days +ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config_with_days ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_with_configdrive +ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_with_configdrive ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_invalid_state_notify ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_invalid_state_notify ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_webserver -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_webserver ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_with_configdrive_as_dict +ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_with_configdrive_as_dict ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_with_traits +ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_with_traits ... ok +ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_pruning_no_work +ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_pruning_no_work ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_create +ironic.tests.unit.objects.test_node.TestNodeObject.test_create ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off_pregenerated_token ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off_pregenerated_token ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_webserver_exc -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_webserver_exc ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_create_with_invalid_properties +ironic.tests.unit.objects.test_node.TestNodeObject.test_create_with_invalid_properties ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_create_with_traits +ironic.tests.unit.objects.test_node.TestNodeObject.test_create_with_traits ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off_storage_detach ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off_storage_detach ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_rescue -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_rescue ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_bad_id_and_uuid +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_bad_id_and_uuid ... ok +ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_pruning_not_other_conductor +ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_pruning_not_other_conductor ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_id +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_id ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_on ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_on ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_rescue_no_rescue_ramdisk -ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_rescue_no_rescue_ramdisk ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_instance_not_found +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_instance_not_found ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_instance_uuid +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_instance_uuid ... ok /usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b"" is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details warnings.warn("%s is an invalid UUID. Using UUIDFields " /usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details @@ -52318,1424 +49320,5065 @@ warnings.warn("%s is an invalid UUID. Using UUIDFields " /usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details warnings.warn("%s is an invalid UUID. Using UUIDFields " -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_get_properties -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_get_properties ... ok /usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details warnings.warn("%s is an invalid UUID. Using UUIDFields " /usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details warnings.warn("%s is an invalid UUID. Using UUIDFields " +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_name +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_name ... ok /usr/lib/python3/dist-packages/oslo_versionedobjects/fields.py:367: FutureWarning: b'""' is an invalid UUID. Using UUIDFields with invalid UUIDs is no longer supported, and will be removed in a future release. Please update your code to input valid UUIDs or accept ValueErrors for invalid UUIDs. See https://docs.openstack.org/oslo.versionedobjects/latest/reference/fields.html#oslo_versionedobjects.fields.UUIDField for further details warnings.warn("%s is an invalid UUID. Using UUIDFields " ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_on_notify ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_on_notify ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_capabilities_exist_ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_capabilities_exist_ok ... ok +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test__check_inspect_wait_timeouts +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test__check_inspect_wait_timeouts ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_name_node_not_found +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_name_node_not_found ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_port_addresses +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_port_addresses ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_on_storage_attach ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_on_storage_attach ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_capabilities_ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_capabilities_ok ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_uuid +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_uuid ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_reboot ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_reboot ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_interface +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_interface ... ok +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_ok +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_ok ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncMysql.test_models_sync +ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncMysql.test_models_sync ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_interface_overriden +ironic.tests.unit.objects.test_node.TestNodeObject.test_get_interface_overriden ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_reboot_no_timeout ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_reboot_no_timeout ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok_local_gb_zero -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok_local_gb_zero ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_list +ironic.tests.unit.objects.test_node.TestNodeObject.test_list ... ok +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_power_validate_fail +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_power_validate_fail ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncPostgres.test_models_sync +ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncPostgres.test_models_sync ... skipped "Backend 'postgresql+psycopg2' is unavailable: Could not connect" +ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields +ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_reboot_storage_attach ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_reboot_storage_attach ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok_power_off -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok_power_off ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_clear_node_reservations_for_conductor +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_clear_node_reservations_for_conductor ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields_empty_trait_present +ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields_empty_trait_present ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields_traits +ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields_traits ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_set_power_failure ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_set_power_failure ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_ok_gen10 -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_ok_gen10 ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_ok_gen8 -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_ok_gen8 ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_clear_node_target_power_state +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_clear_node_target_power_state ... ok +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_raises_error +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_raises_error ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_payload_schemas +ironic.tests.unit.objects.test_node.TestNodeObject.test_payload_schemas ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_refresh +ironic.tests.unit.objects.test_node.TestNodeObject.test_refresh ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_many_host_many_ht +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_many_host_many_ht ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_release +ironic.tests.unit.objects.test_node.TestNodeObject.test_release ... ok ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_set_power_failure_notify ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_set_power_failure_notify ... ok -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_validate -ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_validate ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_many_host_one_ht +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_many_host_one_ht ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_many_ht +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_many_ht ... ok +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_return_inspect_wait +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_return_inspect_wait ... ok +ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_power_soft_reboot +ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_power_soft_reboot ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_no_ht +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_no_ht ... ok +ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_power_soft_reboot_timeout +ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_power_soft_reboot_timeout ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_one_ht +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_one_ht ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_one_ht_groups +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_one_ht_groups ... ok +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_return_inspecting +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_return_inspecting ... ok +ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off +ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_release_node_not_found +ironic.tests.unit.objects.test_node.TestNodeObject.test_release_node_not_found ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_with_old_conductor +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_with_old_conductor ... ok +ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off_storage_detach +ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off_storage_detach ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_reserve +ironic.tests.unit.objects.test_node.TestNodeObject.test_reserve ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_conductor +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_conductor ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_reserve_node_not_found +ironic.tests.unit.objects.test_node.TestNodeObject.test_reserve_node_not_found ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_conductor_not_found +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_conductor_not_found ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_save +ironic.tests.unit.objects.test_node.TestNodeObject.test_save ... ok +ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off_timeout +ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off_timeout ... ok +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_return_other_state +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_return_other_state ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_inactive_conductor_ignore_online +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_inactive_conductor_ignore_online ... ok ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_after_refresh +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_after_refresh ... ok ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_empty_instance_traits ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_empty_instance_traits ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_create_raid_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_create_raid_cleaning ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_inactive_conductor_with_online_true +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_inactive_conductor_with_online_true ... ok ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_invalid_trait_type ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_invalid_trait_type ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_truncated +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_truncated ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_offline_conductors +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_offline_conductors ... ok ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_invalid_type ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_invalid_type ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_create_raid_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_create_raid_deploying ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_updated_at_field +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_updated_at_field ... ok ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_missing ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_missing ... ok +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_unexpected_error +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_unexpected_error ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_online_conductors +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_online_conductors ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group ... ok ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_no_instance_traits ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_no_instance_traits ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_list_hardware_type_interfaces +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_list_hardware_type_interfaces ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group_fail +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group_fail ... ok +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_validate_fail +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_validate_fail ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_create_1 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_create_1 ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group_uppercase +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group_uppercase ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_existing_fails +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_existing_fails ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_traits +ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_traits ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_hardware_interfaces +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_hardware_interfaces ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_create_2 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_create_2 ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_touch_provisioning +ironic.tests.unit.objects.test_node.TestNodeObject.test_touch_provisioning ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_hardware_interfaces_duplicate +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_hardware_interfaces_duplicate ... ok +ironic.tests.unit.objects.test_node.TestNodeObject.test_update_with_invalid_properties +ironic.tests.unit.objects.test_node.TestNodeObject.test_update_with_invalid_properties ... ok +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_worker_pool_full +ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_worker_pool_full ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_1 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_1 ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_override +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_override ... ok +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_corrected_power_state_payload +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_corrected_power_state_payload ... ok +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_crud_payload +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_crud_payload ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_2 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_2 ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor ... ok +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor_deadlock +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor_deadlock ... ok +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload_no_traits +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload_no_traits ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_add_1 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_add_1 ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_invalid_state +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_invalid_state ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor_not_found +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor_not_found ... ok +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload_traits_is_none +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload_traits_is_none ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_offline_conductor +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_offline_conductor ... ok +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_set_power_state_payload +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_set_power_state_payload ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_add_2 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_add_2 ... ok +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_set_provision_state_payload +ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_set_provision_state_payload ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_unregister_conductor +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_unregister_conductor ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_1 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_1 ... ok +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_create +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_create ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_maintenance +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_maintenance ... ok +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_unregister_conductor_hardware_interfaces +ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_unregister_conductor_hardware_interfaces ... ok +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_destroy +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_destroy ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_2 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_2 ... ok +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_destroy_node_history_by_uuid +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_destroy_node_history_by_uuid ... ok +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get ... ok +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_id +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_id ... ok +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get_by_id +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get_by_id ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_3 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_3 ... ok +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_id_not_found +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_id_not_found ... ok +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get_by_uuid +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get_by_uuid ... ok +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_1 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_1 ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_partial_ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_partial_ok ... ok +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_node_id +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_node_id ... ok +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list_by_node_id +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list_by_node_id ... ok +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_node_id_empty +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_node_id_empty ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_2 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_2 ... ok +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list_none +ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list_none ... ok +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_uuid +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_uuid ... ok +ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object +ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object ... ok +ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object_map_version_bad +ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object_map_version_bad ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_3 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_3 ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_power_validate_fail +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_power_validate_fail ... ok +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_uuid_not_found +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_uuid_not_found ... ok +ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object_old +ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object_old ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_as_dict +ironic.tests.unit.objects.test_objects.TestObject.test_as_dict ... ok +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_node_history_list +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_node_history_list ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_1 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_1 ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_as_dict_with_nested_object +ironic.tests.unit.objects.test_objects.TestObject.test_as_dict_with_nested_object ... ok +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_node_history_list_sorted +ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_node_history_list_sorted ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_as_dict_with_nested_object_list +ironic.tests.unit.objects.test_objects.TestObject.test_as_dict_with_nested_object_list ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_assign_value_without_DictCompat +ironic.tests.unit.objects.test_objects.TestObject.test_assign_value_without_DictCompat ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_2 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_2 ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_address +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_address ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_base_attributes +ironic.tests.unit.objects.test_objects.TestObject.test_base_attributes ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_changed_1 +ironic.tests.unit.objects.test_objects.TestObject.test_changed_1 ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_name +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_name ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_3 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_3 ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_changed_2 +ironic.tests.unit.objects.test_objects.TestObject.test_changed_2 ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_uuid +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_uuid ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_changed_3 +ironic.tests.unit.objects.test_objects.TestObject.test_changed_3 ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_no_physnet_update_1 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_no_physnet_update_1 ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_changed_4 +ironic.tests.unit.objects.test_objects.TestObject.test_changed_4 ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_no_mode +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_no_mode ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_changes_in_primitive +ironic.tests.unit.objects.test_objects.TestObject.test_changes_in_primitive ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_no_physnet_update_2 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_no_physnet_update_2 ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_contains +ironic.tests.unit.objects.test_objects.TestObject.test_contains ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_done +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_done ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_new +ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_new ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_not_empty +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_not_empty ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_1 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_1 ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_old +ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_old ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_that_does_not_exist +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_that_does_not_exist ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_old_keep +ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_old_keep ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_2 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_2 ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_same +ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_same ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_uuid +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_uuid ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_dehydration +ironic.tests.unit.objects.test_objects.TestObject.test_dehydration ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_address +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_address ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_3 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_3 ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db +ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_error +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_error ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_address_that_does_not_exist +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_address_that_does_not_exist ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db_downgrade +ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db_downgrade ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_create_1 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_create_1 ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_id +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_id ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db_pinned +ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db_pinned ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_get +ironic.tests.unit.objects.test_objects.TestObject.test_get ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_id_that_does_not_exist +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_id_that_does_not_exist ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_create_2 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_create_2 ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_get_changes +ironic.tests.unit.objects.test_objects.TestObject.test_get_changes ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_name +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_name ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_waiting +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_waiting ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_get_changes_pinned +ironic.tests.unit.objects.test_objects.TestObject.test_get_changes_pinned ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_update_1 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_update_1 ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_name_that_does_not_exist +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_name_that_does_not_exist ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_get_changes_pinned_2versions +ironic.tests.unit.objects.test_objects.TestObject.test_get_changes_pinned_2versions ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_uuid +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_uuid ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_no_pin +ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_no_pin ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_update_2 +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_update_2 ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned +ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_uuid_that_does_not_exist +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_uuid_that_does_not_exist ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_inconsistent_physnets +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_inconsistent_physnets ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned_bad +ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned_bad ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_list +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_list ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_deployfail_state +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_deployfail_state ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned_no_myobj +ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned_no_myobj ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_inconsistent_physnets_fix +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_inconsistent_physnets_fix ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_list_sorted +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_list_sorted ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_get_updates +ironic.tests.unit.objects.test_objects.TestObject.test_get_updates ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_hydration +ironic.tests.unit.objects.test_objects.TestObject.test_hydration ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroups_by_node_id +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroups_by_node_id ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_no_portgroup_create +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_no_portgroup_create ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_hydration_bad_ns +ironic.tests.unit.objects.test_objects.TestObject.test_hydration_bad_ns ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroups_by_node_id_that_does_not_exist +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroups_by_node_id_that_does_not_exist ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_hydration_type_error +ironic.tests.unit.objects.test_objects.TestObject.test_hydration_type_error ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_error_state +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_error_state ... ok +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_no_portgroup_update +ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_no_portgroup_update ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_load +ironic.tests.unit.objects.test_objects.TestObject.test_load ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup ... ok ironic.tests.unit.db.sqlalchemy.test_api.TestDBWriteMethodsRetryOnDeadlock.test_retry_on_deadlock ironic.tests.unit.db.sqlalchemy.test_api.TestDBWriteMethodsRetryOnDeadlock.test_retry_on_deadlock ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_delete_raid_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_delete_raid_cleaning ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_delete_raid_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_delete_raid_deploying ... ok -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_empty_db -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_empty_db ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_cleaning ... ok -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_max_count_zero -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_max_count_zero ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_deploying ... ok -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_1 -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_1 ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_empty_target_raid_config_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_empty_target_raid_config_cleaning ... ok -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_2_some_nodes -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_2_some_nodes ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_empty_target_raid_config_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_empty_target_raid_config_deploying ... ok -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_same_nodes -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_same_nodes ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_ilo_error_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_ilo_error_cleaning ... ok -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_one_node -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_one_node ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_ilo_error_cleaning_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_ilo_error_cleaning_deploying ... ok -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_version_exists -ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_version_exists ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_non_root_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_non_root_cleaning ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_load_in_base +ironic.tests.unit.objects.test_objects.TestObject.test_load_in_base ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_duplicated_address +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_duplicated_address ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_loaded_in_primitive +ironic.tests.unit.objects.test_objects.TestObject.test_loaded_in_primitive ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_duplicated_name +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_duplicated_name ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_obj_attr_is_set +ironic.tests.unit.objects.test_objects.TestObject.test_obj_attr_is_set ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_from_available_state +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_from_available_state ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_obj_constructor +ironic.tests.unit.objects.test_objects.TestObject.test_obj_constructor ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_not_found +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_not_found ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_obj_fields +ironic.tests.unit.objects.test_objects.TestObject.test_obj_fields ... ok +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_uuid +ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_uuid ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_object_inheritance +ironic.tests.unit.objects.test_objects.TestObject.test_object_inheritance ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_object_property +ironic.tests.unit.objects.test_objects.TestObject.test_object_property ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_protected +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_protected ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_create_volume_connector_duplicated_type_connector_id +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_create_volume_connector_duplicated_type_connector_id ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_object_property_type_error +ironic.tests.unit.objects.test_objects.TestObject.test_object_property_type_error ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_create_volume_connector_duplicated_uuid +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_create_volume_connector_duplicated_uuid ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_orphaned_object +ironic.tests.unit.objects.test_objects.TestObject.test_orphaned_object ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_refresh_object +ironic.tests.unit.objects.test_objects.TestObject.test_refresh_object ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_destroy_volume_connector +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_destroy_volume_connector ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_static_result +ironic.tests.unit.objects.test_objects.TestObject.test_static_result ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_traits_validate_fail +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_traits_validate_fail ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_by_id +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_by_id ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_supports_version +ironic.tests.unit.objects.test_objects.TestObject.test_supports_version ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_unknown_objtype +ironic.tests.unit.objects.test_objects.TestObject.test_unknown_objtype ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_by_uuid +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_by_uuid ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_updates +ironic.tests.unit.objects.test_objects.TestObject.test_updates ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_list +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_list ... ok +ironic.tests.unit.objects.test_objects.TestObject.test_with_alternate_context +ironic.tests.unit.objects.test_objects.TestObject.test_with_alternate_context ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_validate_fail +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_validate_fail ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_list_sorted +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_list_sorted ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connectors_by_node_id +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connectors_by_node_id ... ok +ironic.tests.unit.objects.test_objects.TestRegistry.test_hook_chooses_newer_properly +ironic.tests.unit.objects.test_objects.TestRegistry.test_hook_chooses_newer_properly ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connectors_by_node_id_that_does_not_exist +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connectors_by_node_id_that_does_not_exist ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_validate_template_fail +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_validate_template_fail ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector ... ok +ironic.tests.unit.objects.test_objects.TestRegistry.test_hook_keeps_newer_properly +ironic.tests.unit.objects.test_objects.TestRegistry.test_hook_keeps_newer_properly ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_duplicated_type_connector_id +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_duplicated_type_connector_id ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_fails_invalid_id +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_fails_invalid_id ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported_missing +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported_missing ... ok +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_worker_pool_full +ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_worker_pool_full ... ok +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_uuid +ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_uuid ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported_set +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported_set ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_associate_node_powered_off +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_associate_node_powered_off ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_create_schema_and_version +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_create_schema_and_version ... skipped "Backend 'postgresql+psycopg2' is unavailable: Could not connect" +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_missing +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_missing ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_associate_node_powered_on +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_associate_node_powered_on ... ok +ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_clean_dhcp_opts +ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_clean_dhcp_opts ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_no_remove_default ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_and_create_schema +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_and_create_schema ... skipped "Backend 'postgresql+psycopg2' is unavailable: Could not connect" +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_get_ip_addresses +ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_get_ip_addresses ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_and_version +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_and_version ... skipped "Backend 'postgresql+psycopg2' is unavailable: Could not connect" +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_already_associated +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_already_associated ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_remove +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_remove ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_twice +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_twice ... skipped "Backend 'postgresql+psycopg2' is unavailable: Could not connect" +ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_update_dhcp +ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_update_dhcp ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_supported_missing +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_supported_missing ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_already_locked +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_already_locked ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_supported_set +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_supported_set ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address ... ok +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_walk_versions +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_walk_versions ... skipped "Backend 'postgresql+psycopg2' is unavailable: Could not connect" +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_missing +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_missing ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_invalid_ip +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_invalid_ip ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_no_remove_default ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_ipv6 +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_ipv6 ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation_forbidden +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation_forbidden ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_with_exception +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_with_exception ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_remove +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_remove ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation_in_maintenance +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation_in_maintenance ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_supported_missing +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_supported_missing ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_ip_addresses_portgroup_int_info +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_ip_addresses_portgroup_int_info ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_fix_broken_interface +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_fix_broken_interface ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_supported_set +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_supported_set ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_ip_addresses_ports_int_info +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_ip_addresses_ports_int_info ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_missing +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_missing ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_from_invalid_driver +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_from_invalid_driver ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_no_remove_default ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_cleaning +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_cleaning ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_hardware_type +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_hardware_type ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_field_with_broken_interface +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_field_with_broken_interface ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_remove +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_remove ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_for_portgroup +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_for_portgroup ... ok +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_for_portgroup_with_exception +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_for_portgroup_with_exception ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_in_internal_info +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_in_internal_info ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_lower_version +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_lower_version ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_provisioning +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_provisioning ... ok +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_not_in_extra +ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_not_in_extra ... ok +ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra +ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_tenant +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_tenant ... ok +ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_in_internal_info +ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_in_internal_info ... ok +ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_lower_version +ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_lower_version ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_with_exception +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_with_exception ... ok +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_conductor +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_conductor ... ok +ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_not_in_extra +ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_not_in_extra ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_get_ip_addresses +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_get_ip_addresses ... ok +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_create +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_create ... ok +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_conductor_old +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_conductor_old ... ok +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_bad_id_and_uuid_and_address_and_name +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_bad_id_and_uuid_and_address_and_name ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_get_ip_addresses_for_port_and_portgroup +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_get_ip_addresses_for_port_and_portgroup ... ok +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_address +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_address ... ok +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_id +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_id ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp ... ok +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_name +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_name ... ok +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_uuid +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_uuid ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_fails +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_fails ... ok +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_list +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_list ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_no_vif_data +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_no_vif_data ... ok +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_list_by_node_id +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_list_by_node_id ... ok +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_emptyDB +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_emptyDB ... ok +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_payload_schemas +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_payload_schemas ... ok +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_handles_missing_table +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_handles_missing_table ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_set_sleep_and_fake +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_set_sleep_and_fake ... ok +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_refresh +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_refresh ... ok +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_save +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_save ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_some_failures +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_some_failures ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_allowed_state +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_allowed_state ... ok +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_save_after_refresh +ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_save_after_refresh ... ok +GOT:Response: 202 Accepted +Content-Type: application/json +Openstack-Request-Id: req-66c6626a-b854-4bcb-a403-014fccdcdab8 +"accepted" +GET: / {} +GOT:{'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.80'}, 'versions': [{'id': 'v1', 'links': [{'href': 'http://spam.ham/eggs/v1/', 'rel': 'self'}], 'status': 'CURRENT', 'min_version': '1.1', 'version': '1.80'}]} +GET: / {} +GOT:{'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.80'}, 'versions': [{'id': 'v1', 'links': [{'href': 'https://mycloud.com/ironic/v1/', 'rel': 'self'}], 'status': 'CURRENT', 'min_version': '1.1', 'version': '1.80'}]} +foo() migrated 15 of 15 objects. +func1() migrated 15 of 15 objects. +func2() migrated 20 of 20 objects. +func1() migrated 10 of 10 objects. +func2() migrated 0 of 0 objects. +func1() migrated 10 of 15 objects. +func1() migrated 10 of 10 objects. +func1() migrated 10 of 10 objects. +func1() migrated 0 of 0 objects. +func2() migrated 0 of 0 objects. +Running batches of 50 until migrations have been completed. +Data migrations have completed. +Running batches of 50 until migrations have been completed. +Data migrations have completed. +Running batches of 50 until migrations have been completed. +Malformed option m1key1=value1 +Malformed option m1.key1value1 +Data migrations have not completed. Please re-run. +Running batches of 50 until migrations have been completed. +Data migrations have completed. +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_unset_sleep_and_fake +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_unset_sleep_and_fake ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts ... ok +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_ignore_node +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_ignore_node ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_v4_and_v6 +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_v4_and_v6 ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_maintenance +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_maintenance ... ok +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_missing_version_columns +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_missing_version_columns ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_v6 +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_v6 ... ok +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_node_no_version +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_node_no_version ... ok +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_with_exception +ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_with_exception ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_not_allowed_state +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_not_allowed_state ... ok +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_node_old +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_node_old ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_abandon_config +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_abandon_config ... ok +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_raises_missing_table +ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_raises_missing_table ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_invalid +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_invalid ... ok +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_create_chassis_already_exists +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_create_chassis_already_exists ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_abandon_config_fail +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_abandon_config_fail ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_invalid_driver +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_invalid_driver ... ok +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_commit_config +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_commit_config ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_maintenance_set_false +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_maintenance_set_false ... ok +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis_that_does_not_exist +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis_that_does_not_exist ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_commit_config_fail +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_commit_config_fail ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_maintenance_with_broken_interface +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_maintenance_with_broken_interface ... ok +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis_with_nodes +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis_with_nodes ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_invalid_state +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_invalid_state ... ok +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_by_id +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_by_id ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_commit_config_with_reboot +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_commit_config_with_reboot ... ok +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_by_uuid +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_by_uuid ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_reason_without_protected +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_reason_without_protected ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_get_config +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_get_config ... ok +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_list +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_list ... ok +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_that_does_not_exist +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_that_does_not_exist ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_set +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_set ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_get_config_fail +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_get_config_fail ... ok +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_set_config +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_set_config ... ok +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis_that_does_not_exist +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis_that_does_not_exist ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_unset +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_unset ... ok +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis_uuid +ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis_uuid ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_set_config_fail +ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_set_config_fail ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_invalid_state +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_invalid_state ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_reason_without_retired +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_reason_without_retired ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_duplicate_name +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_duplicate_name ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_last_system_inventory_changed_different_inventory_time +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_last_system_inventory_changed_different_inventory_time ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_duplicate_uuid +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_duplicate_uuid ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_set +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_set ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_last_system_inventory_changed_same_inventory_time +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_last_system_inventory_changed_same_inventory_time ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_invalid_step_no_interface +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_invalid_step_no_interface ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_no_steps +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_no_steps ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_last_system_inventory_changed_same_inventory_time_timeout +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_last_system_inventory_changed_same_inventory_time_timeout ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_destroy +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_destroy ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_unset +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_unset ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_id +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_id ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_name +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_name ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_uuid +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_uuid ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs_completed_with_errors +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs_completed_with_errors ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs_failed +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs_failed ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_by_names +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_by_names ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_with_reset_interfaces +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_with_reset_interfaces ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_by_names_no_match +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_by_names_no_match ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs_still_running +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__check_node_bios_jobs_still_running ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_sorted +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_sorted ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__query_bios_config_job_status +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__query_bios_config_job_status ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_duplicate_name +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_duplicate_name ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_allowed_state +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_allowed_state ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__query_bios_config_job_status_no_config_jobs +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__query_bios_config_job_status_no_config_jobs ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_extra +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_extra ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_name +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_name ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__query_bios_config_job_status_no_driver +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test__query_bios_config_job_status_no_driver ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_not_found +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_not_found ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_conf_commit_fail +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_conf_commit_fail ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_add +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_add ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_no_previous_value +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_no_previous_value ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_remove_all +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_remove_all ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_conf_set_fail +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_conf_set_fail ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_replace +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_replace ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_configuration_clean +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_configuration_clean ... ok +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_not_allowed +ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_not_allowed ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_replace_args +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_replace_args ... ok +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_uuid_not_allowed +ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_uuid_not_allowed ... ok +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_configuration_deploy +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_apply_configuration_deploy ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_create_port_duplicated_address +ironic.tests.unit.db.test_ports.DbPortTestCase.test_create_port_duplicated_address ... ok +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_node_locked +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_node_locked ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_cache_bios_settings_fail +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_cache_bios_settings_fail ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_create_port_duplicated_uuid +ironic.tests.unit.db.test_ports.DbPortTestCase.test_create_port_duplicated_uuid ... ok +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_network_error +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_network_error ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_destroy_port +ironic.tests.unit.db.test_ports.DbPortTestCase.test_destroy_port ... ok +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_portgroup_physnet_inconsistent +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_portgroup_physnet_inconsistent ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_cache_bios_settings_noop +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_cache_bios_settings_noop ... ok +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_vif_invalid_for_attach +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_vif_invalid_for_attach ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_owner +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_owner ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_owner_no_match +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_owner_no_match ... ok +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_validate_error +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_validate_error ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_clean +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_clean ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_project +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_project ... ok +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_project_no_match +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_project_no_match ... ok +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_node_locked +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_node_locked ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_id +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_id ... ok +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_raises_network_error +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_raises_network_error ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_name +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_name ... ok +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_validate_error +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_validate_error ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_uuid +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_uuid ... ok +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_list +ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_list ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_commit_fail +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_commit_fail ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_add_node_traits +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_add_node_traits ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_filter_by_node_owner +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_filter_by_node_owner ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_add_node_traits_replace +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_add_node_traits_replace ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_deploy +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_deploy ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_create_port_False +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_create_port_False ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_filter_by_node_project +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_filter_by_node_project ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_set_fail +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_factory_reset_set_fail ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_create_port_True +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_create_port_True ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_sorted +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_sorted ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_rescue_false +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_rescue_false ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_get_properties +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_get_properties ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_rescue_true +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_rescue_true ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_boot_mode +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_boot_mode ... ok +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_validate +ironic.tests.unit.drivers.modules.drac.test_bios.DracWSManBIOSConfigurationTestCase.test_validate ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_power_state +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_power_state ... ok +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_get_job +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_get_job ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_secure_boot +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_secure_boot ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_clean +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_clean ... ok +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_get_job_fail +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_get_job_fail ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_deploy +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_deploy ... ok +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_list_unfinished_jobs +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_list_unfinished_jobs ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_allocation +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_allocation ... ok +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_list_unfinished_jobs_fail +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_list_unfinished_jobs_fail ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_owner +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_owner ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_node +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_node ... ok +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_owner_no_match +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_owner_no_match ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_port +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_port ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_allocation +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_allocation ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_project +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_project ... ok +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_fail +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_fail ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_node +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_node ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_project_no_match +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_project_no_match ... ok +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_invalid +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_invalid ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_portgroup +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_portgroup ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_that_does_not_exist +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_that_does_not_exist ... ok +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_name_prefix +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_name_prefix ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_volume_connector +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_volume_connector ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id ... ok +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_name_prefix_invalid +ironic.tests.unit.drivers.modules.drac.test_job.DracJobTestCase.test_validate_job_queue_name_prefix_invalid ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_volume_target +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_volume_target ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_owner +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_owner ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_clean +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_clean ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__change_physical_disk_mode +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__change_physical_disk_mode ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_owner_no_match +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_owner_no_match ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_deploy +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_deploy ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__commit_to_controllers_with_config_job +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__commit_to_controllers_with_config_job ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_project +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_project ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_deploy_with_deploy_steps +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_deploy_with_deploy_steps ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__commit_to_controllers_without_config_job +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__commit_to_controllers_without_config_job ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_project_no_match +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_project_no_match ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_rescue +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_rescue ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__reset_raid_config +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__reset_raid_config ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_that_does_not_exist +ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_that_does_not_exist ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_tear_down +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_tear_down ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__reset_raid_config_fail +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__reset_raid_config_fail ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_unrescue +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_unrescue ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port +ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_abandon_config +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_abandon_config ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_driver_vendor_passthru +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_driver_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_abandon_config_fail +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_abandon_config_fail ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port_duplicated_address +ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port_duplicated_address ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_boot_device +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_boot_device ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_change_physical_disk_state +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_change_physical_disk_state ... ok +ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port_uuid +ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port_uuid ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_conductor_for +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_conductor_for ... ok +ironic.tests.unit.dhcp.test_factory.CompareBasetoModules.test_drivers_match_dhcp_base +ironic.tests.unit.dhcp.test_factory.CompareBasetoModules.test_drivers_match_dhcp_base ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_clear_foreign_config +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_clear_foreign_config ... ok +ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_default_dhcp +ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_default_dhcp ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_console_information +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_console_information ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_clear_foreign_config_fail +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_clear_foreign_config_fail ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_driver_properties +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_driver_properties ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config ... ok +ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_dhcp_some_error +ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_dhcp_some_error ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_driver_vendor_passthru_methods +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_driver_vendor_passthru_methods ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config_fail +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config_fail ... ok +ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_only_one_dhcp +ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_only_one_dhcp ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_indicator_state +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_indicator_state ... ok +ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_bad_dhcp +ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_bad_dhcp ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config_with_realtime +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config_with_realtime ... ok +ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_neutron_dhcp +ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_neutron_dhcp ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_node_vendor_passthru_methods +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_node_vendor_passthru_methods ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config_with_reboot +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config_with_reboot ... ok +ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_none_dhcp +ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_none_dhcp ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_create_virtual_disk +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_create_virtual_disk ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_node_with_token +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_node_with_token ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_create_virtual_disk_fail +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_create_virtual_disk_fail ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test__ansible_deploy +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test__ansible_deploy ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_raid_logical_disk_properties +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_raid_logical_disk_properties ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_create_virtual_disk_with_optional_attrs +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_create_virtual_disk_with_optional_attrs ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_random_topic +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_random_topic ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_delete_virtual_disk +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_delete_virtual_disk ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test__ansible_deploy_iwdi +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test__ansible_deploy_iwdi ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_random_topic_no_conductors +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_random_topic_no_conductors ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_delete_virtual_disk_fail +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_delete_virtual_disk_fail ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_supported_boot_devices +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_supported_boot_devices ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_clean_up +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_clean_up ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_list_raid_settings +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_list_raid_settings ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_supported_indicators +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_supported_indicators ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_set_raid_settings +ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_set_raid_settings ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_deploy +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_deploy ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_doesnt_cache +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_doesnt_cache ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test__execute_foreign_drives_with_foreign_drives +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test__execute_foreign_drives_with_foreign_drives ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_doesnt_cache +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_doesnt_cache ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_execute_clean_step +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_execute_clean_step ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test__execute_foreign_drives_with_no_foreign_drives +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test__execute_foreign_drives_with_no_foreign_drives ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_known_driver +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_known_driver ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_unknown_driver +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_unknown_driver ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_execute_clean_step_no_success_log +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_execute_clean_step_no_success_log ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_apply_configuration +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_apply_configuration ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_known_driver +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_known_driver ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_clean_steps +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_clean_steps ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_unknown_driver +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_unknown_driver ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_delete_existing +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_delete_existing ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_clean_steps_priority +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_clean_steps_priority ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_heartbeat +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_heartbeat ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_heartbeat_agent_token +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_heartbeat_agent_token ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_properties +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_properties ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_fails_if_disk_already_reserved +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_fails_if_disk_already_reserved ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_inject_nmi +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_inject_nmi ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_inspect_hardware +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_inspect_hardware ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_fails_if_not_enough_space +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_fails_if_not_enough_space ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_expected_exception +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_expected_exception ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_fails_with_sharing_disabled +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_fails_with_sharing_disabled ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_host_mismatch +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_host_mismatch ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning_callback_no_steps +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning_callback_no_steps ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_host_mismatch_with_rpc_disabled +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_host_mismatch_with_rpc_disabled ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_in_clean +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_in_clean ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_no_conductor_with_rpc_disabled +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_no_conductor_with_rpc_disabled ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning_with_smartnic_port +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning_with_smartnic_port ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_with_rpc_disabled +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_with_rpc_disabled ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_in_deploy +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_in_deploy ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_cast +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_cast ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_with_smartnic_port +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_with_smartnic_port ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_cast_error +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_cast_error ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_no_change +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_no_change ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_action +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_action ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_action_invalid_version +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_action_invalid_version ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_backport_versions +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_backport_versions ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_backing_physical_disks +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_backing_physical_disks ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_agent_force_reboot +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_agent_force_reboot ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_backport_versions_invalid_version +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_backport_versions_invalid_version ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_agent_soft_poweroff_retry +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_agent_soft_poweroff_retry ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_class_action_versions +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_class_action_versions ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_max_size +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_max_size ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_class_action_versions_invalid_version +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_class_action_versions_invalid_version ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_remove_node_traits +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_remove_node_traits ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_cleaning +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_cleaning ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_max_size_and_share_physical_disks +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_max_size_and_share_physical_disks ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_remove_node_traits_all +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_remove_node_traits_all ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_rpc_disabled +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_rpc_disabled ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_cleaning_with_smartnic_port +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_cleaning_with_smartnic_port ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_serialized_instance_has_uuid +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_serialized_instance_has_uuid ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_max_size_without_backing_disks +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_max_size_without_backing_disks ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_boot_device +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_boot_device ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_console_mode +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_console_mode ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_validate +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_validate ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_multiple_controllers +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_multiple_controllers ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_indicator_state +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_indicator_state ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_target_raid_config +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_target_raid_config ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_write_image +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_write_image ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_multiple_max_and_sharing_same_disks +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_multiple_max_and_sharing_same_disks ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_node +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_node ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__calculate_memory_req +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__calculate_memory_req ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_nested_raid_10 +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_nested_raid_10 ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_clean_steps +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_clean_steps ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_configdrive_path +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_configdrive_path ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_nested_raid_level +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_nested_raid_level ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_node_ip +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_node_ip ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_port +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_port ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_python_interpreter +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_python_interpreter ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_predefined_number_of_physical_disks +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_predefined_number_of_physical_disks ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_portgroup +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_portgroup ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_volume_connector +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_volume_connector ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info_defaults +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info_defaults ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_volume_target +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_volume_target ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_share_physical_disks +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_with_share_physical_disks ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info_no_playbook +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info_no_playbook ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_validate_driver_interfaces +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_validate_driver_interfaces ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vendor_passthru +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vendor_passthru ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_partitioning_info_all_gpt +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_partitioning_info_all_gpt ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_without_drives_conversion +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_create_configuration_without_drives_conversion ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_attach +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_attach ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_partitioning_info_root_msdos +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_partitioning_info_root_msdos ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_detach +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_detach ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_in_clean +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_in_clean ... ok +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_list +ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_list ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints ... ok +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_fail_advanced +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_fail_advanced ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_in_deploy +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_in_deploy ... ok +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps_no_steps +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps_no_steps ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_iinfo +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_iinfo ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_no_change +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_no_change ... ok +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps_on_node +ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps_on_node ... ok +ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_excl_lock_task_first_arg +ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_excl_lock_task_first_arg ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_override +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_override ... ok +ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_excl_lock_task_second_arg +ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_excl_lock_task_second_arg ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_with_mix_realtime_controller_in_ehba_mode +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_with_mix_realtime_controller_in_ehba_mode ... ok +ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_shared_lock_task_first_arg +ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_shared_lock_task_first_arg ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_extra_vars +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_extra_vars ... ok +ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_shared_lock_task_second_arg +ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_shared_lock_task_second_arg ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_with_mix_realtime_controller_in_raid_mode +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_delete_configuration_with_mix_realtime_controller_in_raid_mode ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_build_driver_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_build_driver_exception ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_file +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_file ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_get_logical_disks +ironic.tests.unit.drivers.modules.drac.test_raid.DracRaidInterfaceTestCase.test_get_logical_disks ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_no_retries +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_no_retries ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_boot_device +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_boot_device ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_patient +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_patient ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_json +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_json ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_then_lock +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_then_lock ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_boot_mode +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_boot_mode ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_url +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_url ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_portgroups_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_portgroups_exception ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_properties +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_insecure_activated +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_insecure_activated ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_ports_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_ports_exception ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_sensors_data +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_sensors_data ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_volconn_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_volconn_exception ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_root_device_hints +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_root_device_hints ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_supported_boot_devices +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_supported_boot_devices ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_voltgt_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_voltgt_exception ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_supported_boot_modes +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_supported_boot_modes ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_reserve_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_reserve_exception ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_ansible_interpreter_override +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_ansible_interpreter_override ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_upgade_exception_no_retries +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_upgade_exception_no_retries ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_inject_nmi +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_inject_nmi ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_ansible_interpreter_python3 +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_ansible_interpreter_python3 ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_nested_acquire +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_nested_acquire ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_default_verbosity_debug +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_default_verbosity_debug ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_inject_nmi_fail +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_inject_nmi_fail ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_default_verbosity_nodebug +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_default_verbosity_nodebug ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_init_prepares_fsm +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_init_prepares_fsm ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_fail +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_fail ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_device +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_device ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_no_driver +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_no_driver ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_device_fail +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_device_fail ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps_missing +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps_missing ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_build_driver_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_build_driver_exception ... ok +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps_names_not_unique +ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps_names_not_unique ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_mode +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_mode ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_portgroups_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_portgroups_exception ... ok +ironic.tests.unit.drivers.modules.drac.test_job.DracVendorPassthruJobTestCase.test_list_unfinished_jobs +ironic.tests.unit.drivers.modules.drac.test_job.DracVendorPassthruJobTestCase.test_list_unfinished_jobs ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_mode_fail +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_mode_fail ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_ports_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_ports_exception ... ok +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_validate +ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_validate ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_volconn_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_volconn_exception ... ok +ironic.tests.unit.drivers.modules.drac.test_job.DracVendorPassthruJobTestCase.test_list_unfinished_jobs_fail +ironic.tests.unit.drivers.modules.drac.test_job.DracVendorPassthruJobTestCase.test_list_unfinished_jobs_fail ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_voltgt_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_voltgt_exception ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_cdrom +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_cdrom ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_error_cleaning +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_error_cleaning ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_node_get_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_node_get_exception ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_disk_and_bios +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_disk_and_bios ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_disk_and_uefi +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_disk_and_uefi ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_error_deploying +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_error_deploying ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_pxe +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_pxe ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_exception_while_yielded +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_exception_while_yielded ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_failed_cleaning +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_failed_cleaning ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_link_fails +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_link_fails ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device_not_persistent +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device_not_persistent ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_on_error_hook +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_on_error_hook ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_failed_deploying +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_failed_deploying ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device_with_empty_boot_mode_list +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device_with_empty_boot_mode_list ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_on_error_hook_exception +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_on_error_hook_exception ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device_with_no_boot_device +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device_with_no_boot_device ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_apply_configuration +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_apply_configuration ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_spawn_fails +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_spawn_fails ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_factory_reset +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_factory_reset ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_upgrade_lock +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_upgrade_lock ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode_list_boot_modes_fail +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode_list_boot_modes_fail ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode_with_empty_boot_mode_list +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode_with_empty_boot_mode_list ... ok +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_upgrade_lock_refreshes_fsm +ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_upgrade_lock_refreshes_fsm ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_iloobj_failed_cleaning +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_iloobj_failed_cleaning ... ok +ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_add_secret_token +ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_add_secret_token ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode_with_non_persistent_boot_mode +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode_with_non_persistent_boot_mode ... ok +ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_is_agent_token_present +ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_is_agent_token_present ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_iloobj_failed_deploy +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_iloobj_failed_deploy ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__is_boot_order_flexibly_programmable +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__is_boot_order_flexibly_programmable ... ok +ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_wipe_deploy_internal_info +ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_wipe_deploy_internal_info ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__is_boot_order_flexibly_programmable_not_persistent +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__is_boot_order_flexibly_programmable_not_persistent ... ok +ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_already_present +ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_already_present ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_invalid_cleaning +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_invalid_cleaning ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__is_boot_order_flexibly_programmable_with_no_bios_setting +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__is_boot_order_flexibly_programmable_with_no_bios_setting ... ok +ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_empty +ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_empty ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_invalid_deploy +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_invalid_deploy ... ok +ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_failed +ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_failed ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_no_change +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_no_change ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_conf_cleaning +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_conf_cleaning ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_no_drac_boot_device +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_no_drac_boot_device ... ok +ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_ok +ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_ok ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_not_flexibly_programmable +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_not_flexibly_programmable ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_conf_deploying +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_conf_deploying ... ok +ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_unsupported +ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_unsupported ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_unknown_boot_mode +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_unknown_boot_mode ... ok +ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_cleaning +ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_cleaning ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_configuration +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_configuration ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_job_not_scheduled +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_job_not_scheduled ... ok +ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_inspecting +ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_inspecting ... ok +ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_none +ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_none ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_list_unfinished_jobs_fail +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_list_unfinished_jobs_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_factory_reset_cleaning +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_factory_reset_cleaning ... ok +ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_provisioning +ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_provisioning ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_list_unfinished_jobs_with_clean_step +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_list_unfinished_jobs_with_clean_step ... ok +ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_rescuing +ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_rescuing ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_factory_reset_deploying +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_factory_reset_deploying ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_list_unfinished_jobs_without_clean_step +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_list_unfinished_jobs_without_clean_step ... ok +ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_tenant +ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_tenant ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_iloobj_failed_cleaning +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_iloobj_failed_cleaning ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_multiple_unfinished_jobs_with_clean_step +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_multiple_unfinished_jobs_with_clean_step ... ok +ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_empty +ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_empty ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_multiple_unfinished_jobs_without_clean_step +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_multiple_unfinished_jobs_without_clean_step ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_iloobj_failed_deploying +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_iloobj_failed_deploying ... ok +ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_populated +ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_populated ... ok +ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_user_data_as_dict +ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_user_data_as_dict ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_invalid_cleaning +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_invalid_cleaning ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task ... ok +ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_user_data_as_string +ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_user_data_as_string ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_invalid_deploying +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_invalid_deploying ... ok +ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_no_configdrive +ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_no_configdrive ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_failed +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_failed ... ok +ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_string +ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_string ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_reset_bios_failed_cleaning +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_reset_bios_failed_cleaning ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_missing +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_missing ... ok +ironic.tests.unit.conductor.test_utils.GetTokenProjectFromRequestTestCase.test_no_token_info +ironic.tests.unit.conductor.test_utils.GetTokenProjectFromRequestTestCase.test_no_token_info ... ok +ironic.tests.unit.conductor.test_utils.GetTokenProjectFromRequestTestCase.test_returns_project_id_if_present +ironic.tests.unit.conductor.test_utils.GetTokenProjectFromRequestTestCase.test_returns_project_id_if_present ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_reset_bios_failed_deploying +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_reset_bios_failed_deploying ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_partial_failed +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_partial_failed ... ok +ironic.tests.unit.db.sqlalchemy.test_models.TestGetClass.test_get_class +ironic.tests.unit.db.sqlalchemy.test_models.TestGetClass.test_get_class ... ok +ironic.tests.unit.db.sqlalchemy.test_models.TestGetClass.test_get_class_bad +ironic.tests.unit.db.sqlalchemy.test_models.TestGetClass.test_get_class_bad ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_set_bios_failed_cleaning +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_set_bios_failed_cleaning ... ok +ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedDict_default_value +ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedDict_default_value ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_partial_failed_idrac5 +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_partial_failed_idrac5 ... ok +ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedDict_type_check +ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedDict_type_check ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_still_processing +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_still_processing ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_set_bios_failed_deploying +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_set_bios_failed_deploying ... ok +ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedList_default_value +ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedList_default_value ... ok +ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedList_type_check +ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedList_type_check ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_apply_configuration_post_boot +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_apply_configuration_post_boot ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_with_export +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_with_export ... ok +ironic.tests.unit.db.test_api.GetNotVersionsTestCase.test_get_not_versions +ironic.tests.unit.db.test_api.GetNotVersionsTestCase.test_get_not_versions ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_apply_configuration_pre_boot +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_apply_configuration_pre_boot ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_with_export_failed +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_with_export_failed ... ok +ironic.tests.unit.db.test_api.GetNotVersionsTestCase.test_get_not_versions_no_model +ironic.tests.unit.db.test_api.GetNotVersionsTestCase.test_get_not_versions_no_model ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_not_drac +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_not_drac ... ok +ironic.tests.unit.db.test_api.GetNotVersionsTestCase.test_get_not_versions_null +ironic.tests.unit.db.test_api.GetNotVersionsTestCase.test_get_not_versions_null ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_create_bios_setting_list ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_create_bios_setting_list ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_invalid_parameter +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_invalid_parameter ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_create_bios_setting_list_duplicate ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_create_bios_setting_list_duplicate ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_non_root_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_non_root_deploying ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_no_task_monitor_url +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_no_task_monitor_url ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_missing_parameter +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_missing_parameter ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_create_bios_setting_list_node_not_exist ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_create_bios_setting_list_node_not_exist ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_cleaning ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_deploying ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_node_locked +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_node_locked ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_with_ilo_error +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_with_ilo_error ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_delete_bios_setting_list ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_delete_bios_setting_list ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_skip_non_root_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_skip_non_root_cleaning ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_node_notfound +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_node_notfound ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_delete_bios_setting_list_node_not_exist ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_delete_bios_setting_list_node_not_exist ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_with_unknown_error +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_with_unknown_error ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_failed_clean +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_failed_clean ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_delete_bios_setting_list_setting_not_exist ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_delete_bios_setting_list_setting_not_exist ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_skip_non_root_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_skip_non_root_deploying ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_get_properties +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_get_properties ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_cleaning ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_failed_deploy +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_failed_deploy ... ok +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_validate +ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_validate ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_list ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_list ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_deploying ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_success_clean +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_success_clean ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_list_node_not_exist ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_list_node_not_exist ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_node_not_exist ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_node_not_exist ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_failed_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_failed_cleaning ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_success_deploy +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_success_deploy ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance_boot_from_volume +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance_boot_from_volume ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_setting_not_exist ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_setting_not_exist ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_failed_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_failed_deploying ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_update_bios_setting_list ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_update_bios_setting_list ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_cleaning ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance_boot_from_volume_bios +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance_boot_from_volume_bios ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_data_empty +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_data_empty ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_update_bios_setting_list_node_not_exist ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_update_bios_setting_list_node_not_exist ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_deploying ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_data_missing +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_data_missing ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance ... ok ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_update_bios_setting_list_setting_not_exist ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_update_bios_setting_list_setting_not_exist ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_ilo_error_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_ilo_error_cleaning ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_ilo_error_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_ilo_error_deploying ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_no_logical_drive_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_no_logical_drive_cleaning ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_no_logical_drive_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_no_logical_drive_deploying ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_cleaning ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_deploying ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_at_limit -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_at_limit ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_duplicate -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_duplicate ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_failed_cleaning -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_failed_cleaning ... ok -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_failed_deploying -ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_failed_deploying ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_duplicate_at_limit -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_duplicate_at_limit ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_node_not_exist -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_node_not_exist ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_interface_missing +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_interface_missing ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_bios +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_bios ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_interface_not_supported +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_interface_not_supported ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag_duplicate +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag_duplicate ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_oem_missing +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_oem_missing ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_boot_from_volume +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_boot_from_volume ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag_node_not_exist +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag_node_not_exist ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_cleaning +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_cleaning ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag_node_not_found +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag_node_not_found ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue_missing_attr_clean_step +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue_missing_attr_clean_step ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_deploying +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_deploying ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag_not_found +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag_not_found ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_by_node_id +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_by_node_id ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_rescuing +ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_rescuing ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue_missing_attr_verify_step +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue_missing_attr_verify_step ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_empty +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_empty ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_export_failed +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_export_failed ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_deploy_info +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_deploy_info ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_node_not_exist +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_node_not_exist ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_name_missing +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_name_missing ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_exists +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_exists ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_default_mode +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_default_mode ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_success +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_success ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_node_not_exist +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_node_not_exist ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_file_not_found +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_file_not_found ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_not_exists +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_not_exists ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_invalid_params +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_invalid_params ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_incorrect_schema +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_incorrect_schema ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_rescue_mode +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_rescue_mode ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_name_missing +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_name_missing ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags_duplicate +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags_duplicate ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags_node_not_exist +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags_node_not_exist ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_hrefs_http_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_hrefs_http_image ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_empty_node_tags +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_empty_node_tags ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_hrefs_https_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_hrefs_https_image ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_node_tags +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_node_tags ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_instance_image_info +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_instance_image_info ... ok +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_node_tags_node_not_exist +ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_node_tags_node_not_exist ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_allocations_get_destroyed_after_destroying_a_node_by_uuid +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_allocations_get_destroyed_after_destroying_a_node_by_uuid ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_success +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_success ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_export_configuration_success +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_export_configuration_success ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list_impossible +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list_impossible ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list_non_existing +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list_non_existing ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_known_good_state +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_known_good_state ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_clean_up_instance +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_clean_up_instance ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_already_exists +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_already_exists ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_clean_up_ramdisk +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_clean_up_ramdisk ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_instance_already_associated +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_instance_already_associated ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac_missing_attr_clean_step +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac_missing_attr_clean_step ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_name_duplicate +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_name_duplicate ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_boot_ramdisk +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_boot_ramdisk ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_with_tags +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_with_tags ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_with_traits +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_with_traits ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac_missing_attr_verify_step +ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac_missing_attr_verify_step ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_local_or_whole_disk_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_local_or_whole_disk_image ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_2_disk_and_raid_level_1 +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_2_disk_and_raid_level_1 ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_partition_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_partition_image ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_7_disk_and_raid_level_10 +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_7_disk_and_raid_level_10 ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node_by_uuid +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node_by_uuid ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node_that_does_not_exist +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node_that_does_not_exist ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_7_disk_and_raid_level_50 +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_7_disk_and_raid_level_50 ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_invalid_raid_level +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_invalid_raid_level ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_id +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_id ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_glance_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_glance_image ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__filter_logical_disks_excelude_all +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__filter_logical_disks_excelude_all ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__filter_logical_disks_nonroot_only +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__filter_logical_disks_nonroot_only ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_glance_image_cleaning +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_glance_image_cleaning ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance_invalid_uuid +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance_invalid_uuid ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance_wrong_uuid +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance_wrong_uuid ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__filter_logical_disks_root_only +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__filter_logical_disks_root_only ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_middle_of_clean_step +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_middle_of_clean_step ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_name +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_name ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration_all_steps +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration_all_steps ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration_pending_delete +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration_pending_delete ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_not_a_glance_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_not_a_glance_image ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses_multiple_found +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses_multiple_found ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration_with_more_than_min_disks_for_raid_level +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration_with_more_than_min_disks_for_raid_level ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_not_a_glance_image_cleaning +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_not_a_glance_image_cleaning ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses_not_found +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses_not_found ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__max_volume_size_mb +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__max_volume_size_mb ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_uuid +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_uuid ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__validate_volume_size_requested_less_than_actual_size +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__validate_volume_size_requested_less_than_actual_size ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_rescue_glance_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_rescue_glance_image ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__validate_volume_size_requested_more_than_actual_size +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__validate_volume_size_requested_more_than_actual_size ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_chassis_not_found +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_chassis_not_found ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__volume_usage_per_disk_mb +ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__volume_usage_per_disk_mb ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_rescue_not_a_glance_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_rescue_not_a_glance_image ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_description +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_description ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_filter_by_project +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_filter_by_project ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_bios +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_bios ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_includes_traits +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_includes_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_inspection +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_inspection ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_requested_fields_no_traits +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_requested_fields_no_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_inspection_missing +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_inspection_missing ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_requested_fields_with_traits +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_requested_fields_with_traits ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_glance +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_glance ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_webserver +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_webserver ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_webserver_exc +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_webserver_exc ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_rescue +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_rescue ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_rescue_no_rescue_ramdisk +ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_rescue_no_rescue_ramdisk ... ok +ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect +ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_with_filters +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_with_filters ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_that_does_not_exist +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_that_does_not_exist ... ok +ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_empty +ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_empty ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_defaults +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_defaults ... ok +ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_error +ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_error ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_description +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_description ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_inspection +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_inspection ... ok +ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_invalid_input +ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_invalid_input ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_provision +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_provision ... ok +ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_more_socket +ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_more_socket ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_with_cols +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_with_cols ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__cleanup_boot_from_volume +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__cleanup_boot_from_volume ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_with_filters +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_with_filters ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_history_get_destroyed_after_destroying_a_node_by_uuid +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_history_get_destroyed_after_destroying_a_node_by_uuid ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_apply_error +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_apply_error ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_node_provision_state_count +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_node_provision_state_count ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_fc +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_fc ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_ports_get_destroyed_after_destroying_a_node +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_ports_get_destroyed_after_destroying_a_node ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_ports_get_destroyed_after_destroying_a_node_by_uuid +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_ports_get_destroyed_after_destroying_a_node_by_uuid ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_non_existent_node +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_non_existent_node ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_non_locked_node +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_non_locked_node ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_reservation +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_reservation ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi_chap +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi_chap ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_after_release +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_after_release ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_in_exception_message +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_in_exception_message ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi_no_portal_port +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi_no_portal_port ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_non_existent_node +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_non_existent_node ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_of_reserved_node_fails +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_of_reserved_node_fails ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_multi_lan_ports +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_multi_lan_ports ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reserve_node +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reserve_node ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_clean_up_instance +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_clean_up_instance ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_tags_get_destroyed_after_destroying_a_node +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_tags_get_destroyed_after_destroying_a_node ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_tags_get_destroyed_after_destroying_a_node_by_uuid +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_tags_get_destroyed_after_destroying_a_node_by_uuid ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_clean_up_instance_error +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_clean_up_instance_error ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_touch_node_provisioning +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_touch_node_provisioning ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_touch_node_provisioning_not_found +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_touch_node_provisioning_not_found ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_prepare_instance +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_prepare_instance ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_traits_get_destroyed_after_destroying_a_node +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_traits_get_destroyed_after_destroying_a_node ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_prepare_ramdisk_skip +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_prepare_ramdisk_skip ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_traits_get_destroyed_after_destroying_a_node_by_uuid +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_traits_get_destroyed_after_destroying_a_node_by_uuid ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_invalid_physical_id_in_lan_port +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_invalid_physical_id_in_lan_port ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_associate_and_disassociate +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_associate_and_disassociate ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_finished_at +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_finished_at ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi ... ok +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_handle_ibmc_exception_retry +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_handle_ibmc_exception_retry ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_started_at +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_started_at ... ok +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_instance_already_associated +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_instance_already_associated ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_invalid_netmask +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_invalid_netmask ... ok +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_default_scheme +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_default_scheme ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_name_duplicate +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_name_duplicate ... ok +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_default_scheme_with_port +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_default_scheme_with_port ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_ip +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_ip ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_no_provision +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_no_provision ... ok +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_invalid_address +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_invalid_address ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_not_found +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_not_found ... ok +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_invalid_string_value_verify_ca +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_invalid_string_value_verify_ca ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_iqn +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_iqn ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_provision +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_provision ... ok +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_invalid_value_verify_ca +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_invalid_value_verify_ca ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_uuid +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_uuid ... ok +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_missing_info +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_missing_info ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_netmask +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_netmask ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_with_tags +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_with_tags ... ok +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_path_verify_ca +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_path_verify_ca ... ok +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_valid_capath +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_valid_capath ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_with_traits +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_with_traits ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_physical_id +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_physical_id ... ok +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_valid_string_value_verify_ca +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_parse_driver_info_valid_string_value_verify_ca ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_connector_get_destroyed_after_destroying_a_node +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_connector_get_destroyed_after_destroying_a_node ... ok +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_revert_dictionary +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_revert_dictionary ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_connector_get_destroyed_after_destroying_a_node_uuid +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_connector_get_destroyed_after_destroying_a_node_uuid ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_too_large_netmask +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_too_large_netmask ... ok +ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_get_properties +ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_get_properties ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_target_gets_destroyed_after_destroying_a_node +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_target_gets_destroyed_after_destroying_a_node ... ok +ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_list_boot_type_order +ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_list_boot_type_order ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_too_small_netmask +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_too_small_netmask ... ok +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_target_gets_destroyed_after_destroying_a_node_uuid +ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_target_gets_destroyed_after_destroying_a_node_uuid ... ok +ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_list_raid_controller +ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_list_raid_controller ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target ... ok +ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_validate +ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_validate ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_no_physical_id_in_lan_port +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_no_physical_id_in_lan_port ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target_duplicated_nodeid_and_bootindex +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target_duplicated_nodeid_and_bootindex ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_bootloader_none +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_bootloader_none ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target_duplicated_uuid +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target_duplicated_uuid ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy ... ok +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_avoid_repeatedly_resume_cleaning +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_avoid_repeatedly_resume_cleaning ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_destroy_volume_target +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_destroy_volume_target ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_config +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_config ... ok +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_completing_status +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_completing_status ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_by_id +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_by_id ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_deprecated +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_deprecated ... ok +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_other_clean_state +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_other_clean_state ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_by_uuid +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_by_uuid ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_iso +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_iso ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_list +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_list ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_iso_deprecated +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_iso_deprecated ... ok +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_clean_fail +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_clean_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_exc +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_exc ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_list_sorted +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_list_sorted ... ok +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_complete_cleaning +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_complete_cleaning ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_node_id +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_node_id ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue_config +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue_config ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_node_id_that_does_not_exist +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_node_id_that_does_not_exist ... ok +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_two_nodes_with_fgi_status_none +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_two_nodes_with_fgi_status_none ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue_iso +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue_iso ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_volume_id +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_volume_id ... ok +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_two_nodes_without_raid_config +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_two_nodes_without_raid_config ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_volume_id_that_does_not_exist +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_volume_id_that_does_not_exist ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_empty +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_empty ... ok +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_fgi_status +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_fgi_status ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_empty_no_path +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_empty_no_path ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_duplicated_nodeid_and_bootindex +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_duplicated_nodeid_and_bootindex ... ok +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_input +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_input ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_fails_invalid_id +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_fails_invalid_id ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_none +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_none ... ok +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_node +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_node ... ok +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_uuid +ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_uuid ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_string_type +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_string_type ... ok +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_raid_config +ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_raid_config ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_floppy_image_name +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_floppy_image_name ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__is_expected_power_state +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__is_expected_power_state ... ok +ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_cd +ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_cd ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_invalid_target_state +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_invalid_target_state ... ok +ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_disk +ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_disk ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__prepare_floppy_image +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__prepare_floppy_image ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_power_off_ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_power_off_ok ... ok +ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_floppy +ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_floppy ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__prepare_floppy_image_use_webserver +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__prepare_floppy_image_use_webserver ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_power_on_ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_power_on_ok ... ok +ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_persistent +ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_persistent ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_reboot_ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_reboot_ok ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_None +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_None ... ok +ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test_validate_correct_vendor +ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test_validate_correct_vendor ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_scci_exception +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_scci_exception ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_false +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_false ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_snmp_exception +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_snmp_exception ... ok +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_get_drac_client +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_get_drac_client ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_invalid +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_invalid ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok ... ok +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_raises_ilo_error +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_raises_ilo_error ... ok +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_invalid_port +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_invalid_port ... ok +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_invalid_protocol +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_invalid_protocol ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_soft_power_off +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_soft_power_off ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_true +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_true ... ok +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_host +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_host ... ok +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_password +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_password ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_soft_reboot +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_soft_reboot ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_true_default +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_true_default ... ok +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_path +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_path ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_attach_vmedia +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_attach_vmedia ... ok +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_port +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_port ... ok +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_timeout +ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_timeout ... ok +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_protocol +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_protocol ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_attach_vmedia_fails +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_attach_vmedia_fails ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__has_vmedia_device +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__has_vmedia_device ... ok +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_username +ironic.tests.unit.drivers.modules.drac.test_common.DracCommonMethodsTestCase.test_parse_driver_info_missing_username ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__has_vmedia_device_inserted +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__has_vmedia_device_inserted ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__calculate_cpus +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__calculate_cpus ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_already_inserted +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_already_inserted ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__calculate_cpus_without_ht_enabled +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__calculate_cpus_without_ht_enabled ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_anew +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_anew ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_exc +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_exc ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_list_boot_setting_failure +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_list_boot_setting_failure ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_bad_device +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_bad_device ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_list_nic_setting_failure +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_list_nic_setting_failure ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_exc_resource_not_found +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_exc_resource_not_found ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_while_ejecting +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_while_ejecting ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_with_BIOS_boot_mode +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_with_BIOS_boot_mode ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__validate_vendor_compatible_with_idrac +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__validate_vendor_compatible_with_idrac ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__validate_vendor_incompatible_with_idrac +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__validate_vendor_incompatible_with_idrac ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_for_webserver +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_for_webserver ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_with_UEFI_boot_mode +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_with_UEFI_boot_mode ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_with_empty_list +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_with_empty_list ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_cdrom_and_floppy +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_cdrom_and_floppy ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__guess_root_disk +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__guess_root_disk ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_only_cdrom +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_only_cdrom ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_get_properties +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_ramdisk +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_ramdisk ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates_default +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates_default ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_ramdisk +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_ramdisk ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates_raises_ilo_error +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates_raises_ilo_error ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_fail +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_fail ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_everything +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_everything ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_swift +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_swift ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_multiple_supported_gpu +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_multiple_supported_gpu ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_not_inserted +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_not_inserted ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_cpu +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_cpu ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_specific +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_specific ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_swift_throws_error_if_swift_operation_fails +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_swift_throws_error_if_swift_operation_fails ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_gpu +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_gpu ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_unknown +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_unknown ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_web_server +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_web_server ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_loading_error +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_loading_error ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_supported_gpu +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_supported_gpu ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_deploy_info +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_deploy_info ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_web_server_fails +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_web_server_fails ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_virtual_disk +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_virtual_disk ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_deploy_info_exc +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_deploy_info_exc ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_destroy_floppy_image_from_web_server +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_destroy_floppy_image_from_web_server ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_deploy +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_deploy ... ok +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_with_existing_ports +ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_with_existing_ports ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_download_file_url +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_download_file_url ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_exc +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_exc ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_clear_job_queue +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_clear_job_queue ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_deploy +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_deploy ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_download_http_url +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_download_http_url ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_boot_device +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_boot_device ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_rescue +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_rescue ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_boot_device_from_driver_internal_info +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_boot_device_from_driver_internal_info ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_eject_vmedia_devices +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_eject_vmedia_devices ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_iso +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_iso ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_properties +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_eject_vmedia_devices_raises +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_eject_vmedia_devices_raises ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_iso_deprecated +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_iso_deprecated ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_sensors_data +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_sensors_data ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_current_boot_mode +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_current_boot_mode ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_deploy +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_deploy ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_supported_boot_devices +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_get_supported_boot_devices ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_current_boot_mode_fail +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_current_boot_mode_fail ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_rescue +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_rescue ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_cafile +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_cafile ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_known_good_state +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_known_good_state ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_ramdisk +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_ramdisk ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_cafile_boolean +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_cafile_boolean ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_reset_idrac +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_reset_idrac ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_removable +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_removable ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_snmp +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_snmp ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_removable_deprecated +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_removable_deprecated ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_set_boot_device +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_set_boot_device ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_rescue +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_rescue ... ok +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_set_boot_device_fail +ironic.tests.unit.drivers.modules.drac.test_management.DracManagementTestCase.test_set_boot_device_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_bios +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_bios ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_already_failed_in_clean +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_already_failed_in_clean ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_local_boot_option +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_local_boot_option ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_fail +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_fail ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_already_failed_in_deploy +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_already_failed_in_deploy ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_not_supported +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_not_supported ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_local_whole_disk_image +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_local_whole_disk_image ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_in_clean +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_in_clean ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_in_deploy +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_in_deploy ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state_fail +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state_fail ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_normal_boot +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_normal_boot ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_with_errors_job +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_with_errors_job ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state_not_supported +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state_not_supported ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_failed_job +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_failed_job ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_completed_in_clean +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_completed_in_clean ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift_suppresses_notfound_exc +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift_suppresses_notfound_exc ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_completed_in_deploy +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_completed_in_deploy ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_iso +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_iso ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift_suppresses_operror_exc +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift_suppresses_operror_exc ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_web_server +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_web_server ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_failed_in_clean +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_failed_in_clean ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_single_or_list_of_files_with_file_list +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_single_or_list_of_files_with_file_list ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_iso_boot +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_iso_boot ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_failed_in_deploy +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_failed_in_deploy ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_single_or_list_of_files_with_file_str +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_single_or_list_of_files_with_file_str ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_without_update +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_without_update ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_render_configdrive +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_render_configdrive ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode_with_IloOperationError +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode_with_IloOperationError ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_drac +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_drac ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode_without_set_pending_boot_mode +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode_without_set_pending_boot_mode ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_drac_wsman +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_drac_wsman ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_no_config_jobs_drac +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_no_config_jobs_drac ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_no_config_jobs_drac_wsman +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_no_config_jobs_drac_wsman ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode_fail +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode_fail ... ok +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_no_nodes +ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_no_nodes ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode_not_supported +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode_not_supported ... ok +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_get_power_state +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_get_power_state ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_fast_track +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_fast_track ... ok +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_get_power_state_fail +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_get_power_state_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_persistent_false +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_persistent_false ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_fast_track_impossible +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_fast_track_impossible ... ok +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_get_properties +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_persistent_true +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_persistent_true ... ok +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_retries_fail +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_retries_fail ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_no_config +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_no_config ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_raises_ilo_error +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_raises_ilo_error ... ok +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_retries_power_change_success +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_retries_power_change_success ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_no_debug +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_no_debug ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_raises_not_supported +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_raises_not_supported ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_floppy +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_floppy ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_scheme_http +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_scheme_http ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_params +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_params ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_parameters +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_parameters ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_usb +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_usb ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_boot_iso +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_boot_iso ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_swift +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_swift ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_correct_vendor +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_correct_vendor ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_url +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_url ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_inspection +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_inspection ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_without_params +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_without_params ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_inspection_missing +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_inspection_missing ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_kernel_ramdisk +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_kernel_ramdisk ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_local +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_local ... ok +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_retries_success +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_retries_success ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_capabilities_exist +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_capabilities_exist ... ok +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_missing +ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_missing ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_instance_info_exists +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_instance_info_exists ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_power_state +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_power_state ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_properties +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_legacy +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_legacy ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_supported_power_states +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_supported_power_states ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_prop_boot_mode_exist +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_prop_boot_mode_exist ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_loading_error +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_loading_error ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_unknown +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_unknown ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_fail +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_unknown_except +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_unknown_except ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_fail_on_power_on +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_fail_on_power_on ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_use_def_boot_mode +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_use_def_boot_mode ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_from_power_off +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_from_power_off ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_from_power_on +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_from_power_on ... ok +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_while_powered_off +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_while_powered_off ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_not_reached +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_not_reached ... ok +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_while_powered_on +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_while_powered_on ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state ... ok +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_while_powered_on_timeout +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_reboot_while_powered_on_timeout ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_ipmi_properties +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_ipmi_properties ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_redfish_properties +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_redfish_properties ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_fail +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_not_reached +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_not_reached ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values_invalid_param +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values_invalid_param ... ok +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_validate +ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_validate ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values_no_param +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values_no_param ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_event_service +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_event_service ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_event_service_error +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_event_service_error ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_task_monitor +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_task_monitor ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_throws_for_failed_validation +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_throws_for_failed_validation ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_task_monitor_error +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_task_monitor_error ... ok +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_throws_for_nonexistent_file +ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_throws_for_nonexistent_file ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_update_service +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_update_service ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_fail_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_fail_clean ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_update_service_error +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_update_service_error ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_fail_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_fail_deploy ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_not_supported +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_not_supported ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme_with_port +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme_with_port ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_address +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_address ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_ok ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_auth_type +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_auth_type ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_string_value_verify_ca +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_string_value_verify_ca ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_environment_error_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_environment_error_clean ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_system_id +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_system_id ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_value_verify_ca +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_value_verify_ca ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_environment_error_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_environment_error_deploy ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_missing_info +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_missing_info ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_missing_system_id +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_missing_system_id ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_swift_error_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_swift_error_clean ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_path_verify_ca +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_path_verify_ca ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_auth_type +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_auth_type ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_swift_error_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_swift_error_deploy ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_capath +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_capath ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_string_value_verify_ca +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_string_value_verify_ca ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_unknown_exception_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_unknown_exception_clean ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_with_root_prefix +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_with_root_prefix ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_unknown_exception_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_unknown_exception_deploy ... ok +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_create_subscription +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_create_subscription ... ok +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_delete_subscription +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_delete_subscription ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_with_logs_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_with_logs_clean ... ok +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_eject_vmedia_all +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_eject_vmedia_all ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_with_logs_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_with_logs_deploy ... ok +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_eject_vmedia_cd +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_eject_vmedia_cd ... ok +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_all_subscriptions +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_all_subscriptions ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_without_logs_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_without_logs_clean ... ok +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state ... ok +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_all_subscriptions_empty +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_all_subscriptions_empty ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_without_logs_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_without_logs_deploy ... ok +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state_fail +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state_fail ... ok +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_subscription_does_not_exist +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_subscription_does_not_exist ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_activate_license +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_activate_license ... ok +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_subscription_exists +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_subscription_exists ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_activate_license_no_or_invalid_format_license_key +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_activate_license_no_or_invalid_format_license_key ... ok +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_invalid_delete_subscription +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_invalid_delete_subscription ... ok +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_create_subscription +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_create_subscription ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate ... ok +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_delete_subscription +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_delete_subscription ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_fileurl +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_fileurl ... ok +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_dev +ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_dev ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_httpurl +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_httpurl ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__fail_validation +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__fail_validation ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_iscsi +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_iscsi ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_url_exception +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_url_exception ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_iscsi_and_unknown +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_iscsi_and_unknown ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_multiple_fc_wwns +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_multiple_fc_wwns ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target_failed +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target_failed ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_raises_with_insufficient_data +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_raises_with_insufficient_data ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target_in_bios +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target_in_bios ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_single_path +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_single_path ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_secure_boot_keys +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_secure_boot_keys ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_unknown_raises_excption +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_unknown_raises_excption ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_create_csr +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_create_csr ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_called_with_target_and_connector +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_called_with_target_and_connector ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_flash_firmware_sum_mode_with_component +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_flash_firmware_sum_mode_with_component ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_volumes_fails_without_connectors +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_volumes_fails_without_connectors ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_fail +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_fail ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_volumes_no_volumes +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_volumes_no_volumes ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_next_boot +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_next_boot ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_volumes_failure +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_volumes_failure ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_persistent +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_persistent ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_volumes_failure_no_attach_error +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_volumes_failure_no_attach_error ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_persistent_fail +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_persistent_fail ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_detach_volumes_failure +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_detach_volumes_failure ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_mode +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_mode ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_detach_volumes_failure_raises_exception +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_detach_volumes_failure_raises_exception ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_mode_fail +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_mode_fail ... ok +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state_timeout +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state_timeout ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_should_write_image +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_should_write_image ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_physical_disks +ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_physical_disks ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_properties +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_physical_disks_fail +ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_physical_disks_fail ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fail_on_unknown_volume_types +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fail_on_unknown_volume_types ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_raid_controllers +ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_raid_controllers ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_sensor_data +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_sensor_data ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_raid_controllers_fail +ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_raid_controllers_fail ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_fc_conn_iscsi_target +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_fc_conn_iscsi_target ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_devices +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_devices ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_virtual_disks +ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_virtual_disks ... ok +ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_virtual_disks_fail +ironic.tests.unit.drivers.modules.drac.test_raid.DracQueryRaidConfigurationTestCase.test_list_virtual_disks_fail ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_iscsi_conn_fc_target +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_iscsi_conn_fc_target ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_1___legacy_bios_only_____bios___ +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_1___legacy_bios_only_____bios___ ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_2___uefi_only_____uefi___ +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_2___uefi_only_____uefi___ ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_when_fc_connectors_unequal +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_when_fc_connectors_unequal ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_3___legacy_bios_and_uefi_____uefi____bios___ +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_3___legacy_bios_and_uefi_____uefi____bios___ ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_with_ipxe_not_enabled +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_with_ipxe_not_enabled ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_failure_if_fc_boot_no_connectors +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_failure_if_fc_boot_no_connectors ... ok +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_get_power_state +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_get_power_state ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi_failed +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi_failed ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_failure_if_iscsi_boot_no_connectors +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_failure_if_iscsi_boot_no_connectors ... ok +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_get_properties +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi_not_supported +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi_not_supported ... ok +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_get_supported_power_states +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_get_supported_power_states ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_connectors_and_boot +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_connectors_and_boot ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_bios_to_default +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_bios_to_default ... ok +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_fc_connectors +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_fc_connectors ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo ... ok +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state_fail +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state_fail ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_fc_targets +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_fc_targets ... ok +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state_not_reached +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state_not_reached ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_no_password +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_no_password ... ok +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state_timeout +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_set_power_state_timeout ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_iscsi_connector +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_iscsi_connector ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_ok ... ok +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_validate +ironic.tests.unit.drivers.modules.ibmc.test_power.IBMCPowerTestCase.test_validate ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_iscsi_targets +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_iscsi_targets ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_pass_as_arg_ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_pass_as_arg_ok ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_exception +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_exception ... ok +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_no_settings +ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_no_settings ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_secure_boot_keys_to_default +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_secure_boot_keys_to_default ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_false +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_false ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue +ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_security_parameters_update +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_security_parameters_update ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_true +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_true ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_bad_command_result +ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_bad_command_result ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_create +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_create ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_fail +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_fail ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_exc +ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_exc ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_glance_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_glance_image ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_invalid_device +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_invalid_device ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_missing_command_result +ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_missing_command_result ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_ok ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_http_url +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_http_url ... ok +ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_with_smartnic_port +ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_with_smartnic_port ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_persistent_fail +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_persistent_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_swift_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_swift_image ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__parse_deploy_info +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__parse_deploy_info ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_persistent_true +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_persistent_true ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__validate_driver_info +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__validate_driver_info ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_after_reboot +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_after_reboot ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_mode +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_mode ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__validate_instance_image_info +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__validate_instance_image_info ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_automated_clean_version_mismatch +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_automated_clean_version_mismatch ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_mode_fail +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_mode_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_clean_version_mismatch_fail +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_clean_version_mismatch_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_failed +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_failed ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_inst_info +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_inst_info ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_fail +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_sec_boot_on +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_sec_boot_on ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_in_bios +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_in_bios ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_manual_clean_version_mismatch +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_manual_clean_version_mismatch ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_sec_boot_on_inst_info +ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_sec_boot_on_inst_info ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_missed_properties +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_missed_properties ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_no_step_running +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_no_step_running ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test__configure_vmedia_boot_with_boot_iso +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test__configure_vmedia_boot_with_boot_iso ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_with_auth +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_with_auth ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_old_command +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_old_command ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_boot_from_volume +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_boot_from_volume ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_without_auth +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_without_auth ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_reboot +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_reboot ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_boot_from_volume_bios +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_boot_from_volume_bios ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_auth_failure_logging_threshold +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_auth_failure_logging_threshold ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_running +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_running ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_deleting +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_deleting ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_unknown +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_unknown ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_rescuing +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_rescuing ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_calls_step_foreach_url_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_calls_step_foreach_url_clean ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_ramdisk +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_ramdisk ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_with_hook +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_with_hook ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_calls_step_foreach_url_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_calls_step_foreach_url_deploy ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_with_hook_fails +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_with_hook_fails ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_from_volume +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_from_volume ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_cleans_all_files_if_exc_thrown_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_cleans_all_files_if_exc_thrown_clean ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_from_volume_bios +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_from_volume_bios ... ok +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_manual_cleaning +ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_manual_cleaning ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_agent_get_steps +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_agent_get_steps ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_ramdisk +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_ramdisk ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_cleans_all_files_if_exc_thrown_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_cleans_all_files_if_exc_thrown_deploy ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_agent_get_steps_deploy +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_agent_get_steps_deploy ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_partition_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_partition_image ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_doesnt_update_any_if_any_url_fails_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_doesnt_update_any_if_any_url_fails_clean ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_whole_disk_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_whole_disk_image ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_doesnt_update_any_if_any_url_fails_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_doesnt_update_any_if_any_url_fails_deploy ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_checksum_validation_error_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_checksum_validation_error_clean ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_cleaning +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_cleaning ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_checksum_validation_error_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_checksum_validation_error_deploy ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step_running +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step_running ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_invalid_component_type_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_invalid_component_type_clean ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_in_takeover +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_in_takeover ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step_version_mismatch +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step_version_mismatch ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_invalid_component_type_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_invalid_component_type_deploy ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_deploy_step +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_deploy_step ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_a_glance_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_a_glance_image ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_no_firmware_url_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_no_firmware_url_clean ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_find_step +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_find_step ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_a_glance_image_cleaning +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_a_glance_image_cleaning ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_no_firmware_url_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_no_firmware_url_deploy ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_find_step_not_found +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_find_step_not_found ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_iso +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_iso ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_invalid_update_mode_provided_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_invalid_update_mode_provided_clean ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_deploy_steps +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_deploy_steps ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_deploy_steps_only_oob +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_deploy_steps_only_oob ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_rescue_glance_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_rescue_glance_image ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_invalid_update_mode_provided_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_invalid_update_mode_provided_deploy ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_custom_interface +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_custom_interface ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_sum_mode_with_component +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_sum_mode_with_component ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_rescue_not_a_glance_image +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_rescue_not_a_glance_image ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_missing_steps +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_missing_steps ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_minimum_password_length +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_minimum_password_length ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_override_priorities +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_override_priorities ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_validate +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_validate ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_boot_from_volume +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_boot_from_volume ... ok +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_override_priorities_none +ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_override_priorities_none ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_invalid_component_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_invalid_component_clean ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_fail_agent_token_required +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_fail_agent_token_required ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_inspection +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_inspection ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_fail_all_attempts +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_fail_all_attempts ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_inspection_missing +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_inspection_missing ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_invalid_component_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_invalid_component_deploy ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_succeed_after_one_timeout +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_succeed_after_one_timeout ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_succeed_after_two_timeouts +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_succeed_after_two_timeouts ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_glance +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_glance ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_swift_url_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_swift_url_clean ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_bios +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_bios ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_bios_default +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_bios_default ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_webserver +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_webserver ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_swift_url_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_swift_url_deploy ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_default +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_default ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_webserver_exc +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_webserver_exc ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_default_set +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_default_set ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_without_component_clean +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_without_component_clean ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_capabilities +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_capabilities ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_without_component_deploy +ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_without_component_deploy ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info_cap +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info_cap ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info_secure_boot +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info_secure_boot ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue_deprecated +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue_deprecated ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__attach_boot_iso_if_needed +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__attach_boot_iso_if_needed ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_uefi +ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_uefi ... ok +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue_no_rescue_ramdisk +ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue_no_rescue_ramdisk ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__ensure_console_pid_dir_exists +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__ensure_console_pid_dir_exists ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__attach_boot_iso_if_needed_on_rebuild +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__attach_boot_iso_if_needed_on_rebuild ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__ensure_console_pid_dir_exists_fail +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__ensure_console_pid_dir_exists_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_console.IloConsoleInterfaceTestCase.test_validate +ironic.tests.unit.drivers.modules.ilo.test_console.IloConsoleInterfaceTestCase.test_validate ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state_fail +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state_fail ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_dir +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_dir ... ok +ironic.tests.unit.drivers.modules.ilo.test_console.IloConsoleInterfaceTestCase.test_validate_exc +ironic.tests.unit.drivers.modules.ilo.test_console.IloConsoleInterfaceTestCase.test_validate_exc ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_dir_tempdir +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_dir_tempdir ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_invalid_state +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_invalid_state ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_get_properties +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_file +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_file ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_file_not_found +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_file_not_found ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_capabilities_exist_ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_capabilities_exist_ok ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_not_a_num +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_not_a_num ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_capabilities_ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_capabilities_ok ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_exception +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_exception ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok_local_gb_zero +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok_local_gb_zero ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok_power_off +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok_power_off ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_ok_gen10 +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_ok_gen10 ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_ok_gen8 +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_ok_gen8 ... ok +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_validate +ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_validate ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_forced_kill +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_forced_kill ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_nopid +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_nopid ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_clear_flag +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_clear_flag ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_shellinabox_not_running +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_shellinabox_not_running ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_ilo_operation_error +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_ilo_operation_error ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_default +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_default ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_ilo_operation_not_supported +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_ilo_operation_not_supported ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_hostname +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_hostname ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_completed +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_completed ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_ipv4 +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_ipv4 ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_ipv6 +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_ipv6 ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_ilo_error +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_ilo_error ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_no_free_ports +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_no_free_ports ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_off_fail +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_off_fail ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_range_retry +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_range_retry ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_erase_pattern_zero +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_erase_pattern_zero ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_success +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_success ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_device_type_erase_pattern +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_device_type_erase_pattern ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_shellinabox_console_https_url +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_shellinabox_console_https_url ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_shellinabox_console_url +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_shellinabox_console_url ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_erase_pattern +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_erase_pattern ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp6 +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp6 ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_format_erase_pattern +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_format_erase_pattern ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp_with_address_conf +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp_with_address_conf ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_invalid_console_port_range +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_invalid_console_port_range ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_ssd +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_ssd ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_make_persistent_password_file +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_make_persistent_password_file ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_make_persistent_password_file_fail +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_make_persistent_password_file_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_ssd_when_hdd_done +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_ssd_when_hdd_done ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_when_no_drive_available +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_when_no_drive_available ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_one_button_secure_erase +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_one_button_secure_erase ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail_no_pid +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail_no_pid ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_on_ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_on_ok ... ok +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_one_button_secure_erase_ilo_error +ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_one_button_secure_erase_ilo_error ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail_nopiddir +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail_nopiddir ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_power_state +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_power_state ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_reboot_fail +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_reboot_fail ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_nopid +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_nopid ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_properties +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_timeout +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_timeout ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_supported_power_states +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_supported_power_states ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_bind_addr_default_ipv4 +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_bind_addr_default_ipv4 ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_reboot_no_timeout +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_reboot_no_timeout ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_bind_addr_ipv4 +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_bind_addr_ipv4 ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_reboot_with_timeout +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_reboot_with_timeout ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_default_timeout +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_default_timeout ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_set_power_state_no_timeout +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_set_power_state_no_timeout ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_timeout +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_timeout ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_set_power_state_timeout +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_set_power_state_timeout ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_timeout_disabled +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_timeout_disabled ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_validate +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_validate ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_fail +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_fail ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_validate_fail +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_validate_fail ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_fail_nopiddir +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_fail_nopiddir ... ok ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_invalid_state ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_invalid_state ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_nopid +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_nopid ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_shellinabox_console +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_shellinabox_console ... ok ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_maintenance ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_maintenance ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_reboot_ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_reboot_ok ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_shellinabox_console_fail_nopid +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_shellinabox_console_fail_nopid ... ok ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_manage ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_manage ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_fail +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_fail ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_socat_console +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_socat_console ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_socat_console_fail_nopid +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_socat_console_fail_nopid ... ok ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_missing_boot_iso_href ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_missing_boot_iso_href ... ok +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_valid_console_port_range +ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_valid_console_port_range ... ok ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_is_it_a_supported_system ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_is_it_a_supported_system ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_over_limit -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_over_limit ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_agent_add_clean_params +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_agent_add_clean_params ... ok ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_is_it_a_supported_system_exception ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_is_it_a_supported_system_exception ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_build_agent_options_conf +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_build_agent_options_conf ... ok ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_boot_into_iso ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_boot_into_iso ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait_node_not_found -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait_node_not_found ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait_not_found -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait_not_found ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_by_node_id -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_by_node_id ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_build_agent_options_keystone +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_build_agent_options_keystone ... ok ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_validate_boot_into_iso ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_validate_boot_into_iso ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_empty -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_empty ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_no_force_raw +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_no_force_raw ... ok ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_validate_create_subscription ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_validate_create_subscription ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_node_not_exist -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_node_not_exist ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_no_stream +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_no_stream ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_partition +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_partition ... ok ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_validate_operation_exeption ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_validate_operation_exeption ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_exists -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_exists ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_node_not_exist -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_node_not_exist ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_true +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_true ... ok +ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_apply_configuration +ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_apply_configuration ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning ... ok +ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_apply_configuration_failed +ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_apply_configuration_failed ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_broken_fast_track +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_broken_fast_track ... ok +ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_cache_bios_settings +ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_cache_bios_settings ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_fast_track +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_fast_track ... ok +ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_cache_bios_settings_failed +ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_cache_bios_settings_failed ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_manage_boot_false +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_manage_boot_false ... ok +ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_factory_reset +ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_factory_reset ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning ... ok +ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_validate +ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_validate ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_cd_fail +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_cd_fail ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_cleaning_error +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_cleaning_error ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_cd_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_cd_ok ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_fast_track +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_fast_track ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_fd_fail +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_fd_fail ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_manage_boot_false +ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_manage_boot_false ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_fd_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_fd_ok ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_get_async_step_return_state_cleaning +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_get_async_step_return_state_cleaning ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__cleanup_vmedia_boot_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__cleanup_vmedia_boot_ok ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_get_async_step_return_state_deploying +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_get_async_step_return_state_deploying ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_cd_fail +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_cd_fail ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_cleaning_set_all +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_cleaning_set_all ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_cd_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_cd_ok ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_cleaning_set_one +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_cleaning_set_one ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_clears_non_pregenerated_token +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_clears_non_pregenerated_token ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_fd_fail +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_fd_fail ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_deploying_set_all +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_deploying_set_all ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_fd_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_fd_ok ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__get_floppy_image_name +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__get_floppy_image_name ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_deploying_set_one +ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_deploying_set_one ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_all_supported_capabilities +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_all_supported_capabilities ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__get_iso_name +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__get_iso_name ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_config_option +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_config_option ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_nothing_set +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_nothing_set ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_config_option_non_existed_root +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_config_option_non_existed_root ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_nothing_set_bios_mode +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_nothing_set_bios_mode ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_uefi_mode +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_uefi_mode ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_false +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_false ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_invalid +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_invalid ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_true +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_true ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_capabilities +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_capabilities ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_capabilities_string +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_capabilities_string ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_invalid_type +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_invalid_type ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_deprecated +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_deprecated ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_instance_info +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_instance_info ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_in_share +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_in_share ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_instance_info_with_exc +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_instance_info_with_exc ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_with_exc +ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_with_exc ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params_in_conf +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params_in_conf ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params_in_driver_info +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params_in_driver_info ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_file_image +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_file_image ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_not_in_share +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_not_in_share ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_with_iso_invalid +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_with_iso_invalid ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_force_raw +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_force_raw ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_with_iso_missing +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_with_iso_missing ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_deprecated +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_deprecated ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_force_raw_drops_md5 +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_force_raw_drops_md5 ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_file_name_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_file_name_ok ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_file_url_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_file_url_ok ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_glance_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_glance_ok ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_http_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_http_ok ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_via_dinfo +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_via_dinfo ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_https_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_https_ok ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_invalid +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_invalid ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_via_iinfo +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_via_iinfo ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_uuid_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_uuid_ok ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_without_boot_iso_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_without_boot_iso_ok ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_no_force_raw +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_no_force_raw ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__find_param +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__find_param ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_create_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_create_ok ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__find_param_not_found +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__find_param_not_found ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_fetch_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_fetch_ok ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bios +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bios ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_file +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_file ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_floppy_image +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_floppy_image ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_file +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_file ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_timeout +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_timeout ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_floppy_image_exception +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_floppy_image_exception ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_from_swift +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_from_swift ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_off +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_off ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__remove_share_file +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__remove_share_file ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_swift_noop +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_swift_noop ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_for_boot_with_parameters +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_for_boot_with_parameters ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_swift_schema +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_swift_schema ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_for_boot_without_parameters +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_for_boot_without_parameters ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_with_instance_info +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_with_instance_info ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_with_file_deploy +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_with_file_deploy ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_default_boot_mode +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_default_boot_mode ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_with_file_rescue +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_with_file_rescue ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_extra_params +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_extra_params ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed_deprecated +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed_deprecated ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_defaults +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_defaults ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed_on_rebuild +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed_on_rebuild ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_driver_info +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_driver_info ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_check_share_fs_mounted_exception +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_check_share_fs_mounted_exception ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_check_share_fs_mounted_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_check_share_fs_mounted_ok ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_driver_info_bios +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_driver_info_bios ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_parse_deploy_info_ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_parse_deploy_info_ok ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_bios +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_bios ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_setup_vmedia_with_image_service_deploy +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_setup_vmedia_with_image_service_deploy ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_cleaning +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_cleaning ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_setup_vmedia_with_image_service_rescue +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_setup_vmedia_with_image_service_rescue ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_uefi +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_uefi ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_clean_up_instance +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_clean_up_instance ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_uefi +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_uefi ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_instance +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_instance ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_cleanup_floppy_image +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_cleanup_floppy_image ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_cleanup_iso_image +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_cleanup_iso_image ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_ramdisk_with_backup_bios +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_ramdisk_with_backup_bios ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_boot_iso +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_boot_iso ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_ramdisk_without_backup_bios +ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_ramdisk_without_backup_bios ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IsImageHrefOrdinaryFileNameTestCase.test_is_image_href_ordinary_file_name_false +ironic.tests.unit.drivers.modules.irmc.test_boot.IsImageHrefOrdinaryFileNameTestCase.test_is_image_href_ordinary_file_name_false ... ok +ironic.tests.unit.drivers.modules.irmc.test_boot.IsImageHrefOrdinaryFileNameTestCase.test_is_image_href_ordinary_file_name_true +ironic.tests.unit.drivers.modules.irmc.test_boot.IsImageHrefOrdinaryFileNameTestCase.test_is_image_href_ordinary_file_name_true ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_boot_iso_user_supplied +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_boot_iso_user_supplied ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_get_irmc_client +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_get_irmc_client ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_get_irmc_report +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_get_irmc_report ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_auth_method +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_auth_method ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image_binary_url +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image_binary_url ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_port +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_port ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image_url +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image_url ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_sensor_method +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_sensor_method ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_disable +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_disable ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_enable +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_enable ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_existing_iso +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_existing_iso ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_fail +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_fail ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_existing_iso_vendor_prefix +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_existing_iso_vendor_prefix ... ok +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_update_ipmi_properties +ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_update_ipmi_properties ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_external_ip +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_external_ip ... ok +ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__get_mac_addresses +ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__get_mac_addresses ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_network_data +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_network_data ... ok +ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware +ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_tls +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_tls ... ok +ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware_exception +ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware_exception ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image_file +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image_file ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config_corrupted +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config_corrupted ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image_prefix +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image_prefix ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config_failed +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config_failed ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_publish_with_config_external_http_url +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_publish_with_config_external_http_url ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config_failed +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config_failed ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_publish_with_node_external_http_url +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_publish_with_node_external_http_url ... ok +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config_skipped +ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config_skipped ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_with_external_ip +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_with_external_ip ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_clean_up +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_clean_up ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_fast_track +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_fast_track ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_on +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_on ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_storage_should_write_image_false +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_storage_should_write_image_false ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_with_deployment_reboot +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_with_deployment_reboot ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_clean_steps +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_clean_steps ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_clean_steps_config_priority +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_clean_steps_config_priority ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_properties +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_properties ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_active_and_unrescue_states +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_active_and_unrescue_states ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_adopting +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_adopting ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_boot_from_volume +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_boot_from_volume ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning_fast_track +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning_fast_track ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning_manage_agent_boot_false +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning_manage_agent_boot_false ... ok +ironic.tests.unit.drivers.modules.test_inspector.GetClientTestCase.test__get_client +ironic.tests.unit.drivers.modules.test_inspector.GetClientTestCase.test__get_client ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_fast_track +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_fast_track ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_localboot +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_localboot ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_no_manage_agent_boot +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_no_manage_agent_boot ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_partition_image +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_partition_image ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_partition_localboot_ppc64 +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_partition_localboot_ppc64 ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_storage_should_write_image_with_smartnic +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_storage_should_write_image_with_smartnic ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_manage_agent_boot_false +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_manage_agent_boot_false ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_rescue_states +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_rescue_states ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_storage_write_false +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_storage_write_false ... ok +ironic.tests.unit.drivers.modules.test_inspector.GetClientTestCase.test__get_client_connection_problem +ironic.tests.unit.drivers.modules.test_inspector.GetClientTestCase.test__get_client_connection_problem ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_with_neutron_net +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_with_neutron_net ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_with_smartnic_port +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_with_smartnic_port ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok_initial_power_off +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok_initial_power_off ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_cleaning +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_cleaning ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_cleaning_manage_agent_boot_false +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_cleaning_manage_agent_boot_false ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_with_smartnic_port +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_with_smartnic_port ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_driver_info_manage_agent_boot_false +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_driver_info_manage_agent_boot_false ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_file_image_no_checksum +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_file_image_no_checksum ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_instance_info_missing_params +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_instance_info_missing_params ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_image_type +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_image_type ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_proxies +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_proxies ... ok +ironic.tests.unit.drivers.modules.test_inspector.GetClientTestCase.test__get_client_standalone +ironic.tests.unit.drivers.modules.test_inspector.GetClientTestCase.test__get_client_standalone ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_root_device_hints +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_root_device_hints ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_instance +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_instance ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_root_device_hints_iinfo +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_root_device_hints_iinfo ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_checksum +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_checksum ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_checksum_os_algo +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_checksum_os_algo ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_algo +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_algo ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_checksum +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_checksum ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_ramdisk +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_ramdisk ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_image_hash +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_image_hash ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_ramdisk_rescue +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_ramdisk_rescue ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_storage_should_write_image_false +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_storage_should_write_image_false ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_get_properties +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_image_source_is_url +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_image_source_is_url ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_active +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_active ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_partition_image +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_partition_image ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_render_configdrive +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_render_configdrive ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_iscsi +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_iscsi ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_with_no_proxy_without_proxies +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_with_no_proxy_without_proxies ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_iscsi_bios +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_iscsi_bios ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_with_proxies +ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_with_proxies ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_ramdisk +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_ramdisk ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size ... ok +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_timeout +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_timeout ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_fail +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_fail ... ok +ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_default_interfaces +ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_default_interfaces ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_fail_by_agent_consumed_memory +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_fail_by_agent_consumed_memory ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk_bios +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk_bios ... ok +ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_agent_rescue +ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_agent_rescue ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_disabled +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_disabled ... ok +ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_cinder_storage +ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_cinder_storage ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk_with_kernel_arg +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk_with_kernel_arg ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled ... ok +ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_shellinabox +ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_shellinabox ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled_format_qcow2 +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled_format_qcow2 ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_with_fallback +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_with_fallback ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_clean_up_instance ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_clean_up_instance ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_not_exists -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_not_exists ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled_format_raw +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled_format_raw ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_without_memory_mb +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_without_memory_mb ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_clean_up_ramdisk ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_clean_up_ramdisk ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_at_limit -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_at_limit ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_duplicate -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_duplicate ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_http_image +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_http_image ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_cleaning +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_cleaning ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_invalid_image_download_source +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_invalid_image_download_source ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_invalid_image_download_source2 +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_invalid_image_download_source2 ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_clean_up_ramdisk_rescue ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_clean_up_ramdisk_rescue ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_swift +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_swift ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_get_properties ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_get_properties ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_node_not_exist -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_node_not_exist ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_over_limit -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_over_limit ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_file +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_file ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_empty_node_traits -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_empty_node_traits ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_swift_whole_disk_image +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_swift_whole_disk_image ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_local_http +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_local_http ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_local_via_node +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_local_via_node ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_active ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_active ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_node_traits -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_node_traits ... ok -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_node_traits_node_not_exist -ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_node_traits_node_not_exist ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_create_port_duplicated_address -ironic.tests.unit.db.test_ports.DbPortTestCase.test_create_port_duplicated_address ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_with_copy_file_different +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_with_copy_file_different ... ok +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_not_http +ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_not_http ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_kickstart ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_kickstart ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_create_port_duplicated_uuid -ironic.tests.unit.db.test_ports.DbPortTestCase.test_create_port_duplicated_uuid ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_destroy_port -ironic.tests.unit.db.test_ports.DbPortTestCase.test_destroy_port ... ok +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_clean_up +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_clean_up ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_with_copy_no_file +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_with_copy_no_file ... ok +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_kickstart_bios ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_kickstart_bios ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_without_copy +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_without_copy ... ok +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_fast_track +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_fast_track ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_ramdisk_pxe_conf_exists ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_ramdisk_pxe_conf_exists ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_owner -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_owner ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_owner_no_match -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_owner_no_match ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_rescue +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_rescue ... ok +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_storage_should_write_image_false +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_storage_should_write_image_false ... ok +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_with_deployment_reboot +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_with_deployment_reboot ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_ramdisk_pxe_conf_missing ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_ramdisk_pxe_conf_missing ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_project -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_project ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_project_no_match -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_project_no_match ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_not_called +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_not_called ... ok +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_get_properties +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_get_properties ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_id -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_id ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_name -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_name ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_uuid -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_uuid ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_filter_by_node_owner -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_filter_by_node_owner ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_filter_by_node_project -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_filter_by_node_project ... ok +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_prepare +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_prepare ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_bm +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_bm ... ok +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_prepare_fast_track +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_prepare_fast_track ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_bios ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_bios ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_sorted -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_sorted ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic ... ok +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_validate +ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_validate ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_cleaning ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_cleaning ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_owner -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_owner ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_owner_no_match -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_owner_no_match ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning_fails +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning_fails ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_conflicting_boot_modes ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_conflicting_boot_modes ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_project -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_project ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_project_no_match -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_project_no_match ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning_polling +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning_polling ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_that_does_not_exist -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_that_does_not_exist ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_deploy_first_run +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_deploy_first_run ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_deploy_second_run +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_deploy_second_run ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_uefi +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_uefi ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_rescue ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_rescue ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_owner -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_owner ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_deploy_done_raises_with_event +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_deploy_done_raises_with_event ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_missing_deploy_kernel +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_missing_deploy_kernel ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_deploy_fails +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_deploy_fails ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_missing_deploy_ramdisk +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_missing_deploy_ramdisk ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_rescue_bios ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_rescue_bios ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_owner_no_match -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_owner_no_match ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_project -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_project ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_no_port +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_no_port ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_in_maintenance +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_in_maintenance ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_boot_mode_not_called ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_boot_mode_not_called ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_project_no_match -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_project_no_match ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_good +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_good ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_good_whole_disk_image +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_good_whole_disk_image ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_boot_mode_on_bm ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_boot_mode_on_bm ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_that_does_not_exist -ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_that_does_not_exist ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port -ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_in_maintenance_abort +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_in_maintenance_abort ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_inspection +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_inspection ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port_duplicated_address -ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port_duplicated_address ... ok -ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port_uuid -ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port_uuid ... ok -ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_default_dhcp -ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_default_dhcp ... ok -ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_dhcp_some_error -ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_dhcp_some_error ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_inspection_no_inspection_ramdisk +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_inspection_no_inspection_ramdisk ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_noops_in_wrong_state +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_noops_in_wrong_state ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_no_image_source_for_local_boot +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_no_image_source_for_local_boot ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios ... ok -ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_only_one_dhcp -ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_only_one_dhcp ... ok -ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_bad_dhcp -ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_bad_dhcp ... ok -ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_neutron_dhcp -ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_neutron_dhcp ... ok -ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_none_dhcp -ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_none_dhcp ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_noops_in_wrong_state2 +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_noops_in_wrong_state2 ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_skip_check_write_image_false +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_skip_check_write_image_false ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_polling +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_polling ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_invalid_ip -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_invalid_ip ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_ipv6 -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_ipv6 ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_with_boot_iso +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_with_boot_iso ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_cleaning_deploying +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_cleaning_deploying ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_with_boot_iso_and_image_source +ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_with_boot_iso_and_image_source ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_uefi ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_uefi ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_with_exception -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_with_exception ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_fast_track +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_fast_track ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_maintenance +ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_maintenance ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_fail_missing_deploy_kernel ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_fail_missing_deploy_kernel ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_ip_addresses_portgroup_int_info -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_ip_addresses_portgroup_int_info ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_not_retry_with_token +ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_not_retry_with_token ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_fail_missing_deploy_ramdisk ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_fail_missing_deploy_ramdisk ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_ip_addresses_ports_int_info -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_ip_addresses_ports_int_info ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_fast_track_via_driver_info +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_fast_track_via_driver_info ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_recent_power_change +ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_recent_power_change ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_fail_no_port ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_fail_no_port ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_cleaning -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_cleaning ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_rescue +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_rescue ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_retry +ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_retry ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_good ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_good ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_for_portgroup -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_for_portgroup ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_rescue_fails +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_rescue_fails ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_wrong_state +ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_wrong_state ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_good_whole_disk_image ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_good_whole_disk_image ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_for_portgroup_with_exception -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_for_portgroup_with_exception ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_provisioning -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_provisioning ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_clean +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_clean ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_timeouts +ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_timeouts ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_inspection ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_inspection ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_tenant -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_tenant ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test___init__ +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test___init__ ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_clean_fails +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_clean_fails ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_inspection_no_inspection_ramdisk ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_inspection_no_inspection_ramdisk ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_with_exception -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_with_exception ... ok +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_with_reservation +ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_with_reservation ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v1_read +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v1_read ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_kickstart_fail_http_url_not_set ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_kickstart_fail_http_url_not_set ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_get_ip_addresses -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_get_ip_addresses ... ok +ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps +ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_kickstart_missing_stage2_id ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_kickstart_missing_stage2_id ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_get_ip_addresses_for_port_and_portgroup -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_get_ip_addresses_for_port_and_portgroup ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v1_write +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v1_write ... ok +ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_busy +ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_busy ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_no_image_source_for_local_boot ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_no_image_source_for_local_boot ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp ... ok +ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_deploy +ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_deploy ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_non_local ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_non_local ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_fails -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_fails ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_no_vif_data -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_no_vif_data ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v3 +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v3 ... ok +ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_missing_interface +ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_missing_interface ... ok ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_skip_check_write_image_false ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_skip_check_write_image_false ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_set_sleep_and_fake -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_set_sleep_and_fake ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__cleanup_boot_from_volume -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__cleanup_boot_from_volume ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_some_failures -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_some_failures ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_apply_error -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_apply_error ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_unset_sleep_and_fake -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_unset_sleep_and_fake ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_fc -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_fc ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_v4_and_v6 -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_v4_and_v6 ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_v6 -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_v6 ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi_chap -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi_chap ... ok -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_with_exception -ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_with_exception ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_abandon_config -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_abandon_config ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi_no_portal_port -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi_no_portal_port ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_abandon_config_fail -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_abandon_config_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_multi_lan_ports -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_multi_lan_ports ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_commit_config -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_commit_config ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_clean_up_instance -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_clean_up_instance ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_commit_config_fail -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_commit_config_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_clean_up_instance_error -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_clean_up_instance_error ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_commit_config_with_reboot -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_commit_config_with_reboot ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_prepare_instance -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_prepare_instance ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_get_config -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_get_config ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_prepare_ramdisk_skip -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_prepare_ramdisk_skip ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_get_config_fail -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_get_config_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_invalid_physical_id_in_lan_port -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_invalid_physical_id_in_lan_port ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_set_config -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_set_config ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi ... ok -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_set_config_fail -ironic.tests.unit.drivers.modules.drac.test_bios.DracBIOSConfigurationTestCase.test_set_config_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__calculate_cpus -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__calculate_cpus ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__calculate_cpus_without_ht_enabled -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__calculate_cpus_without_ht_enabled ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_invalid_netmask -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_invalid_netmask ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_list_boot_setting_failure -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_list_boot_setting_failure ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_list_nic_setting_failure -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_list_nic_setting_failure ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_ip -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_ip ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_with_BIOS_boot_mode -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_with_BIOS_boot_mode ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_iqn -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_iqn ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_with_UEFI_boot_mode -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_with_UEFI_boot_mode ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_with_empty_list -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__get_pxe_dev_nics_with_empty_list ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_netmask -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_netmask ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__guess_root_disk -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test__guess_root_disk ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_physical_id -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_physical_id ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_get_properties -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_get_properties ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_too_large_netmask -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_too_large_netmask ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_fail -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_too_small_netmask -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_too_small_netmask ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_multiple_supported_gpu -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_multiple_supported_gpu ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_cpu -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_cpu ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_no_physical_id_in_lan_port -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_no_physical_id_in_lan_port ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_gpu -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_gpu ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IsImageHrefOrdinaryFileNameTestCase.test_is_image_href_ordinary_file_name_false -ironic.tests.unit.drivers.modules.irmc.test_boot.IsImageHrefOrdinaryFileNameTestCase.test_is_image_href_ordinary_file_name_false ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IsImageHrefOrdinaryFileNameTestCase.test_is_image_href_ordinary_file_name_true -ironic.tests.unit.drivers.modules.irmc.test_boot.IsImageHrefOrdinaryFileNameTestCase.test_is_image_href_ordinary_file_name_true ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_get_irmc_client -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_get_irmc_client ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_get_irmc_report -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_get_irmc_report ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_supported_gpu -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_supported_gpu ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_auth_method -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_auth_method ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_port -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_port ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_sensor_method -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_sensor_method ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_virtual_disk -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_no_virtual_disk ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_disable -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_disable ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_enable -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_enable ... ok -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_with_existing_ports -ironic.tests.unit.drivers.modules.drac.test_inspect.DracInspectionTestCase.test_inspect_hardware_with_existing_ports ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_fail -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_job.DracVendorPassthruJobTestCase.test_list_unfinished_jobs -ironic.tests.unit.drivers.modules.drac.test_job.DracVendorPassthruJobTestCase.test_list_unfinished_jobs ... ok -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_update_ipmi_properties -ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_update_ipmi_properties ... ok -ironic.tests.unit.drivers.modules.drac.test_job.DracVendorPassthruJobTestCase.test_list_unfinished_jobs_fail -ironic.tests.unit.drivers.modules.drac.test_job.DracVendorPassthruJobTestCase.test_list_unfinished_jobs_fail ... ok +ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_missing_steps +ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_missing_steps ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test__init_fail_invalid_fpga_ids_input ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test__init_fail_invalid_fpga_ids_input ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_cdrom -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_cdrom ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_context +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_context ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_agent_client +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_agent_client ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test__init_fail_invalid_gpu_ids_input ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test__init_fail_invalid_gpu_ids_input ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_disk_and_bios -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_disk_and_bios ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_disk_and_uefi -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_disk_and_uefi ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_agent_busy +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_agent_busy ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_get_properties ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_get_properties ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_pxe -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__flexibly_program_boot_order_for_pxe ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device_not_persistent -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device_not_persistent ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_agent_busy_conflict +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_agent_busy_conflict ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_okay_error_typeerror_embedded +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_okay_error_typeerror_embedded ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_command_is_running +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_command_is_running ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_custom_retries +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_custom_retries ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_command_not_running +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_command_not_running ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device_with_empty_boot_mode_list -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device_with_empty_boot_mode_list ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device_with_no_boot_device -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_boot_device_with_no_boot_device ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_no_command_running +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_no_command_running ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_wrong_command_running +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_wrong_command_running ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_existing_cap_in_props ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_existing_cap_in_props ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode_list_boot_modes_fail -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode_list_boot_modes_fail ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_json +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_json ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_custom_timeout +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_custom_timeout ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_post +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_post ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_err +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_err ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_inspect_exception ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_inspect_exception ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode_with_empty_boot_mode_list -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode_with_empty_boot_mode_list ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode_with_non_persistent_boot_mode -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__get_next_persistent_boot_mode_with_non_persistent_boot_mode ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__is_boot_order_flexibly_programmable -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__is_boot_order_flexibly_programmable ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_mac_already_exist ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_mac_already_exist ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__is_boot_order_flexibly_programmable_not_persistent -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__is_boot_order_flexibly_programmable_not_persistent ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__is_boot_order_flexibly_programmable_with_no_bios_setting -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test__is_boot_order_flexibly_programmable_with_no_bios_setting ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_err_engine +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_err_engine ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_empty_gpu_ids_fpga_id_sand_existing_cap ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_empty_gpu_ids_fpga_id_sand_existing_cap ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_empty_gpu_ids_fpga_ids ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_empty_gpu_ids_fpga_ids ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_no_change -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_no_change ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_err_transport +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_err_transport ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_gpu_and_cpu_fpgas_results_are_different ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_gpu_and_cpu_fpgas_results_are_different ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_no_drac_boot_device -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_no_drac_boot_device ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_gpu_cpu_fpgas_zero_and_existing_cap ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_gpu_cpu_fpgas_zero_and_existing_cap ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_not_flexibly_programmable -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_not_flexibly_programmable ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_unknown_boot_mode -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_called_with_unknown_boot_mode ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_pci_gpu_devices_return_zero ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_pci_gpu_devices_return_zero ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_job_not_scheduled -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_job_not_scheduled ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next_err_engine +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next_err_engine ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_trusted_boot_removed ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_trusted_boot_removed ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_list_unfinished_jobs_fail -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_list_unfinished_jobs_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_list_unfinished_jobs_with_clean_step -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_list_unfinished_jobs_with_clean_step ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next_err_transport +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next_err_transport ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_with_power_off ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_with_power_off ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_list_unfinished_jobs_without_clean_step -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_list_unfinished_jobs_without_clean_step ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_multiple_unfinished_jobs_with_clean_step -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_multiple_unfinished_jobs_with_clean_step ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_validate ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_validate ... ok -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_multiple_unfinished_jobs_without_clean_step -ironic.tests.unit.drivers.modules.drac.test_management.DracManagementInternalMethodsTestCase.test_set_boot_device_with_multiple_unfinished_jobs_without_clean_step ... ok ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_validate_fail ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_validate_fail ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_get_properties -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_get_properties ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_already_failed_in_clean -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_already_failed_in_clean ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_exception -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_exception ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_already_failed_in_deploy -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_already_failed_in_deploy ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_ipmitool_ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_ipmitool_ok ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_in_clean -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_in_clean ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ng -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ng ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_in_deploy -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_job_in_deploy ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ok ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_supported_boot_devices -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_supported_boot_devices ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_with_errors_job -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_completed_with_errors_job ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_inject_nmi_fail -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_inject_nmi_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_failed_job -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_failed_job ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_completed_in_clean -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_completed_in_clean ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_inject_nmi_ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_inject_nmi_ok ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_completed_in_deploy -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_completed_in_deploy ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_restore_irmc_bios_config -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_restore_irmc_bios_config ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ng -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ng ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_failed_in_clean -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_failed_in_clean ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_failed_in_deploy -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_with_multiple_jobs_failed_in_deploy ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_bios -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_bios ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_without_update -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__check_node_raid_jobs_without_update ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_cdrom -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_cdrom ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_drac -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_drac ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_drac_wsman -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_drac_wsman ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_disk -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_disk ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_no_config_jobs_drac -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_no_config_jobs_drac ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_no_config_jobs_drac_wsman -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_no_config_jobs_drac_wsman ... ok -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_no_nodes -ironic.tests.unit.drivers.modules.drac.test_periodic_task.DracPeriodicTaskTestCase.test__query_raid_config_job_status_no_nodes ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_pxe -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_pxe ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_2_disk_and_raid_level_1 -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_2_disk_and_raid_level_1 ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_7_disk_and_raid_level_10 -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_7_disk_and_raid_level_10 ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_7_disk_and_raid_level_50 -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_7_disk_and_raid_level_50 ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_safe -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_safe ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_invalid_raid_level -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__calculate_spans_for_invalid_raid_level ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__filter_logical_disks_excelude_all -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__filter_logical_disks_excelude_all ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__filter_logical_disks_nonroot_only -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__filter_logical_disks_nonroot_only ... ok -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate_fail -ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__filter_logical_disks_root_only -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__filter_logical_disks_root_only ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set_err_engine +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set_err_engine ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_with_none_raid_adapter_profile ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_with_none_raid_adapter_profile ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set_err_transport +ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set_err_transport ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_with_raid_level_is_none ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_with_raid_level_is_none ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration_all_steps -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration_all_steps ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration_pending_delete -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration_pending_delete ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_with_raid_level_outside_list ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_with_raid_level_outside_list ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration_with_more_than_min_disks_for_raid_level -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__find_configuration_with_more_than_min_disks_for_raid_level ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_masterswitch +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_masterswitch ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_masterswitchplus +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_masterswitchplus ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_without_raid_level ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_without_raid_level ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__max_volume_size_mb -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__max_volume_size_mb ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_rackpdu +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_rackpdu ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_0 ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_0 ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__validate_volume_size_requested_less_than_actual_size -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__validate_volume_size_requested_less_than_actual_size ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_aten +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_aten ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_1 ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_1 ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_cyberpower +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_cyberpower ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_10 ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_10 ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__validate_volume_size_requested_more_than_actual_size -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__validate_volume_size_requested_more_than_actual_size ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_5 ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_5 ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__volume_usage_per_disk_mb -ironic.tests.unit.drivers.modules.drac.test_raid.DracCreateRaidConfigurationHelpersTestCase.test__volume_usage_per_disk_mb ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default_version +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default_version ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_50 ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_50 ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__change_physical_disk_mode -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__change_physical_disk_mode ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default_version_and_missing_community +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default_version_and_missing_community ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_6 ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_6 ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__commit_to_controllers_with_config_job -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__commit_to_controllers_with_config_job ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__commit_to_controllers_without_config_job -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__commit_to_controllers_without_config_job ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__reset_raid_config -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__reset_raid_config ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__reset_raid_config_fail -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test__reset_raid_config_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_abandon_config -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_abandon_config ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_eatonpower +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_eatonpower ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_driver +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_driver ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_with_physical_disk ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_with_physical_disk ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_abandon_config_fail -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_abandon_config_fail ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_outlet +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_outlet ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_difference_physical_disks_type ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_difference_physical_disks_type ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_change_physical_disk_state -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_change_physical_disk_state ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_version +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_version ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_address +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_address ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_duplicated_physical_disks ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_duplicated_physical_disks ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_clear_foreign_config -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_clear_foreign_config ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_community_snmp_v1 +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_community_snmp_v1 ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_community_snmp_v2c +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_community_snmp_v2c ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_not_enough_valid_disks ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_not_enough_valid_disks ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_clear_foreign_config_fail -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_clear_foreign_config_fail ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_driver +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_driver ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_outlet +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_outlet ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_incorrect_valid_disks ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_incorrect_valid_disks ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config_fail -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config_fail ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_user +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_user ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_insufficient ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_insufficient ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config_with_realtime -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config_with_realtime ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config_with_reboot -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_commit_config_with_reboot ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_raritan_pdu2 +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_raritan_pdu2 ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_read_community +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_read_community ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_not_enough_disks ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_not_enough_disks ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_create_virtual_disk -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_create_virtual_disk ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_create_virtual_disk_fail -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_create_virtual_disk_fail ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_read_write_community +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_read_write_community ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_outside_valid_disks_1 ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_outside_valid_disks_1 ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_create_virtual_disk_with_optional_attrs -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_create_virtual_disk_with_optional_attrs ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_delete_virtual_disk -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_delete_virtual_disk ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_servertech_sentry3 +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_servertech_sentry3 ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_servertech_sentry4 +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_servertech_sentry4 ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_outside_valid_slots_2 ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_outside_valid_slots_2 ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_delete_virtual_disk_fail -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_delete_virtual_disk_fail ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_port +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_port ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_port_default +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_port_default ... ok ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_without_physical_disks ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_without_physical_disks ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_list_raid_settings -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_list_raid_settings ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v1 +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v1 ... ok +ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_create_raid_with_raid_1_and_0 +ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_create_raid_with_raid_1_and_0 ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v2c +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v2c ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3 +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3 ... ok +ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_create_raid_with_raid_5_and_0 +ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_create_raid_with_raid_5_and_0 ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_badproto +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_badproto ... ok +ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_delete_raid_configuration +ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_delete_raid_configuration ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_default_proto +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_default_proto ... ok +ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_delete_raid_configuration_return_cleared_raid_config +ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_delete_raid_configuration_return_cleared_raid_config ... ok +ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_fail_create_raid_without_target_raid_config +ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_fail_create_raid_without_target_raid_config ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_all_physnets +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_all_physnets ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_key_proto +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_key_proto ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_nokey +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_nokey ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_flat +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_flat ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_short_key +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_short_key ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_neutron +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_neutron ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_compat +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_compat ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_context_engine_id +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_context_engine_id ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_neutron_missed +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_neutron_missed ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_context_name +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_context_name ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_badproto +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_badproto ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_default_proto +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_default_proto ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_matching_physnet +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_matching_physnet ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_key_proto +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_key_proto ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_nokey +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_nokey ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_short_key +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_short_key ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_matching_uuid +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_matching_uuid ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_teltronix +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_teltronix ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_vertivgeist_pdu +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_vertivgeist_pdu ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_write_community +ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_write_community ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_physnets +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_physnets ... ok +ironic.tests.unit.drivers.test_base.TestBootInterface.test_validate_rescue_default_impl +ironic.tests.unit.drivers.test_base.TestBootInterface.test_validate_rescue_default_impl ... ok +WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_default_interfaces +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_default_interfaces ... ok +WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_poll +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_poll ... ok +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_no_vendor +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_no_vendor ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_config +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_config ... ok +WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_idrac +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_idrac ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_disable +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_disable ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_disable_in_driver_info +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_disable_in_driver_info ... ok +WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_inspector +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_inspector ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_internal +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_internal ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_port_physnets +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_port_physnets ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_invalid_file +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_invalid_file ... ok +WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_body +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_body ... ok +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_raid +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_raid ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_url +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_url ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet1 +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet1 ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_url_fail +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_url_fail ... ok +WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_bios +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_bios ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_content_type_header +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_content_type_header ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_execute_clean_step +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_execute_clean_step ... ok +WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_inspect +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_inspect ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet2 +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet2 ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_exc +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_exc ... ok +WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_management_and_power +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_management_and_power ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_fallback +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_fallback ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_fallback_restricted +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_fallback_restricted ... ok +WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet3 +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet3 ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_clean_steps +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_clean_steps ... ok +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_raid +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_raid ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status ... ok +WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_no_retries +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_no_retries ... ok +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_virtual_media_boot +ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_virtual_media_boot ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_port_uuid +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_port_uuid ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_retries +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_retries ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_boot_interface +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_boot_interface ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_verify +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_verify ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_install_bootloader +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_install_bootloader ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_console_interface +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_console_interface ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_portgroup_uuid +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_portgroup_uuid ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_install_bootloader_with_prep +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_install_bootloader_with_prep ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_power_off +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_power_off ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_deploy_interface +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_deploy_interface ... ok +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_sync +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_sync ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_driver_interfaces +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_driver_interfaces ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_portgroup_uuid_attached_vifs +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_portgroup_uuid_attached_vifs ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_get_properties +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ignores_empty_portgroup +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ignores_empty_portgroup ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_exception +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_exception ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_inspect_interface +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_inspect_interface ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_none_requested +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_none_requested ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ignores_standalone_portgroup +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ignores_standalone_portgroup ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_boot_device +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_boot_device ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_unsupported +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_unsupported ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_no_matching_physnets +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_no_matching_physnets ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_indicator_state +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_indicator_state ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_nothing_free +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_nothing_free ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_properties +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_properties ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_exception +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_exception ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_portgroup_first +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_portgroup_first ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_supported_boot_devices +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_supported_boot_devices ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_none_requested +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_none_requested ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_portgroup_physnet_match_first +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_portgroup_physnet_match_first ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_supported_indicators +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_supported_indicators ... ok +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_unsupported +ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_unsupported ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_device_fail +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_device_fail ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_cleaning_vif_port_id +ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_cleaning_vif_port_id ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_device_good +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_device_good ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_physnet_match_first +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_physnet_match_first ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_provisioning_vif_port_id +ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_provisioning_vif_port_id ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_mode_good +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_mode_good ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_physnet_match_first2 +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_physnet_match_first2 ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_vif_port_id +ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_vif_port_id ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_indicator_state_good +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_indicator_state_good ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_pxe_enabled_first +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_pxe_enabled_first ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceImageCacheTestCase.test_with_master_path +ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceImageCacheTestCase.test_with_master_path ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_validate +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_validate ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceImageCacheTestCase.test_without_master_path +ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceImageCacheTestCase.test_without_master_path ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_vif_attached_to_port +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_vif_attached_to_port ... ok +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_power_interface +ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_power_interface ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_vif_attached_to_portgroup +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_vif_attached_to_portgroup ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_image +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_image ... ok +ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_default_interfaces +ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_default_interfaces ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_client +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_client ... ok +ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_get_properties +ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_partition_image +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_partition_image ... ok +ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_get_properties_none +ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_get_properties_none ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_no_client +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_no_client ... ok +ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_supported_interfaces +ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_supported_interfaces ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_partition_image_anaconda +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_partition_image_anaconda ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_no_tenant_vif +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_no_tenant_vif ... ok +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_default_interfaces +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_default_interfaces ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_image_not_found +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_image_not_found ... ok +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_smartnic_port +ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_smartnic_port ... ok +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_agent_rescue +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_agent_rescue ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_image +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_image ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id ... ok +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_bios_configuration +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_bios_configuration ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_partition_image +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_partition_image ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id_portgroup +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id_portgroup ... ok +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_boot_configuration +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_boot_configuration ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_is_a_path +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_is_a_path ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id_raise +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id_raise ... ok +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_inspector +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_inspector ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_redirect +ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_redirect ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__unbind_flat_ports +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__unbind_flat_ports ... ok +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_ipmitool_power +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_ipmitool_power ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_check_interface_capability +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_check_interface_capability ... ok +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_raid_configuration +ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_raid_configuration ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__unbind_flat_ports_portgroup +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__unbind_flat_ports_portgroup ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_get_remote_boot_volume +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_get_remote_boot_volume ... ok +ironic.tests.unit.drivers.test_redfish.RedfishHardwareTestCase.test_default_interfaces +ironic.tests.unit.drivers.test_redfish.RedfishHardwareTestCase.test_default_interfaces ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_get_remote_boot_volume_none +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_get_remote_boot_volume_none ... ok +ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_get_properties +ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_get_properties ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_cleaning_network +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_cleaning_network ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot ... ok +ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_validate_bad_method +ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_validate_bad_method ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_exception +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_exception ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_cleaning_network_from_node +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_cleaning_network_from_node ... ok +ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_validate_valid_methods +ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_validate_valid_methods ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_false +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_false ... ok +ironic.tests.unit.drivers.test_xclarity.XClarityHardwareTestCase.test_default_interfaces +ironic.tests.unit.drivers.test_xclarity.XClarityHardwareTestCase.test_default_interfaces ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_inspection_network +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_inspection_network ... ok +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_create +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_create ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_false_fc_target +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_false_fc_target ... ok +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_delete +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_delete ... ok +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_get +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_get ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_error +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_error ... ok +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_get_by_node_id +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_get_by_node_id ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_inspection_network_from_node +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_inspection_network_from_node ... ok +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_create +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_create ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_fc +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_fc ... ok +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_delete +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_delete ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_provisioning_network +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_provisioning_network ... ok +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_save +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_save ... ok +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_save +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_save ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_iscsi +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_iscsi ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_rescuing_network +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_rescuing_network ... ok +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_sync_node_setting_create_and_update +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_sync_node_setting_create_and_update ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_tear_down_storage_configuration +ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_tear_down_storage_configuration ... ok +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_sync_node_setting_delete_nochange +ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_sync_node_setting_delete_nochange ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_get_node_network_data +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_get_node_network_data ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_list +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_list ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_anaconda_deploy_image_source +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_anaconda_deploy_image_source ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_init_no_cleaning_network +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_init_no_cleaning_network ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_load +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_load ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_boot_iso_conflict +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_boot_iso_conflict ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_refresh +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_refresh ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_missing_stage2_id +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_missing_stage2_id ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_cleaning_network +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_cleaning_network ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_not_authorized +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_not_authorized ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_hardware_interfaces +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_hardware_interfaces ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_cleaning_network_from_node +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_cleaning_network_from_node ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_not_found +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_not_found ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_invalid_image_href +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_invalid_image_href ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group_uppercased +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group_uppercased ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_provisioning_network +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_provisioning_network ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_local_boot +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_local_boot ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group_with_update +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group_with_update ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_rescuing_network +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_rescuing_network ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_nonglance_image +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_nonglance_image ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_update_existing_true +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_update_existing_true ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_with_invalid_group +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_with_invalid_group ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_ramdisk_deploy +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_ramdisk_deploy ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_save +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_save ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_amount_not_satisfied +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_amount_not_satisfied ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_cache_still_large +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_cache_still_large ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_touch +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_touch ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_from_node +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_from_node ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_ensure_cache_size +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_ensure_cache_size ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_unregister +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_unregister ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_ensure_cache_size_with_amount +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_ensure_cache_size_with_amount ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_inspection +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_inspection ... ok +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_unregister_all_hardware_interfaces +ironic.tests.unit.objects.test_conductor.TestConductorObject.test_unregister_all_hardware_interfaces ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_files_with_links_untouched +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_files_with_links_untouched ... ok +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_create +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_create ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_old_deleted +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_old_deleted ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_inspection_exc +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_inspection_exc ... ok +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_destroy +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_destroy ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_old_with_amount +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_old_with_amount ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_cleanup_ordering +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_cleanup_ordering ... ok +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_id +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_id ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_attach +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_attach ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_temp_dir_exception +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_temp_dir_exception ... ok +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_name +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_name ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_temp_images_not_cleaned +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_temp_images_not_cleaned ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_detach +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_detach ... ok +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_uuid +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_uuid ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_both_master_and_dest_out_of_date +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_both_master_and_dest_out_of_date ... ok +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_list +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_list ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_and_master_uptodate +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_and_master_uptodate ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_list +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_list ... ok +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_list_by_names +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_list_by_names ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_and_master_uptodate_no_force_raw +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_and_master_uptodate_no_force_raw ... ok +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_refresh +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_refresh ... ok +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_port_changed +ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_port_changed ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_out_of_date +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_out_of_date ... ok +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_save +ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_save ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_master_out_of_date +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_master_out_of_date ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_cleaning_network ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_cleaning_network ... ok -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_set_raid_settings -ironic.tests.unit.drivers.modules.drac.test_raid.DracManageVirtualDisksTestCase.test_set_raid_settings ... ok +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_create +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_create ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_no_master_dir +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_no_master_dir ... ok +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_create_with_node +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_create_with_node ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_no_master_dir_memory_low +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_no_master_dir_memory_low ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_cleaning_network_from_node ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_cleaning_network_from_node ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_boot_device -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_boot_device ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_boot_mode -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_boot_mode ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_not_uuid +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_not_uuid ... ok +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_destroy +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_destroy ... ok +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_not_uuid_no_force_raw +ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_not_uuid_no_force_raw ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_cleaning_network_with_sg ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_cleaning_network_with_sg ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_properties -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_properties ... ok +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_destroy_with_node +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_destroy_with_node ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__allocate_port +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__allocate_port ... ok +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_get_by_node_uuid +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_get_by_node_uuid ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_inspection_network ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_inspection_network ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_sensors_data -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_sensors_data ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_supported_boot_devices -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_supported_boot_devices ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_cold +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_cold ... ok +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_get_by_uuid +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_get_by_uuid ... ok +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_not_found +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_not_found ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_fail ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_inspection_network_from_node ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_inspection_network_from_node ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_supported_boot_modes -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_get_supported_boot_modes ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_inject_nmi -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_inject_nmi ... ok +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_refresh +ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_refresh ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_ok ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_inspection_network_with_sg ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_inspection_network_with_sg ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_inject_nmi_fail -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_inject_nmi_fail ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_create +ironic.tests.unit.objects.test_port.TestPortObject.test_create ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_debug +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_debug ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_get_bad_id_and_uuid_and_name_and_address +ironic.tests.unit.objects.test_port.TestPortObject.test_get_bad_id_and_uuid_and_name_and_address ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_failed +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_failed ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_provisioning_network ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_provisioning_network ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_device -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_device ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_device_fail -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_device_fail ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_address +ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_address ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_missing_sensor_reading +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_missing_sensor_reading ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_id +ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_id ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_name +ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_name ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_ok ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_provisioning_network_from_node ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_provisioning_network_from_node ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_mode -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_mode ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_uuid +ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_uuid ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_list +ironic.tests.unit.objects.test_port.TestPortObject.test_list ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__release_allocated_port +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__release_allocated_port ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_provisioning_network_with_sg ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_provisioning_network_with_sg ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_mode_fail -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_set_boot_mode_fail ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_list_deprecated_owner +ironic.tests.unit.objects.test_port.TestPortObject.test_list_deprecated_owner ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_detect_vendor +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_detect_vendor ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_payload_schemas +ironic.tests.unit.objects.test_port.TestPortObject.test_payload_schemas ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_rescuing_network ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_rescuing_network ... ok -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_validate -ironic.tests.unit.drivers.modules.ibmc.test_management.IBMCManagementTestCase.test_validate ... ok -ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_get_properties -ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_get_properties ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_refresh +ironic.tests.unit.objects.test_port.TestPortObject.test_refresh ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_dump_sdr_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_dump_sdr_fail ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_save +ironic.tests.unit.objects.test_port.TestPortObject.test_save ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_rescuing_network_from_node ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_rescuing_network_from_node ... ok -ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_list_boot_type_order -ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_list_boot_type_order ... ok -ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_list_raid_controller -ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_list_raid_controller ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_dump_sdr_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_dump_sdr_ok ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_save_after_refresh +ironic.tests.unit.objects.test_port.TestPortObject.test_save_after_refresh ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_rescuing_network_with_sg ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_rescuing_network_with_sg ... ok -ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_validate -ironic.tests.unit.drivers.modules.ibmc.test_vendor.IBMCVendorTestCase.test_validate ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_supports_is_smartnic_supported +ironic.tests.unit.objects.test_port.TestPortObject.test_supports_is_smartnic_supported ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_force_boot_device_persistent +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_force_boot_device_persistent ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_supports_is_smartnic_unsupported +ironic.tests.unit.objects.test_port.TestPortObject.test_supports_is_smartnic_unsupported ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_supports_physical_network_supported +ironic.tests.unit.objects.test_port.TestPortObject.test_supports_physical_network_supported ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_power_state +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_power_state ... ok +ironic.tests.unit.objects.test_port.TestPortObject.test_supports_physical_network_unsupported +ironic.tests.unit.objects.test_port.TestPortObject.test_supports_physical_network_unsupported ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_multiple_ports_one_vif_id ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_multiple_ports_one_vif_id ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance_boot_from_volume -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance_boot_from_volume ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance_boot_from_volume_bios -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance_boot_from_volume_bios ... ok +ironic.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute +ironic.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_power_state_exception +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_power_state_exception ... ok +ironic.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute +ironic.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_no_ports_for_node ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_no_ports_for_node ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance ... ok +ironic.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute_parent_mocked +ironic.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute_parent_mocked ... ok +GOT:Response: 405 Method Not Allowed +Content-Type: application/json +Openstack-Request-Id: req-4ceafb97-6c92-4ba9-980e-bc9b2d8a6d56 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +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}"} +{'links': [{'id': 'port1', 'type': 'vif', 'ethernet_mac_address': '52:54:00:4f:ef:b7', 'vif_id': '96d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb8', 'mtu': 1500}], 'networks': [{'id': '906e685a-b964-4d58-9939-9cf3af197c67', 'network_id': 'a87cc70a-3e15-4acf-8205-9b711a3531b7', 'type': 'ipv6', 'link': 'port1', 'ip_address': 'fd00:203:0:113::2', 'netmask': 'ffff:ffff:ffff:ffff::', 'routes': [{'network': '::0', 'netmask': '::0', 'gateway': 'fd00:203:0:113::1'}]}]} +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_properties +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_properties ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_no_vif_id ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_no_vif_id ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_bios -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_bios ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_force_set_boot_device_ok_bios +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_force_set_boot_device_ok_bios ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_update_fail ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_update_fail ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_boot_from_volume -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_boot_from_volume ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_fail ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_with_client_id ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_with_client_id ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_cleaning -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_cleaning ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_persistent +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_persistent ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_with_portgroups ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_with_portgroups ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_deploying -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_deploying ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_unknown_dev +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_unknown_dev ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_with_portgroups_no_address ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_with_portgroups_no_address ... ok -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_rescuing -ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_rescuing ... ok +Exception ignored in: +Traceback (most recent call last): + File "/usr/lib/python3.11/tempfile.py", line 589, in __del__ + File "/usr/lib/python3.11/tempfile.py", line 585, in close +FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmp6n0jxw1z/tmpe8ti74_6' +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_supported_boot_devices +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_supported_boot_devices ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_get_node_network_data ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_get_node_network_data ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__attach_boot_iso_if_needed -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__attach_boot_iso_if_needed ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_inject_nmi_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_inject_nmi_fail ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_init_incorrect_provisioning_net ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_init_incorrect_provisioning_net ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__attach_boot_iso_if_needed_on_rebuild -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__attach_boot_iso_if_needed_on_rebuild ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_inject_nmi_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_inject_nmi_ok ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_need_power_on_false ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_need_power_on_false ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_no_force_set_boot_device_bios +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_no_force_set_boot_device_bios ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_need_power_on_true ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_need_power_on_true ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state_fail -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state_fail ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_bad_device +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_bad_device ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_cleaning_network ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_cleaning_network ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_exec_failed +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_exec_failed ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_cleaning_network_from_node ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_cleaning_network_from_node ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_invalid_state -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_invalid_state ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_provisioning_network ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_provisioning_network ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_provisioning_network_from_node ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_provisioning_network_from_node ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_rescuing_network ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_rescuing_network ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_ok_bios +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_ok_bios ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_persistent_bios +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_persistent_bios ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks_portgroup_1 ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks_portgroup_1 ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_onetime_smci +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_onetime_smci ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks_portgroup_2 ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks_portgroup_2 ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_persistent +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_persistent ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks_smartnic ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks_smartnic ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_off_fail -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_off_fail ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_persistent_smci +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_persistent_smci ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_unknown_exception +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_unknown_exception ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_inspection ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_inspection ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_1_bios +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_1_bios ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_inspection_exc ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_inspection_exc ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_1_uefi +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_1_uefi ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_rescue ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_rescue ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_2_bios +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_2_bios ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_rescue_exc ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_rescue_exc ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_2_uefi +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_2_uefi ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_attach ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_attach ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_on_ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_on_ok ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_detach ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_detach ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_reboot_fail -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_reboot_fail ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_validate_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_validate_fail ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_list ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_list ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_validate_good +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_validate_good ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_power_validate +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_power_validate ... ok ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_port_changed ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_port_changed ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_clean -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_clean ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_deploy -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_deploy ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_reboot_ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_reboot_ok ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_fail -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_fail ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_pending_create -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_pending_create ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_pending_delete -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_pending_delete ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_storage_controller -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_storage_controller ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid0 -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid0 ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid1 -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid1 ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid5 -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid5 ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid6 -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid6 ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_failed -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_failed ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_still_processing -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_still_processing ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_success -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_success ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_task_mon_error -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_task_mon_error ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__volume_usage_per_disk_bytes_raid10 -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__volume_usage_per_disk_bytes_raid10 ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__volume_usage_per_disk_bytes_raid5 -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__volume_usage_per_disk_bytes_raid5 ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1a -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1a ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b_apply_time_immediate -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b_apply_time_immediate ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b_apply_time_on_reset -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b_apply_time_on_reset ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_2 -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_2 ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_2_on_reset -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_2_on_reset ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_3 -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_3 ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_4 -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_4 ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_5a -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_5a ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_timeout -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_timeout ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_off -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_off ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_5b -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_5b ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_6 -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_6 ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_interface_type -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_interface_type ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_delete_config_immediate -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_delete_config_immediate ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_delete_config_on_reset -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_delete_config_on_reset ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_get_physical_disks -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_get_physical_disks ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_loading_error -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_loading_error ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_update_raid_config_missing_raid_type -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_update_raid_config_missing_raid_type ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_validate_raid_config -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_validate_raid_config ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_validate_raid_config_scsi -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_validate_raid_config_scsi ... ok -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_volume_create_error_handler -ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_volume_create_error_handler ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_multiple_systems -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_multiple_systems ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_access_error_retry -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_access_error_retry ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_attribute_error -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_attribute_error ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_connection_error_retry -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_connection_error_retry ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_on -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_on ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_not_found -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_not_found ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_wait_until_get_system_ready -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_wait_until_get_system_ready ... ok -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_wait_until_get_system_ready_with_connection_error -ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_wait_until_get_system_ready_with_connection_error ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_clean_up -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_clean_up ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_fast_track -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_fast_track ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_storage_should_write_image_false -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_storage_should_write_image_false ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_with_deployment_reboot -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_with_deployment_reboot ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_clean_steps -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_clean_steps ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_clean_steps_config_priority -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_clean_steps_config_priority ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_properties -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_properties ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_active_and_unrescue_states -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_active_and_unrescue_states ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok_initial_power_off -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok_initial_power_off ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_adopting -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_adopting ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_boot_from_volume -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_boot_from_volume ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning_fast_track -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning_fast_track ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning_manage_agent_boot_false -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning_manage_agent_boot_false ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_fast_track -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_fast_track ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_localboot -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_localboot ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_no_manage_agent_boot -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_no_manage_agent_boot ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_partition_image -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_partition_image ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_partition_localboot_ppc64 -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_partition_localboot_ppc64 ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_storage_should_write_image_with_smartnic -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_storage_should_write_image_with_smartnic ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_manage_agent_boot_false -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_manage_agent_boot_false ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_rescue_states -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_rescue_states ... ok -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_timeout -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_timeout ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_storage_write_false -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_storage_write_false ... ok -ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_apply_configuration -ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_apply_configuration ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_with_neutron_net -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_with_neutron_net ... ok -ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_apply_configuration_failed -ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_apply_configuration_failed ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_with_smartnic_port -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_with_smartnic_port ... ok -ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_cache_bios_settings -ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_cache_bios_settings ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down ... ok -ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_cache_bios_settings_failed -ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_cache_bios_settings_failed ... ok -ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_factory_reset -ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_factory_reset ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_cleaning -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_cleaning ... ok -ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_validate -ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_validate ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_cleaning_manage_agent_boot_false -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_cleaning_manage_agent_boot_false ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test__configure_vmedia_boot -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test__configure_vmedia_boot ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_with_smartnic_port -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_with_smartnic_port ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_with_secure_boot -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_with_secure_boot ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_driver_info_manage_agent_boot_false -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_driver_info_manage_agent_boot_false ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_file_image_no_checksum -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_file_image_no_checksum ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_with_secure_boot_false -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_with_secure_boot_false ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_instance_info_missing_params -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_instance_info_missing_params ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_image_type -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_image_type ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_proxies -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_proxies ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_without_secure_boot -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_without_secure_boot ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_root_device_hints -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_root_device_hints ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_ramdisk -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_root_device_hints_iinfo -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_root_device_hints_iinfo ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_partition_image -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_partition_image ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_whole_disk_image -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_whole_disk_image ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_checksum -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_checksum ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_with_secure_boot -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_with_secure_boot ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_checksum_os_algo -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_checksum_os_algo ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_with_secure_boot_false -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_with_secure_boot_false ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_algo -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_algo ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_checksum -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_checksum ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_without_secure_boot -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_without_secure_boot ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_image_hash -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_image_hash ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_storage_should_write_image_false -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_storage_should_write_image_false ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_cleaning -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_cleaning ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_deploying -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_deploying ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_rescuing -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_rescuing ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_image_source_is_url -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_image_source_is_url ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_not_deploying_not_cleaning -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_not_deploying_not_cleaning ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_partition_image -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_partition_image ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_remote_image_share_type_values -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_remote_image_share_type_values ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_render_configdrive -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_render_configdrive ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_with_no_proxy_without_proxies -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_with_no_proxy_without_proxies ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue ... ok -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_with_proxies -ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_with_proxies ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue_no_rescue_ramdisk -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue_no_rescue_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning ... ok -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue_ramdisk_not_exist -ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue_ramdisk_not_exist ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning_fails -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning_fails ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__is_expected_power_state -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__is_expected_power_state ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning_polling -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning_polling ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_invalid_target_state -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_invalid_target_state ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_deploy_first_run -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_deploy_first_run ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_power_off_ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_power_off_ok ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_power_on_ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_power_on_ok ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_deploy_second_run -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_deploy_second_run ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_deploy_done_raises_with_event -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_deploy_done_raises_with_event ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_reboot_ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_reboot_ok ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_scci_exception -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_scci_exception ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_snmp_exception -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_snmp_exception ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_deploy_fails -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_deploy_fails ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_in_maintenance -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_in_maintenance ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_soft_power_off -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_soft_power_off ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_soft_reboot -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_soft_reboot ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_in_maintenance_abort -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_in_maintenance_abort ... ok -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_timeout -ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_timeout ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_cleaning_network -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_cleaning_network ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_noops_in_wrong_state -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_noops_in_wrong_state ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_inspection_network -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_inspection_network ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_provisioning_network -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_provisioning_network ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_noops_in_wrong_state2 -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_noops_in_wrong_state2 ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_configure_tenant_networks -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_configure_tenant_networks ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_polling -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_polling ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_current_vif -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_current_vif ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_node_network_data -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_node_network_data ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_cleaning_deploying -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_cleaning_deploying ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_properties -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_properties ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_fast_track -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_fast_track ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_port_changed -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_port_changed ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_portgroup_changed -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_portgroup_changed ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_fast_track_via_driver_info -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_fast_track_via_driver_info ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_cleaning_network -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_cleaning_network ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_inspection_network -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_inspection_network ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_rescue -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_rescue ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_provisioning_network -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_provisioning_network ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_rescue_fails -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_rescue_fails ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_unconfigure_tenant_networks -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_unconfigure_tenant_networks ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_clean -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_clean ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_validate -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_validate ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_clean_fails -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_clean_fails ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_attach -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_attach ... ok -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_with_reservation -ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_with_reservation ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_detach -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_detach ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_bios -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_bios ... ok -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_list -ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_list ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_fallback -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_fallback ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_fallback_bios -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_fallback_bios ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_other_arch -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_other_arch ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_uefi -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_uefi ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_already_off +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_already_off ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_fail_power_off +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_fail_power_off ... ok ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_bios_registry_save ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_bios_registry_save ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_uefi -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_uefi ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_fail_power_on +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_fail_power_on ... ok ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_empty_bios_registry ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_empty_bios_registry ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_none -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_none ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_none_bios -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_none_bios ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_override_pxe_fallback -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_override_pxe_fallback ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_ok ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_timeout_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_timeout_fail ... ok ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_exception_bios_registry ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_exception_bios_registry ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_bios_without_by_arch -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_bios_without_by_arch ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_cpu_in_by_arch -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_cpu_in_by_arch ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_timeout_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_timeout_ok ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_fail ... ok ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_no_bios_registry ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_no_bios_registry ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_cpu_not_in_by_arch -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_cpu_not_in_by_arch ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_ok ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_cleanup ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_cleanup ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_emtpy_property -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_emtpy_property ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_returns +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_returns ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_cleanup_notstaged ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_cleanup_notstaged ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_emtpy_property_bios_default -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_emtpy_property_bios_default ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_invalid_state +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_invalid_state ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_cleanup_swift_fails ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_cleanup_swift_fails ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_uefi_without_by_arch -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_uefi_without_by_arch ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_file ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_file ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_bios_without_by_arch -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_bios_without_by_arch ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_off_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_off_ok ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_http ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_http ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_cpu_in_by_arch -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_cpu_in_by_arch ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_off_timeout_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_off_timeout_ok ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_invalid ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_invalid ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_cpu_not_in_by_arch -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_cpu_not_in_by_arch ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_emtpy_property -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_emtpy_property ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_emtpy_property_bios -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_emtpy_property_bios ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_fail ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_swift ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_swift ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_per_node -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_per_node ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_get_swift_temp_url ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_get_swift_temp_url ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_uefi_without_by_arch -ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_uefi_without_by_arch ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_ok ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_http ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_http ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_timeout_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_timeout_fail ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_http_copyfile ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_http_copyfile ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_cleaning_vif_port_id -ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_cleaning_vif_port_id ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_http_copyfile_fails ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_http_copyfile_fails ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_provisioning_vif_port_id -ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_provisioning_vif_port_id ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_timeout_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_timeout_ok ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_local_external ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_local_external ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_with_next_boot +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_with_next_boot ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_swift ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_swift ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_vif_port_id -ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_vif_port_id ... ok /usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_with_next_boot_timeout +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_with_next_boot_timeout ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceImageCacheTestCase.test_with_master_path -ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceImageCacheTestCase.test_with_master_path ... ok /usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_checksum_missing ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_checksum_missing ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceImageCacheTestCase.test_without_master_path -ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceImageCacheTestCase.test_without_master_path ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_power_off_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_power_off_ok ... ok /usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_checksum_not_string ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_checksum_not_string ... ok /usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_power_off_timeout_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_power_off_timeout_ok ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_not_list ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_not_list ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_image -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_image ... ok /usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_source_not_known ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_source_not_known ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_ok ... ok /usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_unknown_key ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_unknown_key ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_partition_image -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_partition_image ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_timeout_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_timeout_fail ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_timeout_ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_timeout_ok ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_bmc_reset_cold +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_bmc_reset_cold ... ok /usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_url_missing @@ -53744,138 +54387,625 @@ cls = validator_for(schema) ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_url_not_string ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_url_not_string ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_partition_image_anaconda -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_partition_image_anaconda ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_bmc_reset_warm +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_bmc_reset_warm ... ok /usr/lib/python3/dist-packages/jsonschema/validators.py:1074: 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) ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_wait_not_int ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_wait_not_int ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_send_raw_bytes +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_send_raw_bytes ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_verify_checksum ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_verify_checksum ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_image_not_found -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_image_not_found ... ok ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_verify_checksum_mismatch ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_verify_checksum_mismatch ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_image -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_image ... ok -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_create_subscription -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_create_subscription ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_partition_image -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_partition_image ... ok -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_delete_subscription -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_delete_subscription ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_is_a_path -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_is_a_path ... ok -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_eject_vmedia_all -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_eject_vmedia_all ... ok -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_eject_vmedia_cd -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_eject_vmedia_cd ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_redirect -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_redirect ... ok -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_all_subscriptions -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_all_subscriptions ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_driver_routes +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_driver_routes ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_cold_good +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_cold_good ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_create_port_when_its_state_is_none +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_create_port_when_its_state_is_none ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_good +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_good ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_get_properties +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_warm_good +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_warm_good ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_get_pxe_port_macs +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_get_pxe_port_macs ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__parse_driver_info_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__parse_driver_info_fail ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_fail_missing_cpu +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_fail_missing_cpu ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__send_raw_bytes_fail +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__send_raw_bytes_fail ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_fail_missing_memory_mb +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_fail_missing_memory_mb ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__send_raw_bytes_good +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__send_raw_bytes_good ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_boot_mode +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_boot_mode ... ok +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_vendor_routes +ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_vendor_routes ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue +ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_cpu +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_cpu ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue_fails_no_rescue_kernel +ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue_fails_no_rescue_kernel ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_local_gb +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_local_gb ... ok +ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue_no_rescue_ramdisk +ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue_no_rescue_ramdisk ... ok +ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_bios +ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_bios ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_memory_mb +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_memory_mb ... ok +ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_console +ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_console ... ok +ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_inspect +ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_inspect ... ok +WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. +ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_load_by_name +ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_load_by_name ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_nics +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_nics ... ok +ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_rescue +ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_rescue ... ok +ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_vendor +ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_vendor ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ok ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_preserve_boot_mode +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_preserve_boot_mode ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_deploy +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_deploy ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_end +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_end ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_empty_pxe_port_macs +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_empty_pxe_port_macs ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_error +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_error ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_no_mac +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_no_mac ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_start +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_start ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_none_pxe_port_macs +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_none_pxe_port_macs ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_set_port_pxe_disabled +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_set_port_pxe_disabled ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare_active +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare_active ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_set_port_pxe_enabled +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_set_port_pxe_enabled ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare_cleaning +ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare_cleaning ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_port_creation +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_port_creation ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_error +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_error ... ok +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_validate +ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_validate ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_off +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_off ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_on +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_on ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_clean +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_clean ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_snmp_failure +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_snmp_failure ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_properties +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_properties ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_deploy +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_deploy ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_pending_create +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_pending_create ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_error +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_error ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_pending_delete +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_pending_delete ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_snmp_failure +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_snmp_failure ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_storage_controller +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_storage_controller ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_timeout +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_timeout ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid0 +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid0 ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_error +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_error ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid1 +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid1 ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid5 +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid5 ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off_error +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off_error ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid6 +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid6 ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off_snmp_failure +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off_snmp_failure ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_failed +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_failed ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_still_processing +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_still_processing ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_error +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_error ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_success +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_success ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_snmp_failure +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_snmp_failure ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_task_mon_error +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_task_mon_error ... ok +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_timeout +ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_timeout ... ok +ironic.tests.unit.drivers.test_base.DeployStepTestCase.test_get_and_execute_deploy_steps +ironic.tests.unit.drivers.test_base.DeployStepTestCase.test_get_and_execute_deploy_steps ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__volume_usage_per_disk_bytes_raid10 +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__volume_usage_per_disk_bytes_raid10 ... ok +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_boot_mode_default_impl +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_boot_mode_default_impl ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__volume_usage_per_disk_bytes_raid5 +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__volume_usage_per_disk_bytes_raid5 ... ok +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_indicator_state_default_impl +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_indicator_state_default_impl ... ok +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_mac_addresses +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_mac_addresses ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1a +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1a ... ok +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_supported_boot_modes_default_impl +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_supported_boot_modes_default_impl ... ok +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_supported_indicators_default_impl +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_supported_indicators_default_impl ... ok +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_inject_nmi_default_impl +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_inject_nmi_default_impl ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b ... ok +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_set_boot_mode_default_impl +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_set_boot_mode_default_impl ... ok +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_set_indicator_state_default_impl +ironic.tests.unit.drivers.test_base.TestManagementInterface.test_set_indicator_state_default_impl ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b_apply_time_immediate +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b_apply_time_immediate ... ok +ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_default_interfaces +ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_default_interfaces ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b_apply_time_on_reset +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b_apply_time_on_reset ... ok +ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_agent_rescue +ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_agent_rescue ... ok +ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_inspector +ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_inspector ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_2 +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_2 ... ok +ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_no_bios +ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_no_bios ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_2_on_reset +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_2_on_reset ... ok +ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_pxe +ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_pxe ... ok +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_3 +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_3 ... ok +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_IPA_command_fail +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_IPA_command_fail ... ok +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_command_fail +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_command_fail ... ok +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_fs +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_fs ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_4 +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_4 ... ok +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_swift +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_swift ... ok +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_unkown +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_unkown ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_5a +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_5a ... ok +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_with_label +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_with_label ... ok +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_get_ramdisk_logs_file_name +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_get_ramdisk_logs_file_name ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_5b +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_5b ... ok +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_store_ramdisk_logs_local +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_store_ramdisk_logs_local ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_6 +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_6 ... ok +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_store_ramdisk_logs_swift +ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_store_ramdisk_logs_swift ... ok +ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_supported_missing +ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_supported_missing ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_interface_type +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_interface_type ... ok +ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_supported_set +ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_supported_set ... ok +ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_missing +ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_missing ... ok +ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_no_remove_default ... ok +ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_remove +ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_remove ... ok +ironic.tests.unit.objects.test_fields.TestMacAddressField.test_coerce +ironic.tests.unit.objects.test_fields.TestMacAddressField.test_coerce ... ok +ironic.tests.unit.objects.test_fields.TestMacAddressField.test_coerce_bad_values +ironic.tests.unit.objects.test_fields.TestMacAddressField.test_coerce_bad_values ... ok +ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test__repr__includes_default_function_name_and_source_hash +ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test__repr__includes_default_function_name_and_source_hash ... ok +ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_default_as_function +ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_default_as_function ... ok +ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_function +ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_function ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_delete_config_immediate +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_delete_config_immediate ... ok +ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_function_invalid_type +ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_function_invalid_type ... ok +ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_invalid_type +ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_invalid_type ... ok +ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_string +ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_string ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_delete_config_on_reset +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_delete_config_on_reset ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_supported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_supported_missing ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_supported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_supported_set ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_get_physical_disks +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_get_physical_disks ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_missing ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_loading_error +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_loading_error ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_no_remove_default ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_update_raid_config_missing_raid_type +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_update_raid_config_missing_raid_type ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_remove ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_supported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_supported_missing ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_validate_raid_config +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_validate_raid_config ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_supported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_supported_set ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_validate_raid_config_scsi +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_validate_raid_config_scsi ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_missing ... ok +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_volume_create_error_handler +ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_volume_create_error_handler ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_no_remove_default ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_remove ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_supported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_supported_missing ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_supported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_supported_set ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_missing ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_auto +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_auto ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_no_remove_default ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_remove ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_supported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_supported_missing ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_supported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_supported_set ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_basic +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_basic ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_missing ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_no_remove_default ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_session +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_session ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_remove ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_supported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_supported_set ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_disabled_sessions_cache +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_disabled_sessions_cache ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_supported_unset +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_supported_unset ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_set ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_set_no_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_set_no_remove ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_basic_session_caching +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_basic_session_caching ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_unset +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_unset ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_supported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_supported_missing ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_address +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_address ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_supported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_supported_set ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_missing ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_no_remove_default ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_password +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_password ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_remove ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_username +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_username ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_supported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_supported_missing ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_supported_untouched +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_supported_untouched ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_session_reuse +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_session_reuse ... ok +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_expire_old_sessions +ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_expire_old_sessions ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_ipxe_config_whole_disk_image +ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_ipxe_config_whole_disk_image ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_ipxe_iscsi_boot +ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_ipxe_iscsi_boot ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_pxe_config_whole_disk_image +ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_pxe_config_whole_disk_image ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_elilo_config_whole_disk_image +ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_elilo_config_whole_disk_image ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_missing ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_grub_config_whole_disk_image +ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_grub_config_whole_disk_image ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_set_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_set_remove ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_ipxe_config_whole_disk_image +ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_ipxe_config_whole_disk_image ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_set_remove_in_maintenance +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_set_remove_in_maintenance ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_ipmifailure_bios +ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_ipmifailure_bios ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_supported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_supported_missing ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_supported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_supported_set ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_ipmifailure_uefi +ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_ipmifailure_uefi ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_missing ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_no_remove_default ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_okay +ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_okay ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_some_other_exception +ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_some_other_exception ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_remove ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_boot_iso_only +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_boot_iso_only ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_supported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_supported_missing ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_supported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_supported_set ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good_non_glance_image +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good_non_glance_image ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_missing ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good_non_glance_image_anaconda +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good_non_glance_image_anaconda ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_no_remove_default ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_missing_image_source +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_missing_image_source ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_non_glance_image_missing_kernel +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_non_glance_image_missing_kernel ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_remove ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_non_glance_image_missing_ramdisk +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_non_glance_image_missing_ramdisk ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_supported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_supported_missing ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_ramdisk_deploy +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_ramdisk_deploy ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_supported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_supported_set ... ok +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_whole_disk_image +ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_whole_disk_image ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_missing ... ok +ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_both_clean_up +ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_both_clean_up ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_clean_up_another_fs +ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_clean_up_another_fs ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_set_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_set_remove ... ok +ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_clean_up_fail +ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_clean_up_fail ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_supported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_supported_missing ... ok +ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_no_clean_up +ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_no_clean_up ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_supported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_supported_set ... ok +ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_one_clean_up +ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_one_clean_up ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_missing ... ok ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch ... ok -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_all_subscriptions_empty -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_all_subscriptions_empty ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_no_remove_default ... ok ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_already_raw ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_already_raw ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_no_remove_non_default ... ok ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_estimate_fallback ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_estimate_fallback ... ok -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_subscription_does_not_exist -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_subscription_does_not_exist ... ok ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_remove ... ok ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image_large_url ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image_large_url ... ok -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_subscription_exists -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_subscription_exists ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_supported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_supported_missing ... ok ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image_linkfail ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image_linkfail ... ok -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_invalid_delete_subscription -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_invalid_delete_subscription ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_supported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_supported_set ... ok ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image_raises_memory_guard ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image_raises_memory_guard ... ok -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_create_subscription -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_create_subscription ... ok -ironic.tests.unit.drivers.modules.test_image_utils.Ilo5ImageHandlerTestCase.test_ilo5_kernel_param_config -ironic.tests.unit.drivers.modules.test_image_utils.Ilo5ImageHandlerTestCase.test_ilo5_kernel_param_config ... ok -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_delete_subscription -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_delete_subscription ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_missing ... ok +ironic.tests.unit.drivers.modules.test_image_utils.IloImageHandlerTestCase.test_ilo_kernel_param_config +ironic.tests.unit.drivers.modules.test_image_utils.IloImageHandlerTestCase.test_ilo_kernel_param_config ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test__append_filename_param_with_filename +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test__append_filename_param_with_filename ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_set_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_set_remove ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test__append_filename_param_with_qs +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test__append_filename_param_with_qs ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_trait_unsupported_set_no_remove_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_trait_unsupported_set_no_remove_default ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test__append_filename_param_without_qs +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test__append_filename_param_without_qs ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_trait_unsupported_set_no_remove_non_default +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_trait_unsupported_set_no_remove_non_default ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_supported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_supported_missing ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_supported_set +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_supported_set ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_external_ip +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_external_ip ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_unsupported_missing +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_unsupported_missing ... ok +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_unsupported_missing_remove +ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_unsupported_missing_remove ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_external_ip_node_override +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_external_ip_node_override ... ok +ironic.tests.unit.objects.test_objects.TestObjectVersions.test_object_version_check +ironic.tests.unit.objects.test_objects.TestObjectVersions.test_object_version_check ... ok +ironic.tests.unit.objects.test_trait.TestTraitObject.test_as_dict +ironic.tests.unit.objects.test_trait.TestTraitObject.test_as_dict ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_local_copy +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_local_copy ... ok +ironic.tests.unit.objects.test_trait.TestTraitObject.test_create +ironic.tests.unit.objects.test_trait.TestTraitObject.test_create ... ok +ironic.tests.unit.objects.test_trait.TestTraitObject.test_create_list +ironic.tests.unit.objects.test_trait.TestTraitObject.test_create_list ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_local_link +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_local_link ... ok +ironic.tests.unit.objects.test_trait.TestTraitObject.test_destroy +ironic.tests.unit.objects.test_trait.TestTraitObject.test_destroy ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_swift +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_swift ... ok +ironic.tests.unit.objects.test_trait.TestTraitObject.test_destroy_list +ironic.tests.unit.objects.test_trait.TestTraitObject.test_destroy_list ... ok +ironic.tests.unit.objects.test_trait.TestTraitObject.test_exists +ironic.tests.unit.objects.test_trait.TestTraitObject.test_exists ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_unpublish_image_local +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_unpublish_image_local ... ok +ironic.tests.unit.objects.test_trait.TestTraitObject.test_get_by_id +ironic.tests.unit.objects.test_trait.TestTraitObject.test_get_by_id ... ok +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_unpublish_image_swift +ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_unpublish_image_swift ... ok +ironic.tests.unit.objects.test_trait.TestTraitObject.test_get_trait_names +ironic.tests.unit.objects.test_trait.TestTraitObject.test_get_trait_names ... ok +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_create +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_create ... ok +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_destroy +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_destroy ... ok +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get ... ok +ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist +ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist ... ok +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get_by_id +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get_by_id ... ok +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get_by_uuid +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get_by_uuid ... ok +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list ... ok +ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist_attempts_port_creation_blindly +ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist_attempts_port_creation_blindly ... ok +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list_by_node_id +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list_by_node_id ... ok +ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist_mac_exception +ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist_mac_exception ... ok +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list_none +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list_none ... ok ironic.tests.unit.drivers.modules.test_inspector.CommonFunctionsTestCase.test_get_callback_endpoint ironic.tests.unit.drivers.modules.test_inspector.CommonFunctionsTestCase.test_get_callback_endpoint ... ok +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_payload_schemas +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_payload_schemas ... ok ironic.tests.unit.drivers.modules.test_inspector.CommonFunctionsTestCase.test_get_callback_endpoint_mdns ironic.tests.unit.drivers.modules.test_inspector.CommonFunctionsTestCase.test_get_callback_endpoint_mdns ... ok -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_dev -ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_dev ... ok +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_refresh +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_refresh ... ok ironic.tests.unit.drivers.modules.test_inspector.CommonFunctionsTestCase.test_get_callback_endpoint_no_loopback ironic.tests.unit.drivers.modules.test_inspector.CommonFunctionsTestCase.test_get_callback_endpoint_no_loopback ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_agent_get_steps -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_agent_get_steps ... ok +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_save +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_save ... ok ironic.tests.unit.drivers.modules.test_inspector.CommonFunctionsTestCase.test_get_callback_endpoint_override ironic.tests.unit.drivers.modules.test_inspector.CommonFunctionsTestCase.test_get_callback_endpoint_override ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_agent_get_steps_deploy -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_agent_get_steps_deploy ... ok +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_save_after_refresh +ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_save_after_refresh ... ok ironic.tests.unit.drivers.modules.test_inspector.CommonFunctionsTestCase.test_get_properties ironic.tests.unit.drivers.modules.test_inspector.CommonFunctionsTestCase.test_get_properties ... ok +ironic.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute +ironic.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute ... ok +GOT:{'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.80'}} +[NodeHistory(conductor='fake-mini',created_at=2024-01-06T14:14:48Z,event='three',event_type='UNKNOWN',id=3,node_id=10,severity='INFO',updated_at=None,user=None,uuid=8061cd59-f3db-47a5-901e-e468ddca3226), NodeHistory(conductor='fake-mini',created_at=2024-01-06T14:14:48Z,event='two',event_type='UNKNOWN',id=5,node_id=11,severity='INFO',updated_at=None,user=None,uuid=4cacad5b-2e6f-449a-b32c-e20a52c88623), NodeHistory(conductor='fake-mini',created_at=2024-01-06T14:14:48Z,event='three',event_type='UNKNOWN',id=6,node_id=11,severity='INFO',updated_at=None,user=None,uuid=3b1a35d4-cbd7-4f8b-95da-9f80104b5792), NodeHistory(conductor='fake-mini',created_at=2024-01-06T14:14:48Z,event='two',event_type='UNKNOWN',id=8,node_id=12,severity='INFO',updated_at=None,user=None,uuid=76d344af-c451-45d1-bcf2-446b6cb07d85), NodeHistory(conductor='fake-mini',created_at=2024-01-06T14:14:48Z,event='three',event_type='UNKNOWN',id=9,node_id=12,severity='INFO',updated_at=None,user=None,uuid=9d21ae2c-3912-44fd-8f40-85a3ba3b03ee), NodeHistory(conductor='fake-mini',created_at=2024-01-06T14:14:48Z,event='final',event_type='UNKNOWN',id=10,node_id=10,severity='INFO',updated_at=None,user=None,uuid=ab51c363-65f7-489b-afdd-17faf8accce1)] ironic.tests.unit.drivers.modules.test_inspector.CommonFunctionsTestCase.test_validate_ok ironic.tests.unit.drivers.modules.test_inspector.CommonFunctionsTestCase.test_validate_ok ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step_running -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step_running ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step_version_mismatch -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step_version_mismatch ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_deploy_step -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_deploy_step ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_find_step -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_find_step ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_find_step_not_found -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_find_step_not_found ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_deploy_steps -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_deploy_steps ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_deploy_steps_only_oob -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_deploy_steps_only_oob ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_custom_interface -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_custom_interface ... ok -ironic.tests.unit.drivers.modules.test_inspector.GetClientTestCase.test__get_client -ironic.tests.unit.drivers.modules.test_inspector.GetClientTestCase.test__get_client ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_missing_steps -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_missing_steps ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_override_priorities -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_override_priorities ... ok -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_override_priorities_none -ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_override_priorities_none ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_agent_client -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_agent_client ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_agent_busy -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_agent_busy ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_agent_busy_conflict -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_agent_busy_conflict ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_okay_error_typeerror_embedded -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_okay_error_typeerror_embedded ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_command_is_running -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_command_is_running ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_command_not_running -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_command_not_running ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_no_command_running -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_no_command_running ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_wrong_command_running -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_wrong_command_running ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_json -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_json ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_post -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_post ... ok -ironic.tests.unit.drivers.modules.test_inspector.GetClientTestCase.test__get_client_connection_problem -ironic.tests.unit.drivers.modules.test_inspector.GetClientTestCase.test__get_client_connection_problem ... ok -ironic.tests.unit.drivers.modules.test_inspector.GetClientTestCase.test__get_client_standalone -ironic.tests.unit.drivers.modules.test_inspector.GetClientTestCase.test__get_client_standalone ... ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareAbortTestCase.test_abort_error +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareAbortTestCase.test_abort_error ... ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareAbortTestCase.test_abort_ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareAbortTestCase.test_abort_ok ... ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_custom_params +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_custom_params ... ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_error +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_error ... ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_fast_track +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_fast_track ... ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_fast_track_via_driver_info +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_fast_track_via_driver_info ... ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_managed_ok ... ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_require_managed_boot +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_require_managed_boot ... ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_unmanaged_error +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_unmanaged_error ... ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_unmanaged_ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_unmanaged_ok ... ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_validate_ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_validate_ok ... ok +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_validate_require_managed_boot +ironic.tests.unit.drivers.modules.test_inspector.InspectHardwareTestCase.test_validate_require_managed_boot ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_console_init_calls ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_console_init_calls ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_console_init_calls_already_checked @@ -53902,380 +55032,146 @@ ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_vendor_passthru_init_calls ... ok ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_vendor_passthru_init_calls_already_checked ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_vendor_passthru_init_calls_already_checked ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_deploy -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_deploy ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_end -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_end ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_error -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_error ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_start -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_start ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare_active -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare_active ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare_cleaning -ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare_cleaning ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_instance -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_instance ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_ramdisk -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_poll -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_poll ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_ramdisk_rescue -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_ramdisk_rescue ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_config -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_config ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_get_properties -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_get_properties ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_disable -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_disable ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_disable_in_driver_info -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_disable_in_driver_info ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_internal -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_internal ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_invalid_file -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_invalid_file ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_body -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_body ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_active -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_active ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_url -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_url ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_url_fail -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_url_fail ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_kickstart -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_kickstart ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_content_type_header -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_content_type_header ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_execute_clean_step -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_execute_clean_step ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_kickstart_bios -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_kickstart_bios ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_exc -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_exc ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_fallback -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_fallback ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_ramdisk_pxe_conf_exists -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_ramdisk_pxe_conf_exists ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_fallback_restricted -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_fallback_restricted ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_clean_steps -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_clean_steps ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_ramdisk_pxe_conf_missing -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_ramdisk_pxe_conf_missing ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_no_retries -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_no_retries ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_retries -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_retries ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_verify -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_verify ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_install_bootloader -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_install_bootloader ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_install_bootloader_with_prep -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_install_bootloader_with_prep ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_power_off -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_power_off ... ok -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_sync -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_sync ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_bios -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_bios ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_cleaning -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_cleaning ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_exception -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_exception ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_none_requested -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_none_requested ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_unsupported -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_unsupported ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_exception -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_exception ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_none_requested -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_none_requested ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_rescue -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_rescue ... ok -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_unsupported -ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_unsupported ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__ensure_console_pid_dir_exists -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__ensure_console_pid_dir_exists ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_rescue_bios -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_rescue_bios ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__ensure_console_pid_dir_exists_fail -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__ensure_console_pid_dir_exists_fail ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_dir -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_dir ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_not_called -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_not_called ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_dir_tempdir -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_dir_tempdir ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_file -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_file ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_bm -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_bm ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_file_not_found -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_file_not_found ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_not_a_num -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_not_a_num ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_exception -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_exception ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_uefi -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_uefi ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_forced_kill -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_forced_kill ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_missing_deploy_kernel -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_missing_deploy_kernel ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_nopid -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_nopid ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_missing_deploy_ramdisk -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_missing_deploy_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_shellinabox_not_running -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_shellinabox_not_running ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_no_port -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_no_port ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_good -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_good ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_default -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_default ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_good_whole_disk_image -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_good_whole_disk_image ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_hostname -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_hostname ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_inspection -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_inspection ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_ipv4 -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_ipv4 ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_ipv6 -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_ipv6 ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_inspection_no_inspection_ramdisk -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_inspection_no_inspection_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_no_free_ports -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_no_free_ports ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_kickstart_fail_http_url_not_set -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_kickstart_fail_http_url_not_set ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_range_retry -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_range_retry ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_success -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_success ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_kickstart_missing_stage2_id -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_kickstart_missing_stage2_id ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_no_image_source_for_local_boot -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_no_image_source_for_local_boot ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_non_local -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_non_local ... ok -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_skip_check_write_image_false -ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_skip_check_write_image_false ... ok +ironic.tests.unit.drivers.modules.test_noop_mgmt.TestNoopManagement.test_dummy_methods +ironic.tests.unit.drivers.modules.test_noop_mgmt.TestNoopManagement.test_dummy_methods ... ok +ironic.tests.unit.drivers.modules.test_noop_mgmt.TestNoopManagement.test_set_boot_device +ironic.tests.unit.drivers.modules.test_noop_mgmt.TestNoopManagement.test_set_boot_device ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue +ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue_fails_no_rescue_kernel +ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue_fails_no_rescue_kernel ... ok +ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue_no_rescue_ramdisk +ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue_no_rescue_ramdisk ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy_with_configdrive +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy_with_configdrive ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy_with_smartnic_port +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy_with_smartnic_port ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_execute_clean_step +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_execute_clean_step ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_get_clean_steps +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_get_clean_steps ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_get_deploy_steps +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_get_deploy_steps ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_active +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_active ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_cleaning +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_cleaning ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_instance_ramdisk +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_instance_ramdisk ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_unrescuing +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_unrescuing ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_tear_down_cleaning +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_tear_down_cleaning ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_calls_boot_validate +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_calls_boot_validate ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_interface_mismatch +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_interface_mismatch ... ok +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_with_boot_iso +ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_with_boot_iso ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_off ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_on ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_shellinabox_console_https_url -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_shellinabox_console_https_url ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_reset ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_reset ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_shellinabox_console_url -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_shellinabox_console_url ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_state_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_state_off ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_state_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_state_on ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp6 -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp6 ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp_with_address_conf -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp_with_address_conf ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_snmp_objects ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_invalid_console_port_range -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_invalid_console_port_range ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_off ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_make_persistent_password_file -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_make_persistent_password_file ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_on ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_reset ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_reset ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_make_persistent_password_file_fail -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_make_persistent_password_file_fail ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_state_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_state_off ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_state_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_state_on ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_snmp_objects ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail_no_pid -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail_no_pid ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_off ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_on ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail_nopiddir -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail_nopiddir ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_reset ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_reset ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_nopid -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_nopid ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_state_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_state_off ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_state_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_state_on ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_timeout -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_timeout ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_off ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_on ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_bind_addr_default_ipv4 -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_bind_addr_default_ipv4 ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_reset ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_reset ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_state_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_state_off ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_bind_addr_ipv4 -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_bind_addr_ipv4 ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_state_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_state_on ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_default_timeout -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_default_timeout ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_snmp_objects ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_snmp_objects ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_timeout -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_timeout ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_off ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_timeout_disabled -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_timeout_disabled ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_on ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_fail -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_fail ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_reset ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_reset ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_fail_nopiddir -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_fail_nopiddir ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_state_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_state_off ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_state_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_state_on ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_nopid -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_nopid ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_shellinabox_console -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_shellinabox_console ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_shellinabox_console_fail_nopid -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_shellinabox_console_fail_nopid ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_socat_console -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_socat_console ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_socat_console_fail_nopid -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_socat_console_fail_nopid ... ok -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_valid_console_port_range -ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_valid_console_port_range ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_snmp_objects ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_off ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images_fail -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images_fail ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_on ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_boot_option_anaconda_deploy -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_boot_option_anaconda_deploy ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_on_cached_driver ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_on_cached_driver ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_boot_option_default_value -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_boot_option_default_value ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_reset ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_reset ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_fail -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_fail ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_off ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_from_keystone -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_from_keystone ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_on ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_none -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_none ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_pdu_discovery_failure ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_pdu_discovery_failure ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_anaconda_deploy -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_anaconda_deploy ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_unknown_pdu ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_unknown_pdu ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_anaconda_deploy_false -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_anaconda_deploy_false ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_off ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_software_raid -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_software_raid ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_on ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_software_raid_false -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_software_raid_false ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_reset ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_reset ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_snmp_objects ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_state_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_state_off ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_state_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_state_on ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_off ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_on ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs_never -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs_never ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_reset ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_reset ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_state_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_state_off ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_state_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_state_on ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs_overide -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs_overide ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_snmp_objects ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_off @@ -54284,995 +55180,140 @@ ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_on ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_reset ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_reset ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_no_poweroff -ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_no_poweroff ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_all_supported_capabilities -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_all_supported_capabilities ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_off ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_on ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_nothing_set -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_nothing_set ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_pending_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_pending_off ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_nothing_set_bios_mode -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_nothing_set_bios_mode ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_uefi_mode -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_uefi_mode ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_pending_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_pending_on ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_false -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_false ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_snmp_objects ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_invalid -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_invalid ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_true -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_true ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_delay ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_delay ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_capabilities -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_capabilities ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_invalid_state ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_invalid_state ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_capabilities_string -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_capabilities_string ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_invalid_type -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_invalid_type ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_snmp_get_failure ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_snmp_get_failure ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_snmp_set_failure ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_snmp_set_failure ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_instance_info -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_instance_info ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_timeout ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_timeout ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_instance_info_with_exc -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_instance_info_with_exc ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_with_exc -ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_with_exc ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_delay ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_delay ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_invalid_state ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_invalid_state ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_snmp_get_failure ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_snmp_get_failure ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_file_image -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_file_image ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_snmp_set_failure ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_snmp_set_failure ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_timeout ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_timeout ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_force_raw -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_force_raw ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_delay_option ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_delay_option ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_force_raw_drops_md5 -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_force_raw_drops_md5 ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_delay ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_delay ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_delay_on_delay ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_delay_on_delay ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_invalid_state ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_invalid_state ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_via_dinfo -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_via_dinfo ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_snmp_get_failure ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_snmp_get_failure ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_snmp_set_failure ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_snmp_set_failure ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_via_iinfo -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_via_iinfo ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_timeout ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_timeout ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_delay ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_delay ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_no_force_raw -ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_no_force_raw ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_invalid_state ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_invalid_state ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_check_interface_capability -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_check_interface_capability ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_snmp_get_failure ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_snmp_get_failure ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_snmp_set_failure ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_snmp_set_failure ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_get_remote_boot_volume -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_get_remote_boot_volume ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_timeout ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_timeout ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_get_remote_boot_volume_none -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_get_remote_boot_volume_none ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_error ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_error ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_off ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_on ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_snmp_failure ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_snmp_failure ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_raritan_pdu2_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_raritan_pdu2_snmp_objects ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_exception -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_exception ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_servertech_sentry3_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_servertech_sentry3_snmp_objects ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_servertech_sentry4_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_servertech_sentry4_snmp_objects ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_false -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_false ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_snmp_auto_cache_supports_pdu_replacement ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_snmp_auto_cache_supports_pdu_replacement ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_off ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_on ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_false_fc_target -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_false_fc_target ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_reset ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_reset ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_state_off ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_state_off ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_error -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_error ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_state_on ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_state_on ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_fc -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_fc ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_snmp_objects ... ok ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_vertivgeist_pdu_snmp_objects ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_vertivgeist_pdu_snmp_objects ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_iscsi -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_iscsi ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_error -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_error ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_off -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_off ... ok -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_tear_down_storage_configuration -ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_tear_down_storage_configuration ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_on -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_on ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_both_master_and_dest_out_of_date -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_both_master_and_dest_out_of_date ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_and_master_uptodate -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_and_master_uptodate ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_and_master_uptodate_no_force_raw -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_and_master_uptodate_no_force_raw ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_snmp_failure -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_snmp_failure ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_out_of_date -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_out_of_date ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_master_out_of_date -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_master_out_of_date ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_properties -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_properties ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_no_master_dir -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_no_master_dir ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_no_master_dir_memory_low -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_no_master_dir_memory_low ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_not_uuid -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_not_uuid ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_error -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_error ... ok -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_not_uuid_no_force_raw -ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_not_uuid_no_force_raw ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test__append_filename_param_with_filename -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test__append_filename_param_with_filename ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_snmp_failure -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_snmp_failure ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test__append_filename_param_with_qs -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test__append_filename_param_with_qs ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test__append_filename_param_without_qs -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test__append_filename_param_without_qs ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_timeout -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_timeout ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_external_ip -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_external_ip ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_error -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_error ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_external_ip_node_override -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_external_ip_node_override ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off_error -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off_error ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_local_copy -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_local_copy ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off_snmp_failure -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off_snmp_failure ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_local_link -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_local_link ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_error -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_error ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_swift -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_publish_image_swift ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_snmp_failure -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_snmp_failure ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_unpublish_image_local -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_unpublish_image_local ... ok -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_timeout -ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_timeout ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_unpublish_image_swift -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_unpublish_image_swift ... ok -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_get_power_state -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_get_power_state ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__find_param -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__find_param ... ok -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_get_power_state_fail -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_get_power_state_fail ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__find_param_not_found -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__find_param_not_found ... ok -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_get_properties -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_get_properties ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bios -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bios ... ok -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_reboot -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_reboot ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso ... ok -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_reboot_timeout -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_reboot_timeout ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_file -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_file ... ok -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_set_power -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_set_power ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_from_swift -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_from_swift ... ok -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_set_power_fail -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_set_power_fail ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_swift_noop -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_swift_noop ... ok -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_set_power_timeout -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_set_power_timeout ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_swift_schema -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_swift_schema ... ok -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_validate -ironic.tests.unit.drivers.modules.xclarity.test_power.XClarityPowerDriverTestCase.test_validate ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_with_instance_info -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_with_instance_info ... ok -ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_all_args -ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_all_args ... ok -ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_bad_argsinfo -ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_bad_argsinfo ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_default_boot_mode -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_default_boot_mode ... ok -ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_bad_priority -ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_bad_priority ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_extra_params -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_extra_params ... ok -ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_priority_only -ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_priority_only ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params ... ok +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_get_server_hardware_id +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_get_server_hardware_id ... ok +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_get_xclarity_client +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_get_xclarity_client ... ok +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info ... ok +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_get_param_from_config +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_get_param_from_config ... ok +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_invalid_port +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_invalid_port ... ok +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_missing_driver_info_and_config +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_missing_driver_info_and_config ... ok +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_missing_hardware_id +ironic.tests.unit.drivers.modules.xclarity.test_common.XClarityCommonTestCase.test_parse_driver_info_missing_hardware_id ... ok +ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_clean_and_deploy_step_all_args +ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_clean_and_deploy_step_all_args ... ok +ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_deploy_and_clean_step_all_args +ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_deploy_and_clean_step_all_args ... ok +ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_deploy_and_clean_step_priority_only +ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_deploy_and_clean_step_priority_only ... ok ironic.tests.unit.drivers.test_base.TestBIOSInterface.test_apply_configuration_wrapper ironic.tests.unit.drivers.test_base.TestBIOSInterface.test_apply_configuration_wrapper ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_defaults -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_defaults ... ok ironic.tests.unit.drivers.test_base.TestBIOSInterface.test_factory_reset_wrapper ironic.tests.unit.drivers.test_base.TestBIOSInterface.test_factory_reset_wrapper ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_driver_info -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_driver_info ... ok -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_boot_mode_default_impl -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_boot_mode_default_impl ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_driver_info_bios -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_driver_info_bios ... ok -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_indicator_state_default_impl -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_indicator_state_default_impl ... ok -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_mac_addresses -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_mac_addresses ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_bios -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_bios ... ok -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_supported_boot_modes_default_impl -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_supported_boot_modes_default_impl ... ok -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_supported_indicators_default_impl -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_supported_indicators_default_impl ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_cleaning -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_cleaning ... ok -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_inject_nmi_default_impl -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_inject_nmi_default_impl ... ok -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_set_boot_mode_default_impl -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_set_boot_mode_default_impl ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_uefi -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_uefi ... ok -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_set_indicator_state_default_impl -ironic.tests.unit.drivers.test_base.TestManagementInterface.test_set_indicator_state_default_impl ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_uefi -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_uefi ... ok -ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_default_interfaces -ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_default_interfaces ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_cleanup_floppy_image -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_cleanup_floppy_image ... ok -ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_agent_rescue -ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_agent_rescue ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_cleanup_iso_image -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_cleanup_iso_image ... ok -ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_inspector -ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_inspector ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_boot_iso -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_boot_iso ... ok -ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_no_bios -ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_no_bios ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_boot_iso_user_supplied -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_boot_iso_user_supplied ... ok -ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_pxe -ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_pxe ... ok -ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_get_properties -ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_get_properties ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image ... ok -ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_validate_bad_method -ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_validate_bad_method ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image_binary_url -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image_binary_url ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image_url -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image_url ... ok -ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_validate_valid_methods -ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_validate_valid_methods ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso ... ok -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_create -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_create ... ok -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_bad_id_and_uuid -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_bad_id_and_uuid ... ok -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_by_id -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_by_id ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_existing_iso -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_existing_iso ... ok -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_by_uuid -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_by_uuid ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_existing_iso_vendor_prefix -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_existing_iso_vendor_prefix ... ok -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_list -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_list ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_external_ip -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_external_ip ... ok -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_payload_schemas -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_payload_schemas ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_network_data -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_network_data ... ok -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_refresh -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_refresh ... ok -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_save -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_save ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_tls -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_tls ... ok -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_save_after_refresh -ironic.tests.unit.objects.test_chassis.TestChassisObject.test_save_after_refresh ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image ... ok -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_create -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_create ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image_file -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image_file ... ok -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_create_with_node -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_create_with_node ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image_prefix -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image_prefix ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image ... ok -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_destroy -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_destroy ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_publish_with_config_external_http_url -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_publish_with_config_external_http_url ... ok -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_destroy_with_node -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_destroy_with_node ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_publish_with_node_external_http_url -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_publish_with_node_external_http_url ... ok -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_get_by_node_uuid -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_get_by_node_uuid ... ok -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_with_external_ip -ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_with_external_ip ... ok -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_get_by_uuid -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_get_by_uuid ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_fail ... ok -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_not_found -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_not_found ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_no_ipmitool -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_no_ipmitool ... ok -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_refresh -ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_refresh ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test__validate_property_values_success -ironic.tests.unit.objects.test_node.TestNodeObject.test__validate_property_values_success ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_insecure -ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_insecure ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure -ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_configdrive_as_dict -ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_configdrive_as_dict ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_with_configdrive -ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_with_configdrive ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_pass -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_pass ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_with_configdrive_as_dict -ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_with_configdrive_as_dict ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_fail ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_with_traits -ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_with_traits ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_no_ipmitool -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_no_ipmitool ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_pass -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_pass ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_create -ironic.tests.unit.objects.test_node.TestNodeObject.test_create ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_fail ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_no_ipmitool -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_no_ipmitool ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_create_with_invalid_properties -ironic.tests.unit.objects.test_node.TestNodeObject.test_create_with_invalid_properties ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_pass -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_pass ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_create_with_traits -ironic.tests.unit.objects.test_node.TestNodeObject.test_create_with_traits ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_fail ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_bad_id_and_uuid -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_bad_id_and_uuid ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_no_ipmitool -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_no_ipmitool ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_id -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_id ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_pass -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_pass ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_instance_not_found -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_instance_not_found ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test___set_and_wait_no_needless_status_polling -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test___set_and_wait_no_needless_status_polling ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_instance_uuid -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_instance_uuid ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__check_cipher_suite_errors -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__check_cipher_suite_errors ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_name -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_name ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_empty_list -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_empty_list ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_name_node_not_found -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_name_node_not_found ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_one_element -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_one_element ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_port_addresses -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_port_addresses ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_returns_last_to_first -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_returns_last_to_first ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_uuid -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_uuid ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_IPMI_version_1_5 -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_IPMI_version_1_5 ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_interface -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_interface ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_interface_overriden -ironic.tests.unit.objects.test_node.TestNodeObject.test_get_interface_overriden ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_error_noconfig -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_error_noconfig ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_list -ironic.tests.unit.objects.test_node.TestNodeObject.test_list ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_set_with_error_config -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_set_with_error_config ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields -ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields_empty_trait_present -ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields_empty_trait_present ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields_traits -ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields_traits ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_set_with_error_noconfig -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_set_with_error_noconfig ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_payload_schemas -ironic.tests.unit.objects.test_node.TestNodeObject.test_payload_schemas ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_exception -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_exception ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_refresh -ironic.tests.unit.objects.test_node.TestNodeObject.test_refresh ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_release -ironic.tests.unit.objects.test_node.TestNodeObject.test_release ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_first_call_to_address -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_first_call_to_address ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_release_node_not_found -ironic.tests.unit.objects.test_node.TestNodeObject.test_release_node_not_found ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_reserve -ironic.tests.unit.objects.test_node.TestNodeObject.test_reserve ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_second_call_to_address_no_sleep -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_second_call_to_address_no_sleep ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_reserve_node_not_found -ironic.tests.unit.objects.test_node.TestNodeObject.test_reserve_node_not_found ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_save -ironic.tests.unit.objects.test_node.TestNodeObject.test_save ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_second_call_to_address_sleep -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_second_call_to_address_sleep ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_try_different_cipher_suite -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_try_different_cipher_suite ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_after_refresh -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_after_refresh ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_two_calls_to_diff_address -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_two_calls_to_diff_address ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_truncated -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_truncated ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_check_exit_code -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_check_exit_code ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_updated_at_field -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_updated_at_field ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_dual_bridging -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_dual_bridging ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group_fail -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group_fail ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_empty_password -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_empty_password ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group_uppercase -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group_uppercase ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_traits -ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_traits ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_empty_username -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_empty_username ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_touch_provisioning -ironic.tests.unit.objects.test_node.TestNodeObject.test_touch_provisioning ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_ironic_retries -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_ironic_retries ... ok -ironic.tests.unit.objects.test_node.TestNodeObject.test_update_with_invalid_properties -ironic.tests.unit.objects.test_node.TestNodeObject.test_update_with_invalid_properties ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_ironic_retries_multiple -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_ironic_retries_multiple ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_port -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_port ... ok -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_create -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_create ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_single_bridging -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_single_bridging ... ok -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_destroy -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_destroy ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_timeout -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_timeout ... ok -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_timing -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_timing ... ok -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get_by_id -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get_by_id ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_password -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_password ... ok -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get_by_uuid -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get_by_uuid ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_timing -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_timing ... ok -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_username -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_username ... ok -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list_by_node_id -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list_by_node_id ... ok -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list_none -ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list_none ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__ipmitool_timing_args -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__ipmitool_timing_args ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_caller_exception -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_caller_exception ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_emit_notification -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_emit_notification ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_str_password -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_str_password ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_emit_notification_empty_schema -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_emit_notification_empty_schema ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_invalid_status_fails -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_invalid_status_fails ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_tempfile_known_exception -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_tempfile_known_exception ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_make_status_invalid -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_make_status_invalid ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_with_status -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_with_status ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_tempfile_unknown_exception -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_tempfile_unknown_exception ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_without_status_fails -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_without_status_fails ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_with_numeric_password -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_with_numeric_password ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_write_exception -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__make_password_file_write_exception ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_have_credentials -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_have_credentials ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_has_secrets -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_has_secrets ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_invalid_ipmi_port -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_invalid_ipmi_port ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_no_secrets -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_no_secrets ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_invalid_ipmi_prot_version -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_invalid_ipmi_prot_version ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_not_affected -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_not_affected ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_level_too_low -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_level_too_low ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite_ipmi_1_5 -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite_ipmi_1_5 ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite_not_a_number -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite_not_a_number ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_notifs_disabled -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_notifs_disabled ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_hex_kg_key -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_hex_kg_key ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_schema_not_populated -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_schema_not_populated ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_hex_kg_key_odd_chars -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_hex_kg_key_odd_chars ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_missing_required_obj_field -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_missing_required_obj_field ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_no_object_field -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_no_object_field ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_port_valid -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_port_valid ... ok -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_nullable_field_auto_populates -ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_nullable_field_auto_populates ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_prot_version_1_5 -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_prot_version_1_5 ... ok -ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra -ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_numeric_password -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_numeric_password ... ok -ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_in_internal_info -ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_in_internal_info ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_terminal_port_allocated -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_terminal_port_allocated ... ok -ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_lower_version -ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_lower_version ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_terminal_port_specified -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_terminal_port_specified ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_undefined_credentials -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_undefined_credentials ... ok -ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_not_in_extra -ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_not_in_extra ... ok -ironic.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute -ironic.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_missing_parameters -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_missing_parameters ... ok -ironic.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute -ironic.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute ... ok -ironic.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute_parent_mocked -ironic.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute_parent_mocked ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_not_supported -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_not_supported ... ok -ironic.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute -ironic.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_pass -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_pass ... ok -GOT:{'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.80'}} -GET: /v1/ {} -GOT:{'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.80'}, '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'}]} -GET: /v1/ {} -GOT:{'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.80'}, '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'}]} -GET: /v1/ {} -GOT:{'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.80'}, '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'}]} -GET: /v1/ {} -GOT:{'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.80'}} -{'links': [{'id': 'port1', 'type': 'vif', 'ethernet_mac_address': '52:54:00:4f:ef:b7', 'vif_id': '96d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb8', 'mtu': 1500}], 'networks': [{'id': '906e685a-b964-4d58-9939-9cf3af197c67', 'network_id': 'a87cc70a-3e15-4acf-8205-9b711a3531b7', 'type': 'ipv6', 'link': 'port1', 'ip_address': 'fd00:203:0:113::2', 'netmask': 'ffff:ffff:ffff:ffff::', 'routes': [{'network': '::0', 'netmask': '::0', 'gateway': 'fd00:203:0:113::1'}]}]} -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_invalid_bridging_type -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_invalid_bridging_type ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_no_bridging -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_no_bridging ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_missing_parameters -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_missing_parameters ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_not_supported -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_not_supported ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_pass -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_pass ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_on_max_retries -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_on_max_retries ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_error -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_error ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_exception -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_exception ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_off -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_off ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_on -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_on ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__soft_power_off -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__soft_power_off ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__soft_power_off_max_retries -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__soft_power_off_max_retries ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_bmc_initialization_in_progress -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_bmc_initialization_in_progress ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_insufficient_resources_for_session -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_insufficient_resources_for_session ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_node_busy -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_node_busy ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_out_of_space -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_out_of_space ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_timeout -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_timeout ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_bmc_initialization_in_progress -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_bmc_initialization_in_progress ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_insufficient_resources_for_session -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_insufficient_resources_for_session ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_node_busy -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_node_busy ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_out_of_space -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_out_of_space ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_timeout -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_timeout ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_bmc_initialization_in_progress -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_bmc_initialization_in_progress ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_insufficient_resources_for_session -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_insufficient_resources_for_session ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_node_busy -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_node_busy ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_out_of_space -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_out_of_space ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_timeout -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_timeout ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__exec_stop_console -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__exec_stop_console ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__get_ipmi_cmd -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__get_ipmi_cmd ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__get_ipmi_cmd_without_user -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__get_ipmi_cmd_without_user ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_empty_password -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_empty_password ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_fail ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_fail_nodir -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_fail_nodir ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_invalid_port -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_invalid_port ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_missing_port -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_missing_port ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_missing_port_auto_allocate -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_missing_port_auto_allocate ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_wrong_ipmi_protocol_version -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_wrong_ipmi_protocol_version ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_get_console -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_get_console ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console_alloc_port -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console_alloc_port ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console_with_port -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console_with_port ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_stop_console -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_stop_console ... ok -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_stop_console_fail -ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_stop_console_fail ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_instance -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_instance ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_ramdisk -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_ramdisk_rescue -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_ramdisk_rescue ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_get_properties -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_get_properties ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_active -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_active ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_iscsi -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_iscsi ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_iscsi_bios -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_iscsi_bios ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_ramdisk -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk_bios -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk_bios ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk_with_kernel_arg -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk_with_kernel_arg ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_with_fallback -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_with_fallback ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_cleaning -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_cleaning ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_swift -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_swift ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_swift_whole_disk_image -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_swift_whole_disk_image ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_with_copy_file_different -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_with_copy_file_different ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_with_copy_no_file -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_with_copy_no_file ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_without_copy -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_without_copy ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_rescue -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_rescue ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_not_called -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_not_called ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_bm -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_bm ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_uefi -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_uefi ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_missing_deploy_kernel -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_missing_deploy_kernel ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_missing_deploy_ramdisk -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_missing_deploy_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_no_port -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_no_port ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_good -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_good ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_good_whole_disk_image -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_good_whole_disk_image ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_inspection -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_inspection ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_inspection_no_inspection_ramdisk -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_inspection_no_inspection_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_no_image_source_for_local_boot -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_no_image_source_for_local_boot ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_skip_check_write_image_false -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_skip_check_write_image_false ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_with_boot_iso -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_with_boot_iso ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_with_boot_iso_and_image_source -ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_with_boot_iso_and_image_source ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue -ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue_fails_no_rescue_kernel -ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue_fails_no_rescue_kernel ... ok -ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue_no_rescue_ramdisk -ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue_no_rescue_ramdisk ... ok -ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_bios -ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_bios ... ok -ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_console -ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_console ... ok -ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_inspect -ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_inspect ... ok -WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. -ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_load_by_name -ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_load_by_name ... ok -ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_rescue -ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_rescue ... ok -ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_vendor -ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_vendor ... ok -ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_maintenance -ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_maintenance ... ok -ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_not_retry_with_token -ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_not_retry_with_token ... ok -ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_recent_power_change -ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_recent_power_change ... ok -ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_retry -ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_retry ... ok -ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_wrong_state -ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_wrong_state ... ok -ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_timeouts -ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_timeouts ... ok -ironic.tests.unit.drivers.test_base.CleanStepTestCase.test_get_and_execute_clean_steps -ironic.tests.unit.drivers.test_base.CleanStepTestCase.test_get_and_execute_clean_steps ... ok -ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_check_func_references -ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_check_func_references ... ok -ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_exclusive_task_metadata -ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_exclusive_task_metadata ... ok -ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_ironicexception -ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_ironicexception ... ok -ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_noexception -ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_noexception ... ok -ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_nonironicexception -ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_nonironicexception ... ok -ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_shared_task_metadata -ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_shared_task_metadata ... ok -ironic.tests.unit.drivers.test_base.TestBootInterface.test_validate_rescue_default_impl -ironic.tests.unit.drivers.test_base.TestBootInterface.test_validate_rescue_default_impl ... ok -WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_default_interfaces -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_default_interfaces ... ok -WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_no_vendor -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_no_vendor ... ok -WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_idrac -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_idrac ... ok -WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_inspector -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_inspector ... ok -WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_raid -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_raid ... ok -WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_bios -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_bios ... ok -WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_inspect -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_inspect ... ok -WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_management_and_power -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_management_and_power ... ok -WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_raid -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_raid ... ok -WARNI [ironic.drivers.modules.drac.vendor_passthru] Vendor passthru interface 'idrac' is deprecated and may be removed in a future release. Use 'idrac-wsman' instead. -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_virtual_media_boot -ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_virtual_media_boot ... ok -ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_default_interfaces -ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_default_interfaces ... ok -ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_get_properties -ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_get_properties ... ok -ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_get_properties_none -ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_get_properties_none ... ok -ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_supported_interfaces -ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_supported_interfaces ... ok -ironic.tests.unit.drivers.test_ibmc.IBMCHardwareTestCase.test_default_interfaces -ironic.tests.unit.drivers.test_ibmc.IBMCHardwareTestCase.test_default_interfaces ... ok +ironic.tests.unit.drivers.test_base.TestBareDriver.test_class_variables +ironic.tests.unit.drivers.test_base.TestBareDriver.test_class_variables ... ok ironic.tests.unit.drivers.test_ilo.Ilo5HardwareTestCase.test_default_interfaces ironic.tests.unit.drivers.test_ilo.Ilo5HardwareTestCase.test_default_interfaces ... ok ironic.tests.unit.drivers.test_ilo.Ilo5HardwareTestCase.test_override_raid ironic.tests.unit.drivers.test_ilo.Ilo5HardwareTestCase.test_override_raid ... ok -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_default_interfaces -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_default_interfaces ... ok -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_agent_rescue -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_agent_rescue ... ok -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_bios_configuration -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_bios_configuration ... ok -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_boot_configuration -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_boot_configuration ... ok -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_inspector -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_inspector ... ok -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_ipmitool_power -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_ipmitool_power ... ok -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_raid_configuration -ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_raid_configuration ... ok +ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_default_interfaces +ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_default_interfaces ... ok +ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_agent_rescue +ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_agent_rescue ... ok +ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_cinder_storage +ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_cinder_storage ... ok +ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_noop_mgmt +ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_noop_mgmt ... ok +ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_shellinabox +ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_shellinabox ... ok ironic.tests.unit.drivers.test_snmp.SNMPHardwareTestCase.test_default_interfaces ironic.tests.unit.drivers.test_snmp.SNMPHardwareTestCase.test_default_interfaces ... ok ironic.tests.unit.drivers.test_snmp.SNMPHardwareTestCase.test_fake_management ironic.tests.unit.drivers.test_snmp.SNMPHardwareTestCase.test_fake_management ... ok -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs ... ok -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_IPA_command_fail -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_IPA_command_fail ... ok -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_command_fail -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_command_fail ... ok -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_fs -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_fs ... ok -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_swift -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_swift ... ok -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_unkown -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_unkown ... ok -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_with_label -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_with_label ... ok -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_get_ramdisk_logs_file_name -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_get_ramdisk_logs_file_name ... ok -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_store_ramdisk_logs_local -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_store_ramdisk_logs_local ... ok -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_store_ramdisk_logs_swift -ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_store_ramdisk_logs_swift ... ok ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_add_node_capability ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_add_node_capability ... ok ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_add_node_capability_append @@ -55307,8 +55348,6 @@ ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_normalize_mac_string ... ok ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_normalize_mac_unicode ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_normalize_mac_unicode ... ok -ironic.tests.unit.drivers.test_xclarity.XClarityHardwareTestCase.test_default_interfaces -ironic.tests.unit.drivers.test_xclarity.XClarityHardwareTestCase.test_default_interfaces ... ok ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_create ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_create ... ok ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_get_bad_id_and_uuid_and_name @@ -55329,243 +55368,247 @@ ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_save ... ok ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_save_after_refresh ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_save_after_refresh ... ok -ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_supported_missing -ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_supported_missing ... ok -ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_supported_set -ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_supported_set ... ok -ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_missing -ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_missing ... ok -ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_no_remove_default -ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_no_remove_default ... ok -ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_no_remove_non_default -ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_no_remove_non_default ... ok -ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_remove -ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_remove ... ok -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_create -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_create ... ok -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_destroy -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_destroy ... ok -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_id -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_id ... ok -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_name -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_name ... ok -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_uuid -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_uuid ... ok -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_list -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_list ... ok -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_list_by_names -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_list_by_names ... ok -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_refresh -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_refresh ... ok -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_save -ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_save ... ok +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_create +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_create ... ok +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_bad_id_and_uuid +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_bad_id_and_uuid ... ok +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_by_id +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_by_id ... ok +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_by_uuid +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_by_uuid ... ok +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_list +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_list ... ok +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_payload_schemas +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_payload_schemas ... ok +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_refresh +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_refresh ... ok +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_save +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_save ... ok +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_save_after_refresh +ironic.tests.unit.objects.test_chassis.TestChassisObject.test_save_after_refresh ... ok ironic.tests.unit.objects.test_fields.TestFlexibleDictField.test_coerce ironic.tests.unit.objects.test_fields.TestFlexibleDictField.test_coerce ... ok ironic.tests.unit.objects.test_fields.TestFlexibleDictField.test_coerce_bad_values ironic.tests.unit.objects.test_fields.TestFlexibleDictField.test_coerce_bad_values ... ok ironic.tests.unit.objects.test_fields.TestFlexibleDictField.test_coerce_nullable_translation ironic.tests.unit.objects.test_fields.TestFlexibleDictField.test_coerce_nullable_translation ... ok -ironic.tests.unit.objects.test_fields.TestMacAddressField.test_coerce -ironic.tests.unit.objects.test_fields.TestMacAddressField.test_coerce ... ok -ironic.tests.unit.objects.test_fields.TestMacAddressField.test_coerce_bad_values -ironic.tests.unit.objects.test_fields.TestMacAddressField.test_coerce_bad_values ... ok -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_corrected_power_state_payload -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_corrected_power_state_payload ... ok -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_crud_payload -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_crud_payload ... ok -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload ... ok -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload_no_traits -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload_no_traits ... ok -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload_traits_is_none -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload_traits_is_none ... ok -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_set_power_state_payload -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_set_power_state_payload ... ok -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_set_provision_state_payload -ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_set_provision_state_payload ... ok -ironic.tests.unit.objects.test_objects.TestRegistry.test_hook_chooses_newer_properly -ironic.tests.unit.objects.test_objects.TestRegistry.test_hook_chooses_newer_properly ... ok -ironic.tests.unit.objects.test_objects.TestRegistry.test_hook_keeps_newer_properly -ironic.tests.unit.objects.test_objects.TestRegistry.test_hook_keeps_newer_properly ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_create -ironic.tests.unit.objects.test_port.TestPortObject.test_create ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_get_bad_id_and_uuid_and_name_and_address -ironic.tests.unit.objects.test_port.TestPortObject.test_get_bad_id_and_uuid_and_name_and_address ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_address -ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_address ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_id -ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_id ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_name -ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_name ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_uuid -ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_uuid ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_list -ironic.tests.unit.objects.test_port.TestPortObject.test_list ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_list_deprecated_owner -ironic.tests.unit.objects.test_port.TestPortObject.test_list_deprecated_owner ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_payload_schemas -ironic.tests.unit.objects.test_port.TestPortObject.test_payload_schemas ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_refresh -ironic.tests.unit.objects.test_port.TestPortObject.test_refresh ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_save -ironic.tests.unit.objects.test_port.TestPortObject.test_save ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_save_after_refresh -ironic.tests.unit.objects.test_port.TestPortObject.test_save_after_refresh ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_supports_is_smartnic_supported -ironic.tests.unit.objects.test_port.TestPortObject.test_supports_is_smartnic_supported ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_supports_is_smartnic_unsupported -ironic.tests.unit.objects.test_port.TestPortObject.test_supports_is_smartnic_unsupported ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_supports_physical_network_supported -ironic.tests.unit.objects.test_port.TestPortObject.test_supports_physical_network_supported ... ok -ironic.tests.unit.objects.test_port.TestPortObject.test_supports_physical_network_unsupported -ironic.tests.unit.objects.test_port.TestPortObject.test_supports_physical_network_unsupported ... ok -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_create -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_create ... ok -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_bad_id_and_uuid_and_address_and_name -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_bad_id_and_uuid_and_address_and_name ... ok -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_address -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_address ... ok -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_id -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_id ... ok -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_name -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_name ... ok -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_uuid -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_uuid ... ok -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_list -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_list ... ok -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_list_by_node_id -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_list_by_node_id ... ok -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_payload_schemas -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_payload_schemas ... ok -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_refresh -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_refresh ... ok -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_save -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_save ... ok -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_save_after_refresh -ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_save_after_refresh ... ok -ironic.tests.unit.objects.test_trait.TestTraitObject.test_as_dict -ironic.tests.unit.objects.test_trait.TestTraitObject.test_as_dict ... ok -ironic.tests.unit.objects.test_trait.TestTraitObject.test_create -ironic.tests.unit.objects.test_trait.TestTraitObject.test_create ... ok -ironic.tests.unit.objects.test_trait.TestTraitObject.test_create_list -ironic.tests.unit.objects.test_trait.TestTraitObject.test_create_list ... ok -ironic.tests.unit.objects.test_trait.TestTraitObject.test_destroy -ironic.tests.unit.objects.test_trait.TestTraitObject.test_destroy ... ok -ironic.tests.unit.objects.test_trait.TestTraitObject.test_destroy_list -ironic.tests.unit.objects.test_trait.TestTraitObject.test_destroy_list ... ok -ironic.tests.unit.objects.test_trait.TestTraitObject.test_exists -ironic.tests.unit.objects.test_trait.TestTraitObject.test_exists ... ok -ironic.tests.unit.objects.test_trait.TestTraitObject.test_get_by_id -ironic.tests.unit.objects.test_trait.TestTraitObject.test_get_by_id ... ok -ironic.tests.unit.objects.test_trait.TestTraitObject.test_get_trait_names -ironic.tests.unit.objects.test_trait.TestTraitObject.test_get_trait_names ... ok -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_create -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_create ... ok -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_destroy -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_destroy ... ok -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get ... ok -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get_by_id -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get_by_id ... ok -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get_by_uuid -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get_by_uuid ... ok -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list ... ok -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list_by_node_id -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list_by_node_id ... ok -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list_none -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list_none ... ok -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_payload_schemas -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_payload_schemas ... ok -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_refresh -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_refresh ... ok -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_save -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_save ... ok -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_save_after_refresh -ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_save_after_refresh ... ok -GOT:Response: 404 Not Found +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_emit_notification +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_emit_notification ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_emit_notification_empty_schema +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_emit_notification_empty_schema ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_invalid_status_fails +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_invalid_status_fails ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_make_status_invalid +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_make_status_invalid ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_with_status +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_with_status ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_without_status_fails +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_without_status_fails ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_has_secrets +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_has_secrets ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_no_secrets +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_no_secrets ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_not_affected +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_not_affected ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_level_too_low +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_level_too_low ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_notifs_disabled +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_notifs_disabled ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_schema_not_populated +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_schema_not_populated ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_missing_required_obj_field +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_missing_required_obj_field ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_no_object_field +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_no_object_field ... ok +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_nullable_field_auto_populates +ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_nullable_field_auto_populates ... ok +ironic.tests.unit.objects.test_objects.TestMisc.test_max_version +ironic.tests.unit.objects.test_objects.TestMisc.test_max_version ... ok +ironic.tests.unit.objects.test_objects.TestMisc.test_max_version_one +ironic.tests.unit.objects.test_objects.TestMisc.test_max_version_one ... ok +ironic.tests.unit.objects.test_objects.TestMisc.test_max_version_two +ironic.tests.unit.objects.test_objects.TestMisc.test_max_version_two ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_api +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_api ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_conductor +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_conductor ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_convert_api +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_convert_api ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_convert_conductor +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_convert_conductor ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_revision_does_not_backport +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_revision_does_not_backport ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_revision_does_not_backport_zero +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_revision_does_not_backport_zero ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_version_backports +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_version_backports ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_version_passes_revision +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_version_passes_revision ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_pin_ignored +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_pin_ignored ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_same_revision_does_not_backport +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_same_revision_does_not_backport ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_object_serialization +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_object_serialization ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_object_serialization_iterables +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_object_serialization_iterables ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_invalid_pin +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_invalid_pin ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_pinned_api +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_pinned_api ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_pinned_conductor +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_pinned_conductor ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_unpinned_api +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_unpinned_api ... ok +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_unpinned_conductor +ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_unpinned_conductor ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_create +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_create ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_destroy +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_destroy ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get_by_id +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get_by_id ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get_by_uuid +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get_by_uuid ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_by_node_id +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_by_node_id ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_by_volume_id +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_by_volume_id ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_none +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_none ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_payload_schemas +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_payload_schemas ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_refresh +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_refresh ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_save +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_save ... ok +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_save_after_refresh +ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_save_after_refresh ... ok +API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-ddfbd131-293b-4b70-8b65-811d3b743598 +Openstack-Request-Id: req-62d8525e-c06e-4418-92af-cac83b00fd9b X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"role:member and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path patch /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +PATCH: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 [{'op': 'replace', 'path': '/description', 'value': 'meow'}] +GOT:Response: 500 Internal Server Error Content-Type: application/json -Openstack-Request-Id: req-ddfbd131-293b-4b70-8b65-811d3b743598 +Openstack-Request-Id: req-23ea22d6-5dd7-4d84-a581-c5e6a78eb363 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/273693bc-ee3c-46a5-8764-bc072bf13ef9 -GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/273693bc-ee3c-46a5-8764-bc072bf13ef9 {} +{"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"role:member and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} +API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-e346b07b-82b1-4fb2-b435-a89b6d851ed5 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-8a245f89-620f-4ed6-8a05-ab283b9b516e +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +API ACL Testing Path delete /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +DELETE: /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 +GOT:Response: 500 Internal Server Error +Content-Type: application/json +Openstack-Request-Id: req-05b4d4ad-bc34-442b-80b9-bf884556edc4 +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"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}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-4f1e11e9-250a-499d-b73d-3b409bf55979 +Openstack-Request-Id: req-4d5c1f8e-ebbd-40a3-8643-c6ea0e3943a8 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-4f1e11e9-250a-499d-b73d-3b409bf55979 +Openstack-Request-Id: req-176184e6-cc0e-4ca7-8243-1ffc67fd58c3 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} -API ACL Testing Path get /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 -GET: /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 {} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history {} GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bec519cb-51fe-4a82-b514-05d6e68e6a15 +Openstack-Request-Id: req-1c597713-9b12-4e5a-a8bf-6aa3b31f0b01 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -ACL Test GOT Response: 404 Not Found +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/e7423789-6e3b-433f-b109-859b138f8c33 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/e7423789-6e3b-433f-b109-859b138f8c33 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-bec519cb-51fe-4a82-b514-05d6e68e6a15 +Openstack-Request-Id: req-4adcd8e2-3528-42b3-9630-f3852d7b38a5 X-Openstack-Ironic-Api-Maximum-Version: 1.80 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 -{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} -GET: / {} -GOT:{'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.80'}, 'versions': [{'id': 'v1', 'links': [{'href': 'http://localhost/v1/', 'rel': 'self'}], 'status': 'CURRENT', 'min_version': '1.1', 'version': '1.80'}]} -GET: /v1/foo {} +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/9d2f975d-ec24-45d8-94af-e4d85d73bfe3 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/9d2f975d-ec24-45d8-94af-e4d85d73bfe3 {} GOT:Response: 404 Not Found Content-Type: application/json -{"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} -DELETE: /v1/ -GOT:Response: 405 Method Not Allowed +Openstack-Request-Id: req-6a8e6b50-7542-4154-98d3-df8b943b09cf +X-Openstack-Ironic-Api-Maximum-Version: 1.80 +X-Openstack-Ironic-Api-Minimum-Version: 1.1 +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +API ACL Testing Path get /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/e9187134-847f-4423-ad73-71001258efe3 +GET: /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/e9187134-847f-4423-ad73-71001258efe3 {} +GOT:Response: 404 Not Found Content-Type: application/json -Openstack-Request-Id: req-b6e3f236-1722-4d48-bacb-eb3c45caf4d8 +Openstack-Request-Id: req-954cfeaf-026c-4aa4-8096-e041a5796ca7 X-Openstack-Ironic-Api-Maximum-Version: 1.80 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}"} -Exception ignored in: -Traceback (most recent call last): - File "/usr/lib/python3.11/tempfile.py", line 589, in __del__ - File "/usr/lib/python3.11/tempfile.py", line 585, in close -FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmp8xlh4n36/tmp21r3ju4y' +X-Openstack-Ironic-Api-Version: 1.80 +{"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} +{'deployment_ari_path': 'http://192.1.2.3:1234/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/deploy_ramdisk', 'pxe_append_params': 'test_param ipa-global-request-id=req-3341f425-2cea-4bdc-ad0e-c6e3dc5bed72', 'deployment_aki_path': 'http://192.1.2.3:1234/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/deploy_kernel', 'tftp_server': '127.0.0.1', 'ipxe_timeout': 0, 'ari_path': 'no_ramdisk', 'aki_path': 'no_kernel', 'initrd_filename': 'deploy_ramdisk'} +{'deploy_kernel': ('deploy_kernel', '/tmp/tmp4xze3gyx/tmpcerf3mmi/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/deploy_kernel'), 'deploy_ramdisk': ('deploy_ramdisk', '/tmp/tmp4xze3gyx/tmpcerf3mmi/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/deploy_ramdisk')} ---------------------------------------------------------------------- -Ran 8768 tests in 1249.087s +Ran 8768 tests in 488.955s OK (skipped=44) + stestr slowest Test id Runtime (s) ----------------------------------------------------------------------------------------------------------------------------- ----------- -ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncPostgres.test_models_sync 28.001 -ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncMysql.test_models_sync 24.545 -ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_create_schema_and_version 7.560 -ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_poll 6.143 -ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_context 5.175 -ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_from_valid_states 4.575 -ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_handle_ibmc_exception_retry 4.425 -ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces 4.380 -ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_on 4.373 -ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_auth_from_config 4.316 +ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_poll 6.057 +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_on 4.145 +ironic.tests.unit.drivers.modules.ibmc.test_utils.IBMCUtilsTestCase.test_handle_ibmc_exception_retry 4.112 +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_timeout 3.142 +ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_timeout 3.131 +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state 2.504 +ironic.tests.unit.drivers.modules.drac.test_power.DracPowerTestCase.test_set_power_state_timeout 2.490 +ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsMySQL.test_create_schema_and_version 2.301 +ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_context 2.223 +ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_from_valid_states 2.179 + rm -rf .stestr mkdir -p /build/reproducible-path/ironic-21.1.0/debian/ironic-common/usr/share/ironic-common PYTHONPATH=/build/reproducible-path/ironic-21.1.0/debian/tmp/usr/lib/python3/dist-packages oslo-config-generator \ @@ -55596,9 +55639,9 @@ --namespace keystonemiddleware.audit \ --namespace keystonemiddleware.auth_token pkgos-readd-keystone-authtoken-missing-options /build/reproducible-path/ironic-21.1.0/debian/ironic-common/usr/share/ironic-common/ironic.conf keystone_authtoken ironic -pkgos_inifile: Setting value in pkgos-readd-keystone-authtoken-missing-options.RLnmC4:[keystone_authtoken]/www_authenticate_uri -pkgos_inifile: Setting value in pkgos-readd-keystone-authtoken-missing-options.RLnmC4:[keystone_authtoken]/auth_type -pkgos_inifile: Setting value in pkgos-readd-keystone-authtoken-missing-options.RLnmC4:[keystone_authtoken]/region_name +pkgos_inifile: Setting value in pkgos-readd-keystone-authtoken-missing-options.r3gMxJ:[keystone_authtoken]/www_authenticate_uri +pkgos_inifile: Setting value in pkgos-readd-keystone-authtoken-missing-options.r3gMxJ:[keystone_authtoken]/auth_type +pkgos_inifile: Setting value in pkgos-readd-keystone-authtoken-missing-options.r3gMxJ:[keystone_authtoken]/region_name # We're using python3, the default isn't good, it's using py2. pkgos-fix-config-default /build/reproducible-path/ironic-21.1.0/debian/ironic-common/usr/share/ironic-common/ironic.conf DEFAULT pybasedir /usr/lib/python3/site-packages/ironic pkgos_inifile: Setting value in /build/reproducible-path/ironic-21.1.0/debian/ironic-common/usr/share/ironic-common/ironic.conf:[DEFAULT]/pybasedir @@ -57015,11 +57058,11 @@ touch /build/reproducible-path/ironic-21.1.0/debian/ironic-doc/usr/share/doc/ironic-doc/html/_static/toggle.js #rm /build/reproducible-path/ironic-21.1.0/debian/ironic-doc/usr/share/doc/ironic-doc/html/search.html dh_sphinxdoc -O--buildsystem=python_distutils -dh_sphinxdoc: warning: ignoring unknown JavaScript code: debian/ironic-doc/usr/share/doc/ironic-doc/html/_static/js/navigation.js dh_sphinxdoc: warning: ignoring unknown JavaScript code: debian/ironic-doc/usr/share/doc/ironic-doc/html/_static/js/bootstrap.min.js -dh_sphinxdoc: warning: ignoring unknown JavaScript code: debian/ironic-doc/usr/share/doc/ironic-doc/html/_static/js/docs.js -dh_sphinxdoc: warning: ignoring unknown JavaScript code: debian/ironic-doc/usr/share/doc/ironic-doc/html/_static/js/webui-popover.js +dh_sphinxdoc: warning: ignoring unknown JavaScript code: debian/ironic-doc/usr/share/doc/ironic-doc/html/_static/js/navigation.js dh_sphinxdoc: warning: ignoring unknown JavaScript code: debian/ironic-doc/usr/share/doc/ironic-doc/html/_static/toggle.js +dh_sphinxdoc: warning: ignoring unknown JavaScript code: debian/ironic-doc/usr/share/doc/ironic-doc/html/_static/js/webui-popover.js +dh_sphinxdoc: warning: ignoring unknown JavaScript code: debian/ironic-doc/usr/share/doc/ironic-doc/html/_static/js/docs.js make[1]: Leaving directory '/build/reproducible-path/ironic-21.1.0' debian/rules override_dh_installchangelogs make[1]: Entering directory '/build/reproducible-path/ironic-21.1.0' @@ -57038,13 +57081,13 @@ make[1]: pyversions: No such file or directory py3versions: no X-Python3-Version in control file, using supported versions dh_python3 --shebang=/usr/bin/python3 -I: dh_python3 tools:114: replacing shebang in debian/ironic-common/usr/bin/ironic-api-wsgi I: dh_python3 tools:114: replacing shebang in debian/ironic-common/usr/bin/ironic-status -I: dh_python3 tools:114: replacing shebang in debian/ironic-common/usr/bin/ironic-dbsync -I: dh_python3 tools:114: replacing shebang in debian/ironic-common/usr/bin/ironic -I: dh_python3 tools:114: replacing shebang in debian/ironic-common/usr/bin/ironic-rootwrap I: dh_python3 tools:114: replacing shebang in debian/ironic-common/usr/bin/ironic-conductor +I: dh_python3 tools:114: replacing shebang in debian/ironic-common/usr/bin/ironic-rootwrap +I: dh_python3 tools:114: replacing shebang in debian/ironic-common/usr/bin/ironic +I: dh_python3 tools:114: replacing shebang in debian/ironic-common/usr/bin/ironic-api-wsgi I: dh_python3 tools:114: replacing shebang in debian/ironic-common/usr/bin/ironic-api +I: dh_python3 tools:114: replacing shebang in debian/ironic-common/usr/bin/ironic-dbsync make[1]: Leaving directory '/build/reproducible-path/ironic-21.1.0' debian/rules override_dh_installinit make[1]: Entering directory '/build/reproducible-path/ironic-21.1.0' @@ -57057,15 +57100,17 @@ cat /usr/share/openstack-pkg-tools/init-script-template >>$MYINIT.init ; \ pkgos-gen-systemd-unit $i ; \ done -+ ls -1 debian/ironic-api.init.in debian/ironic-conductor.init.in -+ echo debian/ironic-api.init.in -+ sed s/.init.in// +++ ls -1 debian/ironic-api.init.in debian/ironic-conductor.init.in ++ for i in `ls -1 debian/*.init.in` +++ echo debian/ironic-api.init.in +++ sed s/.init.in// + MYINIT=debian/ironic-api + cp debian/ironic-api.init.in debian/ironic-api.init + cat /usr/share/openstack-pkg-tools/init-script-template + pkgos-gen-systemd-unit debian/ironic-api.init.in -+ echo debian/ironic-conductor.init.in -+ sed s/.init.in// ++ for i in `ls -1 debian/*.init.in` +++ echo debian/ironic-conductor.init.in +++ sed s/.init.in// + MYINIT=debian/ironic-conductor + cp debian/ironic-conductor.init.in debian/ironic-conductor.init + cat /usr/share/openstack-pkg-tools/init-script-template @@ -57075,7 +57120,7 @@ MYPKG=`echo $i | sed s/.service.in//` ; \ cp $MYPKG.service.in $MYPKG.service ; \ done -+ ls -1 debian/*.service.in +++ ls -1 'debian/*.service.in' ls: cannot access 'debian/*.service.in': No such file or directory # Generate the systemd unit if there's no already existing .service.in set -e ; set -x ; for i in `ls debian/*.init.in` ; do \ @@ -57084,16 +57129,18 @@ pkgos-gen-systemd-unit $i ; \ fi \ done -+ ls debian/ironic-api.init.in debian/ironic-conductor.init.in -+ sed s/.init.in/.service.in/ -+ echo debian/ironic-api.init.in +++ ls debian/ironic-api.init.in debian/ironic-conductor.init.in ++ for i in `ls debian/*.init.in` +++ sed s/.init.in/.service.in/ +++ echo debian/ironic-api.init.in + MYINIT=debian/ironic-api.service.in -+ [ -e debian/ironic-api.service.in ] ++ '[' -e debian/ironic-api.service.in ']' + pkgos-gen-systemd-unit debian/ironic-api.init.in -+ echo debian/ironic-conductor.init.in -+ sed s/.init.in/.service.in/ ++ for i in `ls debian/*.init.in` +++ echo debian/ironic-conductor.init.in +++ sed s/.init.in/.service.in/ + MYINIT=debian/ironic-conductor.service.in -+ [ -e debian/ironic-conductor.service.in ] ++ '[' -e debian/ironic-conductor.service.in ']' + pkgos-gen-systemd-unit debian/ironic-conductor.init.in dh_installinit --error-handler=true make[1]: Leaving directory '/build/reproducible-path/ironic-21.1.0' @@ -57123,9 +57170,9 @@ make[1]: Leaving directory '/build/reproducible-path/ironic-21.1.0' dh_md5sums -O--buildsystem=python_distutils dh_builddeb -O--buildsystem=python_distutils -dpkg-deb: building package 'python3-ironic' in '../python3-ironic_21.1.0-3_all.deb'. dpkg-deb: building package 'ironic-conductor' in '../ironic-conductor_21.1.0-3_all.deb'. dpkg-deb: building package 'ironic-api' in '../ironic-api_21.1.0-3_all.deb'. +dpkg-deb: building package 'python3-ironic' in '../python3-ironic_21.1.0-3_all.deb'. dpkg-deb: building package 'ironic-doc' in '../ironic-doc_21.1.0-3_all.deb'. dpkg-deb: building package 'ironic-common' in '../ironic-common_21.1.0-3_all.deb'. dpkg-genbuildinfo --build=binary -O../ironic_21.1.0-3_armhf.buildinfo @@ -57136,12 +57183,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/2581/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/2581/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/15078 and its subdirectories -I: Current time: Sat Jan 6 02:02:22 -12 2024 -I: pbuilder-time-stamp: 1704549742 +I: removing directory /srv/workspace/pbuilder/2581 and its subdirectories +I: Current time: Sun Jan 7 04:25:58 +14 2024 +I: pbuilder-time-stamp: 1704551158