)]}'
{"id":"openstack%2Fnova~960250","triplet_id":"openstack%2Fnova~stable%2F2024.1~Ie9d311ea9f59ff49593003e3773b690dd36fdeb2","project":"openstack/nova","branch":"stable/2024.1","topic":"bug/2115905","attention_set":{},"removed_from_attention_set":{"9708":{"account":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"last_update":"2025-10-31 13:47:56.000000000","reason":"Change was abandoned"}},"hashtags":[],"change_id":"Ie9d311ea9f59ff49593003e3773b690dd36fdeb2","subject":"[pci]Keep used dev in Placement regardless of dev_spec","status":"ABANDONED","created":"2025-09-09 09:21:25.000000000","updated":"2025-10-31 13:47:56.000000000","total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"a96b24ac0d5f5b160d9d07bdf7430a09dfb68e71","_number":960250,"virtual_id_number":960250,"owner":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":1,"date":"2025-09-09 11:19: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":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":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":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":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"CC":[{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-09-09 11:19: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"},{"updated":"2025-09-09 11:25:29.000000000","updated_by":{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"},"reviewer":{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"},"state":"CC"},{"updated":"2025-10-31 13:47:56.000000000","updated_by":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"reviewer":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"state":"CC"}],"messages":[{"id":"ded5503b7257c91eeea76cc87929caad137f95d8","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"date":"2025-09-09 09:21:25.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"d0948bcdedf38790d97d47ac8e031c4cd4b5d92b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-09 11:19:51.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/502d4b6784dc4863ac81d47b151b0439\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/f39a301cbd124e1cb39c7cf2e87499b3 : SUCCESS in 51m 22s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/83debb458f304462bc55a483adf9284b : SUCCESS in 1h 52m 35s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/88e585515be241cbac57e08cf6bdf134 : SUCCESS in 25m 51s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/0053b6317aed4a5fa61a48b0f1fb9ee8 : SUCCESS in 19m 13s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a98d05aa211d415ebfd47321ebcf8dcf : SUCCESS in 3m 56s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/5d769a57f741469ab69b4e7046455e42 : SUCCESS in 15m 03s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/31c1bb3300b3487995791848fe7ba3f6 : SUCCESS in 7m 13s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/610fb5f2f43047138cbeee4d6257c471 : SUCCESS in 8m 07s\n- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa https://zuul.opendev.org/t/openstack/build/ec039ff71972426ea6576d69fc22c4fb : SUCCESS in 54m 23s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/eea8764780504e0d8d9f5bb00546f222 : SUCCESS in 1h 40m 00s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/f07dc4d42af0447d89d8ea9e673afa4a : FAILURE in 4m 45s (non-voting)\n- nova-tox-functional-py38 https://zuul.opendev.org/t/openstack/build/2e9e4c50c9244878826fc7d2a818ac25 : SUCCESS in 27m 45s\n- nova-tox-functional-py39 https://zuul.opendev.org/t/openstack/build/184478fcae864ee5b98be8ca5cffd10a : SUCCESS in 23m 01s\n- nova-tox-functional-py310 https://zuul.opendev.org/t/openstack/build/87603c827244498ebf96d4dfb8cadc0d : SUCCESS in 25m 18s\n- tempest-integrated-compute-enforce-scope-new-defaults https://zuul.opendev.org/t/openstack/build/aae9fef414744813b7ac3399c9f49786 : SUCCESS in 1h 45m 12s\n- tempest-integrated-compute-rbac-old-defaults https://zuul.opendev.org/t/openstack/build/151788bdea3b464c9f0307f80d8a60b5 : SUCCESS in 1h 37m 06s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/aef30e5ca315421096784c84e8bb870b : SUCCESS in 1h 17m 30s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/272985e3465b4781996f91df32226863 : SUCCESS in 55m 34s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/c75e742a700b49438a092cc09dc0f31c : SUCCESS in 19m 16s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/d9751deea5ea4a8db33d510a52a1ddd1 : SUCCESS in 30m 04s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"de3d2f3b967a3d839d3069a66f05aa0a95b7050b","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-09 11:22:31.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/19dde705f0224086aa7f80dc00b4e1c0\n\n- openstack-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/6dfe3b6df109429f89f576de662d7e4e : SUCCESS in 32m 45s (non-voting)\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/f43a9664a5d04be89d4954c715000ad0 : SUCCESS in 22m 50s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"2e194eb602fabcb9f18fdb81ff13316e5953988b","tag":"autogenerated:jenkins-gerrit-trigger","author":{"_account_id":34420,"name":"openstack lightbits","display_name":"Lightbits CI","email":"openstack@lightbitslabs.com","username":"openstack_lightbits"},"date":"2025-09-09 11:25:29.000000000","message":"Patch Set 1:\n\nBuild succeeded. log path: ${LOG_PATH}\nLeave a comment with \u0027run-Lightbits CI\u0027 to trigger a recheck. \nFor more information about CI, please see https://wiki.openstack.org/wiki/ThirdPartySystems/LightbitsLabs_CI","accounts_in_message":[],"_revision_number":1},{"id":"a96b24ac0d5f5b160d9d07bdf7430a09dfb68e71","tag":"autogenerated:gerrit:abandon","author":{"_account_id":17685,"name":"Elod Illes","email":"elod.illes@est.tech","username":"elod.illes"},"date":"2025-10-31 13:47:56.000000000","message":"Abandoned\n\nstable/2024.1 branch of openstack/nova is about to be deleted. To be able to do that, all open patches need to be abandoned. Please cherry pick the patch to unmaintained/2024.1 if you want to further work on this patch.","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"0d27d8b008c6c614b113e738828b6440f8817b1e","revisions":{"0d27d8b008c6c614b113e738828b6440f8817b1e":{"kind":"REWORK","_number":1,"created":"2025-09-09 09:21:25.000000000","uploader":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"ref":"refs/changes/50/960250/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/50/960250/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/50/960250/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/50/960250/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/50/960250/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/50/960250/1"}}},"commit":{"parents":[{"commit":"3716be03f08b78bb0523c108503b3fc1b9dae176","subject":"[PCI tracker]Remove non configured devs when freed","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/3716be03f08b78bb0523c108503b3fc1b9dae176"}]}],"author":{"name":"Balazs Gibizer","email":"gibi@redhat.com","date":"2025-07-04 15:06:29.000000000","tz":120},"committer":{"name":"Balazs Gibizer","email":"gibi@redhat.com","date":"2025-09-09 09:14:32.000000000","tz":120},"subject":"[pci]Keep used dev in Placement regardless of dev_spec","message":"[pci]Keep used dev in Placement regardless of dev_spec\n\nThis changes the PCI Placement translator edge case handling logic to\nresolve a bug preventing VM deletion.\n\nIf a device is allocated but removed from the dev_spec then we need to\nkeep the device in Placement otherwise the Placement update will be\nrejected as we are trying to delete an RP that has allocations. This\nprevent the deletion of a VM that is using this removed device.\n\nThe alternative would be to not allow the nova-compute service to\nstart if it detects this situation. However this situation can\nhappen in at least two very different cases:\n1. The admin removed a dev_spec. In this case adding the dev_spec back,\n   removing the VM, then removing the dev_spec is the right course of\n   action and nova-compute failing to start would be OK to enforce this.\n\n2. A device disappeared as the HW is died. In this case not allowing the\n   nova-compute to start up would prevent the admin to migrate the\n   other VMs away from the host before doing a HW replacement.\n\nNote that this is fairly complex change due to the fact that based on\npurely the PciDevice object we cannot differentiate between the two\ncases:\n\n1. A PciDevice object is being removed as the related device spec is\n   removed from the configuration or the device is disappeared from\n   the hypervisor.\n\n2. A PciDevice object was held back for a while as the device spec is\n   removed (or the device disappeared from the hypervisor) while the\n   device was allocated to a VM. And now that VM is undergoing deletion.\n\nIn both case the PCI in Placement logic sees a PciDevice object in\ndev.status.REMOVED and dev.instance_uuid \u003d None. However the two cases\nrequire different handling.\n\n1. The related inventory can be removed from Placement\n\n2. The related inventory cannot be removed from Placement as it is still\n   being allocated to the VM that is undergoing deletion.\n\nThe second case is due to the sequence of events during a VM deletion\nbeing:\n* We destroy the VM on the hypervisor\n* We update the PCI tracker to free the device. As the device was held back\n  the tracker not just frees the device but removes it as well as it is\n  not configured any more in the dev_spec so it should not go to\n  AVAILABLE state.\n* When the PCI tracker is updated it calls the PCI in Placement logic\n  to update Placement inventories as well. At this point the VM deletion\n  still in progress and the VM\u0027s allocation hasn\u0027t been deleted in\n  Placement, so the Placement inventory cannot be removed as it is still\n  allocated.\n* After the resource tracker update is finished the compute manager\n  deletes the VM\u0027s allocation in Placement.\n\nSo in this edge case we temporarily keep the Placement inventory and\nonly remove that in a subsequent periodic run where we are sure the\nVM\u0027s allocation is gone. This means there is a time window when\nthe Placement inventory shows an extra resource even though that\nresource has already been removed from the PCI tracker. During this\nwindow the scheduler might select a host based on this ghost inventory\nand the compute resource tracker will reject the boot request forcing\na normal re-schedule.\n\nCloses-Bug: #2115905\nChange-Id: Ie9d311ea9f59ff49593003e3773b690dd36fdeb2\nSigned-off-by: Balazs Gibizer \u003cgibi@redhat.com\u003e\n(cherry picked from commit 4495f1f019ccaa0067121d8f5b367140aa9cb7ae)\n(cherry picked from commit 78be1679312768383b684fa70ca4d2f5c4e35fa9)\n(cherry picked from commit 14f7df7914b36761f745788259ecaea82fb4b85f)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/0d27d8b008c6c614b113e738828b6440f8817b1e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/0d27d8b008c6c614b113e738828b6440f8817b1e"}]},"branch":"refs/heads/stable/2024.1"}},"requirements":[],"submit_records":[],"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":{}}},{"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":{}}},{"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":{}}}]}
