)]}'
{"id":"openstack%2Fnova~958202","triplet_id":"openstack%2Fnova~unmaintained%2Fzed~I439338bd2f27ccd65a436d18c8cbc9c3127ee612","project":"openstack/nova","branch":"unmaintained/zed","attention_set":{"11604":{"account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"last_update":"2025-08-21 15:00:48.000000000","reason":"Reviewer was added"},"6476":{"account":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"last_update":"2025-08-21 16:28:51.000000000","reason":"A robot voted negatively on a label"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I439338bd2f27ccd65a436d18c8cbc9c3127ee612","subject":"restrict swap volume to cinder","status":"NEW","created":"2025-08-21 13:48:26.000000000","updated":"2025-08-21 16:37:16.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"430b4a95ac786280de20ebacf80aab6cae6c619d","_number":958202,"virtual_id_number":958202,"owner":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"tag":"autogenerated:zuul:check","value":-1,"date":"2025-08-21 16:28:51.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":0,"max":2},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-08-21 13:48:26.000000000","updated_by":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"reviewer":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"state":"CC"},{"updated":"2025-08-21 15:00:48.000000000","updated_by":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"reviewer":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"state":"REVIEWER"},{"updated":"2025-08-21 16:28:51.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"bb3474f6163740c2144fef3d7a8d48cbf66fb8ab","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"date":"2025-08-21 13:48:26.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"ecb36c82b08057b435c94aa4d34202fd72b6cb36","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"date":"2025-08-21 15:00:48.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"48b4cb1f4939b286fa86470c2504d262d61746db","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-08-21 16:28:51.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/33ff8f2fbdcf4a2b88906ea7313b034e\n\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/310c7f3989e74eebb5952e69b2e922ed : FAILURE in 1h 02m 18s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/ed5f1802fe164aa4adfd911b9f0e256d : SUCCESS in 19m 54s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/47b70fcd07204a7bab0d20a5c8bf83fe : SUCCESS in 17m 46s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/0d84e406d9cc4c19b7e21b0ee52c8e06 : SUCCESS in 12m 46s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/33476d9870b04010a1ff5cd59b9a1697 : SUCCESS in 13m 58s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/61094968ea014f3ba90bfd902c43bbb5 : SUCCESS in 12m 06s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/826a9cf5e64f428b9c4a9c2c0589f473 : SUCCESS in 10m 52s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/238115ae5e3548b0a8117bf7ce5f169e : SUCCESS in 4m 51s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/f13bd1848cd849e6a064c03e27773faa : SUCCESS in 16m 55s\n- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa https://zuul.opendev.org/t/openstack/build/87b458868ec64ab3b92d211e2b9bbc18 : SUCCESS in 1h 01m 29s (non-voting)\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/53988e03f2fb4d90a5db39984c688689 : SUCCESS in 19m 44s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/b57046ee8f0548f3812f376d9c97d655 : FAILURE in 1h 14m 22s\n- nova-next https://zuul.opendev.org/t/openstack/build/c4cbfbb51adb43798cda01e092aae387 : FAILURE in 1h 23m 05s\n- nova-ovs-hybrid-plug https://zuul.opendev.org/t/openstack/build/6fe267e61d224010abfc2b2a4619b2d9 : SUCCESS in 21m 53s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/20a63bb4c2864aaba3ece1be9b654590 : FAILURE in 5m 52s (non-voting)\n- nova-tox-functional-py38 https://zuul.opendev.org/t/openstack/build/8a060f344ee241d8b563f0a116731eaa : SUCCESS in 41m 23s\n- nova-tox-functional-py39 https://zuul.opendev.org/t/openstack/build/0672e4ef523448b591acb09186e30f9e : SUCCESS in 23m 14s\n- nova-tox-functional-py310 https://zuul.opendev.org/t/openstack/build/8c61a08ce6d646bca15619184d61275c : SUCCESS in 30m 57s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/056990ca9aaf447eb87e805d9b20286b : SUCCESS in 1h 19m 39s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/6b272677c4cb4bd9856aa631c00e979a : SUCCESS in 21m 30s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/203721eef72e4b21b20b9cb96d01a264 : FAILURE in 26m 40s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/1549cb4ac2c34b24a0864b2a29d2f22e : FAILURE in 32m 46s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"430b4a95ac786280de20ebacf80aab6cae6c619d","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-08-21 16:37:16.000000000","message":"Patch Set 2:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/bef5d4f62dec4f84a54b4afed8c6c94d\n\n- openstack-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/8f320afd58a146bb84b8d0fb0562f0d0 : SUCCESS in 41m 59s (non-voting)\n- openstack-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/e83bf760800a415aa9da4208662ce6a1 : FAILURE in 56m 22s (non-voting)","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"87a18adb55c8697c82dccd17e5741003f9954288","revisions":{"446c675016362afe4832af28a551ad286dfe7084":{"kind":"REWORK","_number":1,"created":"2025-08-21 13:48:26.000000000","uploader":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"ref":"refs/changes/02/958202/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/02/958202/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/02/958202/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/02/958202/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/02/958202/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/02/958202/1"}}},"commit":{"parents":[{"commit":"09c9826e1f2d802033f859cb0e89439632f885f8","subject":"Merge \"Fix deepcopy usage for BlockDeviceMapping in get_root_info\" into unmaintained/zed","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/09c9826e1f2d802033f859cb0e89439632f885f8"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2025-08-15 13:33:34.000000000","tz":60},"committer":{"name":"Thomas Goirand","email":"zigo@debian.org","date":"2025-08-21 13:48:10.000000000","tz":120},"subject":"restrict swap volume to cinder","message":"restrict swap volume to cinder\n\nThis change tightens the validation around the attachment\nupdate API to ensure that it can only be called if the source\nvolume has a non empty migration status.\n\nThat means it will only accept a request to swap the volume if\nit is the result of a cinder volume migration.\n\nThis change is being made to prevent the instance domain\nXML from getting out of sync with the nova BDM records\nand cinder connection info. In the future support for direct\nswap volume actions can be re-added if and only if the\nnova libvirt driver is updated to correctly modify the domain.\nThe libvirt driver is the only driver that supported this API\noutside of a cinder orchestrated swap volume.\n\nBy allowing the domain XML and BDMs to get out of sync\nif an admin later live-migrates the VM the host path will not be\nmodified for the destination host. Normally this results in a live\nmigration failure which often prompts the admin to cold migrate instead.\nhowever if the source device path exists on the destination the migration\nwill proceed. This can lead to 2 VMs using the same host block device.\nAt best this will cause a crash or data corruption.\nAt worst it will allow one guest to access the data of another.\n\nPrior to this change there was an explicit warning in nova API ref\nstating that humans should never call this API because it can lead\nto this situation. Now it considered a hard error due to the\nsecurity implications.\n\nCloses-Bug: #2112187\nDepends-on: https://review.opendev.org/c/openstack/tempest/+/957753\nChange-Id: I439338bd2f27ccd65a436d18c8cbc9c3127ee612\nSigned-off-by: Thomas Goirand \u003czigo@debian.org\u003e\n(cherry picked from commit 93c0f9bc749cea39f9cd1bd9d3e5a5585f1f6cac)\n(cherry picked from commit 76fe0294ffa8fc2444727ba8da584724d2493d56)\n(cherry picked from commit 6fcc9e2dd97abfc78fda822484d8d3592d719bea)\n(cherry picked from commit 5a92bb594fd5513158044653ddd6919ae8f0ffb2)\n(cherry picked from commit 93bdf97a95f637d0c19640b44d18d209061a4275)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/446c675016362afe4832af28a551ad286dfe7084"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/446c675016362afe4832af28a551ad286dfe7084"}]},"branch":"refs/heads/unmaintained/zed"},"87a18adb55c8697c82dccd17e5741003f9954288":{"kind":"REWORK","_number":2,"created":"2025-08-21 15:00:48.000000000","uploader":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"ref":"refs/changes/02/958202/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/02/958202/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/02/958202/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/02/958202/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/02/958202/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/02/958202/2"}}},"commit":{"parents":[{"commit":"09c9826e1f2d802033f859cb0e89439632f885f8","subject":"Merge \"Fix deepcopy usage for BlockDeviceMapping in get_root_info\" into unmaintained/zed","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/09c9826e1f2d802033f859cb0e89439632f885f8"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2025-08-15 13:33:34.000000000","tz":60},"committer":{"name":"Thomas Goirand","email":"zigo@debian.org","date":"2025-08-21 15:00:31.000000000","tz":120},"subject":"restrict swap volume to cinder","message":"restrict swap volume to cinder\n\nThis change tightens the validation around the attachment\nupdate API to ensure that it can only be called if the source\nvolume has a non empty migration status.\n\nThat means it will only accept a request to swap the volume if\nit is the result of a cinder volume migration.\n\nThis change is being made to prevent the instance domain\nXML from getting out of sync with the nova BDM records\nand cinder connection info. In the future support for direct\nswap volume actions can be re-added if and only if the\nnova libvirt driver is updated to correctly modify the domain.\nThe libvirt driver is the only driver that supported this API\noutside of a cinder orchestrated swap volume.\n\nBy allowing the domain XML and BDMs to get out of sync\nif an admin later live-migrates the VM the host path will not be\nmodified for the destination host. Normally this results in a live\nmigration failure which often prompts the admin to cold migrate instead.\nhowever if the source device path exists on the destination the migration\nwill proceed. This can lead to 2 VMs using the same host block device.\nAt best this will cause a crash or data corruption.\nAt worst it will allow one guest to access the data of another.\n\nPrior to this change there was an explicit warning in nova API ref\nstating that humans should never call this API because it can lead\nto this situation. Now it considered a hard error due to the\nsecurity implications.\n\nCloses-Bug: #2112187\nDepends-on: https://review.opendev.org/c/openstack/tempest/+/957753\nChange-Id: I439338bd2f27ccd65a436d18c8cbc9c3127ee612\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\nSigned-off-by: Thomas Goirand \u003czigo@debian.org\u003e\n(cherry picked from commit 93c0f9bc749cea39f9cd1bd9d3e5a5585f1f6cac)\n(cherry picked from commit 76fe0294ffa8fc2444727ba8da584724d2493d56)\n(cherry picked from commit 6fcc9e2dd97abfc78fda822484d8d3592d719bea)\n(cherry picked from commit 5a92bb594fd5513158044653ddd6919ae8f0ffb2)\n(cherry picked from commit 93bdf97a95f637d0c19640b44d18d209061a4275)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/87a18adb55c8697c82dccd17e5741003f9954288"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/87a18adb55c8697c82dccd17e5741003f9954288"}]},"branch":"refs/heads/unmaintained/zed"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"},{"label":"Review-Priority","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Review-Priority","description":"Review Priority","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
