)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5217608c794fc5f1fe8816bfb8307d310bdc5231","unresolved":true,"context_lines":[{"line_number":12,"context_line":"If a device is allocated but removed from the dev_spec then we need to"},{"line_number":13,"context_line":"keep the device in Placement otherwise the Placement update will be"},{"line_number":14,"context_line":"rejected as we are trying to delete an RP that has allocations. This"},{"line_number":15,"context_line":"prevent the deletion of a VM that are using this removed device."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The alternative would be to not allow the nova-compute service to"},{"line_number":18,"context_line":"start if it detects this situation. However this situation can"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"a3ca6920_07f5c5ce","line":15,"range":{"start_line":15,"start_character":24,"end_line":15,"end_character":43},"updated":"2025-09-02 11:56:39.000000000","message":"nit: a VM this is using","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd5ca85f9d104bf7751f0c172bf7fca048ef22aa","unresolved":false,"context_lines":[{"line_number":12,"context_line":"If a device is allocated but removed from the dev_spec then we need to"},{"line_number":13,"context_line":"keep the device in Placement otherwise the Placement update will be"},{"line_number":14,"context_line":"rejected as we are trying to delete an RP that has allocations. This"},{"line_number":15,"context_line":"prevent the deletion of a VM that are using this removed device."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The alternative would be to not allow the nova-compute service to"},{"line_number":18,"context_line":"start if it detects this situation. However this situation can"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9ea88b57_f583ec5d","line":15,"range":{"start_line":15,"start_character":24,"end_line":15,"end_character":43},"in_reply_to":"02e3178b_c97f1352","updated":"2025-09-04 10:04:43.000000000","message":"ah crap i ment a VM that is using...\ni just ment you to replace are with is","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d3aad073ba9719b54b871969ee2d19ed04669b01","unresolved":false,"context_lines":[{"line_number":12,"context_line":"If a device is allocated but removed from the dev_spec then we need to"},{"line_number":13,"context_line":"keep the device in Placement otherwise the Placement update will be"},{"line_number":14,"context_line":"rejected as we are trying to delete an RP that has allocations. This"},{"line_number":15,"context_line":"prevent the deletion of a VM that are using this removed device."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The alternative would be to not allow the nova-compute service to"},{"line_number":18,"context_line":"start if it detects this situation. However this situation can"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"6d2956b8_369d91d8","line":15,"range":{"start_line":15,"start_character":24,"end_line":15,"end_character":43},"in_reply_to":"9ea88b57_f583ec5d","updated":"2025-09-04 10:05:54.000000000","message":"just fixed this myself","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aeaa8651081bcea806171fe71c96dd47c9a15331","unresolved":false,"context_lines":[{"line_number":12,"context_line":"If a device is allocated but removed from the dev_spec then we need to"},{"line_number":13,"context_line":"keep the device in Placement otherwise the Placement update will be"},{"line_number":14,"context_line":"rejected as we are trying to delete an RP that has allocations. This"},{"line_number":15,"context_line":"prevent the deletion of a VM that are using this removed device."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The alternative would be to not allow the nova-compute service to"},{"line_number":18,"context_line":"start if it detects this situation. However this situation can"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"02e3178b_c97f1352","line":15,"range":{"start_line":15,"start_character":24,"end_line":15,"end_character":43},"in_reply_to":"a3ca6920_07f5c5ce","updated":"2025-09-04 08:34:14.000000000","message":"Done","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5217608c794fc5f1fe8816bfb8307d310bdc5231","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"2. A device disappeared as the HW is died. In this case not allowing the"},{"line_number":25,"context_line":"   nova-compute to start up would prevent the admin to migrate the"},{"line_number":26,"context_line":"   other VMs away from the host before doing a HW replacement."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Note that this is fairly complex change due to the fact that based on"},{"line_number":29,"context_line":"purely the PciDevice object we cannot differentiate between the two"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"93e66f1b_886a1a17","line":26,"updated":"2025-09-02 11:56:39.000000000","message":"it would force them ot evacuate ya which as much as i hate to say is a good enough reaosn not to make this a hard error. we would have to add a workaround flag otherwise to cater for this and we should not force admins to set one when they are already dealing with an unplanned mataince event like this.","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de67adea7db9f0f9f842b58f5c4bc3db4f57518a","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"2. A device disappeared as the HW is died. In this case not allowing the"},{"line_number":25,"context_line":"   nova-compute to start up would prevent the admin to migrate the"},{"line_number":26,"context_line":"   other VMs away from the host before doing a HW replacement."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Note that this is fairly complex change due to the fact that based on"},{"line_number":29,"context_line":"purely the PciDevice object we cannot differentiate between the two"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"18a09722_1629712b","line":26,"in_reply_to":"93e66f1b_886a1a17","updated":"2025-09-02 13:05:37.000000000","message":"yeah a single PCI device failure should not affect the other VMs not depending on that device.","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5217608c794fc5f1fe8816bfb8307d310bdc5231","unresolved":false,"context_lines":[{"line_number":44,"context_line":"1. The related inventory can be removed from Placement"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"2. The related inventory cannot be removed from Placement as it is still"},{"line_number":47,"context_line":"   being allocated to the VM that is undergoing deletion."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The second case is due to the sequence of events during a VM deletion"},{"line_number":50,"context_line":"being:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"207b9e4d_84e9f7f9","line":47,"updated":"2025-09-02 11:56:39.000000000","message":"ack, thanks for calling this out as its not obvious without digging into the code that it would be a factor.","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5217608c794fc5f1fe8816bfb8307d310bdc5231","unresolved":true,"context_lines":[{"line_number":59,"context_line":"  Placement, so the Placement inventory cannot be removed as it is still"},{"line_number":60,"context_line":"  allocated."},{"line_number":61,"context_line":"* After the resource tracker update is finished the compute manager"},{"line_number":62,"context_line":"  deletes the VM\u0027s allocation in Placement."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"So in this edge case we temporarily keep the Placement inventory and"},{"line_number":65,"context_line":"only remove that in a subsequent periodic run where we are sure the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"6b55fff6_07e3bbfe","line":62,"updated":"2025-09-02 11:56:39.000000000","message":"this actually feels backward as the placement allocation should likely be free easier but refactoring that is also likely non trivial.","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"87fa7d577d26082be8e7b2aef5d4b4bce298c067","unresolved":false,"context_lines":[{"line_number":59,"context_line":"  Placement, so the Placement inventory cannot be removed as it is still"},{"line_number":60,"context_line":"  allocated."},{"line_number":61,"context_line":"* After the resource tracker update is finished the compute manager"},{"line_number":62,"context_line":"  deletes the VM\u0027s allocation in Placement."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"So in this edge case we temporarily keep the Placement inventory and"},{"line_number":65,"context_line":"only remove that in a subsequent periodic run where we are sure the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"c3dfa3f7_25d9c992","line":62,"in_reply_to":"38a7dae5_628af91d","updated":"2025-09-02 13:17:17.000000000","message":"Acknowledged","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de67adea7db9f0f9f842b58f5c4bc3db4f57518a","unresolved":true,"context_lines":[{"line_number":59,"context_line":"  Placement, so the Placement inventory cannot be removed as it is still"},{"line_number":60,"context_line":"  allocated."},{"line_number":61,"context_line":"* After the resource tracker update is finished the compute manager"},{"line_number":62,"context_line":"  deletes the VM\u0027s allocation in Placement."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"So in this edge case we temporarily keep the Placement inventory and"},{"line_number":65,"context_line":"only remove that in a subsequent periodic run where we are sure the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"38a7dae5_628af91d","line":62,"in_reply_to":"6b55fff6_07e3bbfe","updated":"2025-09-02 13:05:37.000000000","message":"It is the difference of location where we handle different things. The PCI device is freed in the tracker when the claim is dropped, but placement allocation is not part of the claim, as it was created in the scheduler originally but dropped by the compute during delete. So yeah it is tempting to say that we should do the following during delete:\n* free PCI device\n* drop placement allocation\n* delete the PCI device from the tracker if it was only held because of the allocation but otherwise was removed from the configuration\n* run PCI tracker \u003d\u003e placement update to remove the RP of the delete device if it was the last device on the RP\n\nBut the structure of the code is wildly different than that.","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5217608c794fc5f1fe8816bfb8307d310bdc5231","unresolved":true,"context_lines":[{"line_number":68,"context_line":"resource has already been removed from the PCI tracker. During this"},{"line_number":69,"context_line":"window the scheduler might select a host based on this ghost inventory"},{"line_number":70,"context_line":"and the compute resource tracker will reject the boot request forcing"},{"line_number":71,"context_line":"a normal re-schedule."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Closes-Bug: #2115905"},{"line_number":74,"context_line":"Change-Id: Ie9d311ea9f59ff49593003e3773b690dd36fdeb2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"73486cd5_17073755","line":71,"updated":"2025-09-02 11:56:39.000000000","message":"i wonder is it wort setting reserved\u003dtotal in this case?","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"87fa7d577d26082be8e7b2aef5d4b4bce298c067","unresolved":true,"context_lines":[{"line_number":68,"context_line":"resource has already been removed from the PCI tracker. During this"},{"line_number":69,"context_line":"window the scheduler might select a host based on this ghost inventory"},{"line_number":70,"context_line":"and the compute resource tracker will reject the boot request forcing"},{"line_number":71,"context_line":"a normal re-schedule."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Closes-Bug: #2115905"},{"line_number":74,"context_line":"Change-Id: Ie9d311ea9f59ff49593003e3773b690dd36fdeb2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"978a3ea8_276592ee","line":71,"in_reply_to":"3b700266_52b48b67","updated":"2025-09-02 13:17:17.000000000","message":"im ok with defernign this to a followup and perhaps deferning that follow up till after the year of the linux desktop 😊\n\nor when re write in rust.\n\ni agree this change is already pretty complex so i dont think we need ot make it more so.","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de67adea7db9f0f9f842b58f5c4bc3db4f57518a","unresolved":true,"context_lines":[{"line_number":68,"context_line":"resource has already been removed from the PCI tracker. During this"},{"line_number":69,"context_line":"window the scheduler might select a host based on this ghost inventory"},{"line_number":70,"context_line":"and the compute resource tracker will reject the boot request forcing"},{"line_number":71,"context_line":"a normal re-schedule."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Closes-Bug: #2115905"},{"line_number":74,"context_line":"Change-Id: Ie9d311ea9f59ff49593003e3773b690dd36fdeb2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3b700266_52b48b67","line":71,"in_reply_to":"73486cd5_17073755","updated":"2025-09-02 13:05:37.000000000","message":"I don\u0027t think it is trivial to know when to set reserved or to how high to set it. \n\nThe pci placement translator only sees that there are more allocations than devices left, so it adds back devices until such allocation is gone. The translator does not know that we are in the middle of deleting the VM that has the allocation. Also it can be that we have some valid VFs left in the config / tracker but still we are actively removing other VFs from the config from the same PF, so reserved\u003dtotal is to simplistic. \n\nMy bottom line here is that this is already a complex change for an edge case. I would not complicate if further until we clearly see a bug. Having an extra re-schedule in this race window does not worth complicating this logic.","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aeaa8651081bcea806171fe71c96dd47c9a15331","unresolved":false,"context_lines":[{"line_number":68,"context_line":"resource has already been removed from the PCI tracker. During this"},{"line_number":69,"context_line":"window the scheduler might select a host based on this ghost inventory"},{"line_number":70,"context_line":"and the compute resource tracker will reject the boot request forcing"},{"line_number":71,"context_line":"a normal re-schedule."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Closes-Bug: #2115905"},{"line_number":74,"context_line":"Change-Id: Ie9d311ea9f59ff49593003e3773b690dd36fdeb2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"2ebe5253_ca75c435","line":71,"in_reply_to":"978a3ea8_276592ee","updated":"2025-09-04 08:34:14.000000000","message":"Acknowledged :)","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f69b6906b7d14f56345a4d6a242dbeec9a85a1ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"20e88da9_7d64ca03","updated":"2025-07-04 15:12:47.000000000","message":"I will add a reproduce patch before this and cover this change with tests.","commit_id":"37d9b3a3383503687b1a59b052aa95f41d3dd9c7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f34b51eeddf20079246962cbe2a67e8e9ef648e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2d8202fa_3c6149d4","updated":"2025-07-08 10:14:17.000000000","message":"currently I\u0027m blocked on trying to create a positive reproduction of the issue in the functional env. I verified that the fix here is working in devstack and resolving the issue there. Still I want to make a real functional reproducer if possible before we land this.","commit_id":"baf71ab5357f9d8a9f4d85360482f83190398bc8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4a4c4055fe52f0c15cbb9e6b0460998ab5474f6c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"bd432424_c33319d1","updated":"2025-07-09 16:36:09.000000000","message":"This is broken and my attempts to fix it leading to different and complex rabbit holes.\n\n\n```\n            # NOTE(gibi): We need to handle the situation when an instance\n            # uses a device where a dev_spec is removed. Here we need to keep\n            # the device in the Placement view similarly how the PCI tracker\n            # does it.\n            # However, we also need to handle the situation when such VM is\n            # being deleted. In that case we are called after the dev is freed\n            # by the tracker so dev.instance_uuid is None and dev.status is\n            # REMOVED. At this point the Placement allocation for this dev is\n            # still not deleted so we still have to keep the device in our\n            # view. The device will be deleted when the PCI tracker is saved\n            # which happens after us.\n            # However we cannot be overly eager to keep devices here as a\n            # device in REMOVED state might be a device that had no allocation\n            # in Placement so it can be removed already without waiting for\n            # the next periodic update when the device disappears from the\n            # PCI tracker\u0027s list. If we are over eagerly keeping such device\n            # when it is not allocated then that will prevent a single step\n            # reconfiguration from whitelisting a VF to whitelisting its\n            # parent PF, because the VF will be kept at restart and conflict\n            # with the PF.\n```","commit_id":"1f4d83a4927886d8927f603407e22976c8493f76"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ce8d1efdb8941027fa4b5c55feb41e0fde4d2c6c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"04e394d1_05db0e5e","updated":"2025-07-21 07:55:34.000000000","message":"Testing this with devstack I see now that the VF case works properly. However this patch breaks the PF case now. \n\nThe correct codepath is triggered when the allocated but deconfigured device is observed.\n```\nJul 21 07:48:55 aio nova-compute[23407]: WARNING nova.compute.pci_placement_translator [None req-5213f663-90e3-4d97-9c1a-44e3f99311b5 None None] Device spec is not found for device 0000:09:00.0 in [pci]device_spec. The device is allocated by c03439a0-b265-47ea-bcb1-2d8e4e90d3c0. We are keeping this device in the Placement view. You should not remove an allocated device from the configuration. Please restore the configuration. If you cannot restore the configuration as the device is dead then delete or cold migrate the instance and then restart the nova-compute service to resolve the inconsistency.\n```\nbut the Placement view does not contain the device\n```\nJul 21 07:48:55 aio nova-compute[23407]: INFO nova.compute.pci_placement_translator [None req-5213f663-90e3-4d97-9c1a-44e3f99311b5 None None] Placement PCI resource view: Placement PCI view on aio: RP(aio_0000:07:00.0, CUSTOM_PCI_8086_10CA\u003d6, traits\u003dCOMPUTE_MANAGED_PCI_DEVICE), RP(aio_0000:08:00.0, CUSTOM_PCI_8086_10C9\u003d1, traits\u003dCOMPUTE_MANAGED_PCI_DEVICE), RP(aio_0000:0C:00.0, CUSTOM_PCI_8086_10C9\u003d1, traits\u003dCOMPUTE_MANAGED_PCI_DEVICE), RP(aio_0000:0D:00.0, CUSTOM_PCI_8086_10C9\u003d1, traits\u003dCOMPUTE_MANAGED_PCI_DEVICE)\n```\nCausing the same problem we saw with VFs before during restart\n```\nJul 21 07:48:55 aio nova-compute[23407]: ERROR nova.compute.manager nova.exception.ResourceProviderSyncFailed: Failed to synchronize the placement service with resource provider information supplied by the compute host.\n```\nand during VM deletion:\n```\nJul 21 07:52:57 aio nova-compute[23407]: ERROR nova.compute.manager nova.exception.ResourceProviderSyncFailed: Failed to synchronize the placement service with resource provider information supplied by the compute host.\n``````\nbut the VM does not stuck in ERROR but deleted. The PCI device table is correct and the Placement resource provider is correct too. \n\nSo the logs are similar to the original issue but the effect is less severe as VM deletion is possible and the resulting DB states are correct.\n\nI need to find why the functional test not showing this and the fix this bug.","commit_id":"8d8b7fc26335a4ce164be5946d50766390e7cfb3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1f645cc2027958bc336ef1ef2a1324eec9c845ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"67f86517_212a74bc","updated":"2025-07-10 14:43:36.000000000","message":"i kind of have a headach right now so reviewing the pci tracker is not somethign i fell up to right now.\nskiming this it looks like your addign ok test coverage and again the direction looks fine so ill try and loop back to this next week. +0 for now as i dont really have much to add until i make time to do a properer review","commit_id":"8d8b7fc26335a4ce164be5946d50766390e7cfb3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"58ce0517c6dc798766c529acf7161ea992ce68d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"4c93fabf_ce4bb5e3","updated":"2025-07-21 07:40:29.000000000","message":"recheck bug/2116336","commit_id":"8d8b7fc26335a4ce164be5946d50766390e7cfb3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5027dd5f1dc615560bdda74256d3dd03908415be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"bcf1c66a_5e62021d","updated":"2025-07-11 08:33:06.000000000","message":"recheck bug/2116336","commit_id":"8d8b7fc26335a4ce164be5946d50766390e7cfb3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0333032c08f17eb22bed50ec454d839c0fa90bd0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a03353dd_6cfd30e0","updated":"2025-07-17 11:49:38.000000000","message":"recheck gate is unblocked","commit_id":"8d8b7fc26335a4ce164be5946d50766390e7cfb3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"551da1ec68fee3c37c5e090720215d92a2df4513","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"43e5e2d3_82a51c2f","in_reply_to":"04e394d1_05db0e5e","updated":"2025-07-21 11:11:01.000000000","message":"OK it was an easy one to fix. I will run another local manual test to see if its all good.","commit_id":"8d8b7fc26335a4ce164be5946d50766390e7cfb3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8281c7d7fe4f0b4bcd0db95cb624bfdac3309785","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2cb6ff4c_a8262113","updated":"2025-07-21 11:24:08.000000000","message":"Both VF and PF removal cleanly works now in my local devstack. What remains here is cleaning up the series a bit and maybe adding some extra unit test coverage","commit_id":"c2df2a2292ed0918456af9da7d19472a27c9c16a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ea2f728fd91450819ae1db6a7fc5a69aaea5fc88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3f31c2df_31cd7c89","in_reply_to":"2cb6ff4c_a8262113","updated":"2025-07-21 14:21:47.000000000","message":"Did the cleanup and added the extra unit test coverage","commit_id":"c2df2a2292ed0918456af9da7d19472a27c9c16a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de67adea7db9f0f9f842b58f5c4bc3db4f57518a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0e516146_31b335ac","updated":"2025-09-02 13:05:37.000000000","message":"I would like to be conservative about adding more complexity for this change.","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9de9d3236c08a5871552fe736f70731021323c5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"7af899cc_3ffd1ee1","updated":"2025-07-22 13:34:30.000000000","message":"recheck bug/2116336","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f537f295d47826a753782d84e769ae02d1141158","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"784e6526_0027a916","updated":"2025-09-02 13:54:10.000000000","message":"so other then the nits in comment message wording on the prior patches the only other thing that we may want to condier is should we call out these improvement in a release note or not?\n\nim not sure that this is required thogh its a notable operational impovement so im ok either way.","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"}],"nova/compute/pci_placement_translator.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4a4c4055fe52f0c15cbb9e6b0460998ab5474f6c","unresolved":true,"context_lines":[{"line_number":510,"context_line":"                    )"},{"line_number":511,"context_line":"                    # To not try to remove the device from placement"},{"line_number":512,"context_line":"                    # we need to add it to our view explicitly"},{"line_number":513,"context_line":"                    self._add_dev(dev, {})"},{"line_number":514,"context_line":"                else:"},{"line_number":515,"context_line":"                    # This can happen in the following complex scenario:"},{"line_number":516,"context_line":"                    # 1. VM is created using the dev"}],"source_content_type":"text/x-python","patch_set":4,"id":"c29a8410_e0a4bfd0","line":513,"updated":"2025-07-09 16:36:09.000000000","message":"We cannot do this. At this point we don\u0027t have a dev_spec to tell us what RC to use for this inventory. So if this was the last / only device on the RP then we don\u0027t know what RC to use for the inventory in this RP.\n\nThis code only works now for RC based on vendor_id product_id and will create placement conflict if the original inventory is based on the resource_class tag from the device spec.","commit_id":"1f4d83a4927886d8927f603407e22976c8493f76"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb06b26a4d7793d289602446c1e0d63f526f5dd8","unresolved":false,"context_lines":[{"line_number":510,"context_line":"                    )"},{"line_number":511,"context_line":"                    # To not try to remove the device from placement"},{"line_number":512,"context_line":"                    # we need to add it to our view explicitly"},{"line_number":513,"context_line":"                    self._add_dev(dev, {})"},{"line_number":514,"context_line":"                else:"},{"line_number":515,"context_line":"                    # This can happen in the following complex scenario:"},{"line_number":516,"context_line":"                    # 1. VM is created using the dev"}],"source_content_type":"text/x-python","patch_set":4,"id":"53c21c16_7a5bc778","line":513,"in_reply_to":"c29a8410_e0a4bfd0","updated":"2025-07-10 13:38:56.000000000","message":"I solved this with a later step adjusting inventories based on existing allocations.","commit_id":"1f4d83a4927886d8927f603407e22976c8493f76"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a34b5b9a8dc95362b0ba4f467e749c48b4123078","unresolved":true,"context_lines":[{"line_number":624,"context_line":"        allocations: dict,"},{"line_number":625,"context_line":"    ) -\u003e None:"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        # Remove all managed PCI RPs that is not in our view anymore"},{"line_number":628,"context_line":"        rp_names_in_view \u003d {rp.name for rp in self.rps.values()}"},{"line_number":629,"context_line":"        uuids_in_tree \u003d provider_tree.get_provider_uuids_in_tree("},{"line_number":630,"context_line":"            self.root_rp_name)"},{"line_number":631,"context_line":"        for rp_uuid in uuids_in_tree:"},{"line_number":632,"context_line":"            rp_data \u003d provider_tree.data(rp_uuid)"},{"line_number":633,"context_line":"            is_pci_rp \u003d provider_tree.has_traits("},{"line_number":634,"context_line":"                rp_uuid, [os_traits.COMPUTE_MANAGED_PCI_DEVICE])"},{"line_number":635,"context_line":"            if is_pci_rp and rp_data.name not in rp_names_in_view:"},{"line_number":636,"context_line":"                provider_tree.remove(rp_uuid)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        rp_rc_usage \u003d self.get_usage_per_rc_and_rp(allocations)"},{"line_number":639,"context_line":"        for rp_name, rp in self.rps.items():"},{"line_number":640,"context_line":"            rp.update_provider_tree("}],"source_content_type":"text/x-python","patch_set":5,"id":"df409bfa_48f3fa4a","line":637,"range":{"start_line":627,"start_character":0,"end_line":637,"end_character":0},"updated":"2025-07-10 13:42:20.000000000","message":"pull this to a help with a proper name instead of the comment","commit_id":"8d8b7fc26335a4ce164be5946d50766390e7cfb3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b66a8210ab29d5f013323f8cd9104519df59ce58","unresolved":true,"context_lines":[{"line_number":624,"context_line":"        allocations: dict,"},{"line_number":625,"context_line":"    ) -\u003e None:"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        # Remove all managed PCI RPs that is not in our view anymore"},{"line_number":628,"context_line":"        rp_names_in_view \u003d {rp.name for rp in self.rps.values()}"},{"line_number":629,"context_line":"        uuids_in_tree \u003d provider_tree.get_provider_uuids_in_tree("},{"line_number":630,"context_line":"            self.root_rp_name)"},{"line_number":631,"context_line":"        for rp_uuid in uuids_in_tree:"},{"line_number":632,"context_line":"            rp_data \u003d provider_tree.data(rp_uuid)"},{"line_number":633,"context_line":"            is_pci_rp \u003d provider_tree.has_traits("},{"line_number":634,"context_line":"                rp_uuid, [os_traits.COMPUTE_MANAGED_PCI_DEVICE])"},{"line_number":635,"context_line":"            if is_pci_rp and rp_data.name not in rp_names_in_view:"},{"line_number":636,"context_line":"                provider_tree.remove(rp_uuid)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        rp_rc_usage \u003d self.get_usage_per_rc_and_rp(allocations)"},{"line_number":639,"context_line":"        for rp_name, rp in self.rps.items():"},{"line_number":640,"context_line":"            rp.update_provider_tree("}],"source_content_type":"text/x-python","patch_set":5,"id":"7e6c019c_17826dda","line":637,"range":{"start_line":627,"start_character":0,"end_line":637,"end_character":0},"in_reply_to":"43f8c042_243405a4","updated":"2025-07-11 08:35:51.000000000","message":"yeah a helper method","commit_id":"8d8b7fc26335a4ce164be5946d50766390e7cfb3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ea2f728fd91450819ae1db6a7fc5a69aaea5fc88","unresolved":false,"context_lines":[{"line_number":624,"context_line":"        allocations: dict,"},{"line_number":625,"context_line":"    ) -\u003e None:"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        # Remove all managed PCI RPs that is not in our view anymore"},{"line_number":628,"context_line":"        rp_names_in_view \u003d {rp.name for rp in self.rps.values()}"},{"line_number":629,"context_line":"        uuids_in_tree \u003d provider_tree.get_provider_uuids_in_tree("},{"line_number":630,"context_line":"            self.root_rp_name)"},{"line_number":631,"context_line":"        for rp_uuid in uuids_in_tree:"},{"line_number":632,"context_line":"            rp_data \u003d provider_tree.data(rp_uuid)"},{"line_number":633,"context_line":"            is_pci_rp \u003d provider_tree.has_traits("},{"line_number":634,"context_line":"                rp_uuid, [os_traits.COMPUTE_MANAGED_PCI_DEVICE])"},{"line_number":635,"context_line":"            if is_pci_rp and rp_data.name not in rp_names_in_view:"},{"line_number":636,"context_line":"                provider_tree.remove(rp_uuid)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        rp_rc_usage \u003d self.get_usage_per_rc_and_rp(allocations)"},{"line_number":639,"context_line":"        for rp_name, rp in self.rps.items():"},{"line_number":640,"context_line":"            rp.update_provider_tree("}],"source_content_type":"text/x-python","patch_set":5,"id":"3bc00a4c_3d00fab5","line":637,"range":{"start_line":627,"start_character":0,"end_line":637,"end_character":0},"in_reply_to":"7e6c019c_17826dda","updated":"2025-07-21 14:21:47.000000000","message":"Done","commit_id":"8d8b7fc26335a4ce164be5946d50766390e7cfb3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1f645cc2027958bc336ef1ef2a1324eec9c845ca","unresolved":true,"context_lines":[{"line_number":624,"context_line":"        allocations: dict,"},{"line_number":625,"context_line":"    ) -\u003e None:"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        # Remove all managed PCI RPs that is not in our view anymore"},{"line_number":628,"context_line":"        rp_names_in_view \u003d {rp.name for rp in self.rps.values()}"},{"line_number":629,"context_line":"        uuids_in_tree \u003d provider_tree.get_provider_uuids_in_tree("},{"line_number":630,"context_line":"            self.root_rp_name)"},{"line_number":631,"context_line":"        for rp_uuid in uuids_in_tree:"},{"line_number":632,"context_line":"            rp_data \u003d provider_tree.data(rp_uuid)"},{"line_number":633,"context_line":"            is_pci_rp \u003d provider_tree.has_traits("},{"line_number":634,"context_line":"                rp_uuid, [os_traits.COMPUTE_MANAGED_PCI_DEVICE])"},{"line_number":635,"context_line":"            if is_pci_rp and rp_data.name not in rp_names_in_view:"},{"line_number":636,"context_line":"                provider_tree.remove(rp_uuid)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        rp_rc_usage \u003d self.get_usage_per_rc_and_rp(allocations)"},{"line_number":639,"context_line":"        for rp_name, rp in self.rps.items():"},{"line_number":640,"context_line":"            rp.update_provider_tree("}],"source_content_type":"text/x-python","patch_set":5,"id":"43f8c042_243405a4","line":637,"range":{"start_line":627,"start_character":0,"end_line":637,"end_character":0},"in_reply_to":"df409bfa_48f3fa4a","updated":"2025-07-10 14:43:36.000000000","message":"i assume you mean helper method but sure what will make it more obvious","commit_id":"8d8b7fc26335a4ce164be5946d50766390e7cfb3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5217608c794fc5f1fe8816bfb8307d310bdc5231","unresolved":true,"context_lines":[{"line_number":317,"context_line":"                \"VMs using already removed devices.\","},{"line_number":318,"context_line":"                self.resource_class, self.name, inventory, usage)"},{"line_number":319,"context_line":"            # This is counted into self.total to adjust the inventory"},{"line_number":320,"context_line":"            self.adjustment +\u003d usage - inventory"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def update_provider_tree("},{"line_number":323,"context_line":"        self,"}],"source_content_type":"text/x-python","patch_set":7,"id":"6be81d5a_f91f05b4","line":320,"updated":"2025-09-02 11:56:39.000000000","message":"hum OK you changing the total capacity by increasing the amount to match the usage.\nbut i think it would laos make sense to adjust the reserved value as well so that we can close the scdhuler race onc ethe defvice is freed.\n\nwhat do you think?","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"87fa7d577d26082be8e7b2aef5d4b4bce298c067","unresolved":true,"context_lines":[{"line_number":317,"context_line":"                \"VMs using already removed devices.\","},{"line_number":318,"context_line":"                self.resource_class, self.name, inventory, usage)"},{"line_number":319,"context_line":"            # This is counted into self.total to adjust the inventory"},{"line_number":320,"context_line":"            self.adjustment +\u003d usage - inventory"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def update_provider_tree("},{"line_number":323,"context_line":"        self,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9381bb74_afacb003","line":320,"in_reply_to":"5e7f523c_d0d67222","updated":"2025-09-02 13:17:17.000000000","message":"the reseved value is total - (device found on host that are allowed by the dev_sepc)\n\nwhich is not trivial to calculated here so i agree.","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de67adea7db9f0f9f842b58f5c4bc3db4f57518a","unresolved":true,"context_lines":[{"line_number":317,"context_line":"                \"VMs using already removed devices.\","},{"line_number":318,"context_line":"                self.resource_class, self.name, inventory, usage)"},{"line_number":319,"context_line":"            # This is counted into self.total to adjust the inventory"},{"line_number":320,"context_line":"            self.adjustment +\u003d usage - inventory"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def update_provider_tree("},{"line_number":323,"context_line":"        self,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5e7f523c_d0d67222","line":320,"in_reply_to":"6be81d5a_f91f05b4","updated":"2025-09-02 13:05:37.000000000","message":"We need to adjust the total as total cannot go under allocated, placement rejects such inventory change.\n\nWe could adjust a reserved value but I\u0027m not sure for what value. Just for usage -  inventory? Or how this need to change in future iterations of the translator.\n\nI would only do that reserved change if I can prove that this reduces the re-schedule chance by having a test reproducing it. But that feels pretty hard to do consistently. \n\nAdding reserved here just adds complexity here and potential surface for bugs around this code. (I rather not have this code at all, as it is so edge case, but need to allow the VM deletion to succeed)","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aeaa8651081bcea806171fe71c96dd47c9a15331","unresolved":false,"context_lines":[{"line_number":317,"context_line":"                \"VMs using already removed devices.\","},{"line_number":318,"context_line":"                self.resource_class, self.name, inventory, usage)"},{"line_number":319,"context_line":"            # This is counted into self.total to adjust the inventory"},{"line_number":320,"context_line":"            self.adjustment +\u003d usage - inventory"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def update_provider_tree("},{"line_number":323,"context_line":"        self,"}],"source_content_type":"text/x-python","patch_set":7,"id":"8990d2c8_626d20cc","line":320,"in_reply_to":"9381bb74_afacb003","updated":"2025-09-04 08:34:14.000000000","message":"Acknowledged","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5217608c794fc5f1fe8816bfb8307d310bdc5231","unresolved":false,"context_lines":[{"line_number":537,"context_line":"    ) -\u003e None:"},{"line_number":538,"context_line":"        # NOTE(gibi): We never observer dev.status DELETED as when that is set"},{"line_number":539,"context_line":"        # the device is also removed from the PCI tracker. So we can ignore"},{"line_number":540,"context_line":"        # that state."},{"line_number":541,"context_line":"        if dev.status \u003d\u003d fields.PciDeviceStatus.REMOVED:"},{"line_number":542,"context_line":"            # NOTE(gibi): We need to handle the situation when an instance"},{"line_number":543,"context_line":"            # uses a device where a dev_spec is removed. Here we need to keep"}],"source_content_type":"text/x-python","patch_set":7,"id":"ca5d95c4_4e9b569f","line":540,"updated":"2025-09-02 11:56:39.000000000","message":"so i think we didn prior to the previous patch but now that you remove them on free i think you are correct.","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"}],"nova/tests/functional/libvirt/test_pci_in_placement.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ed5ac7c2dba8a2b422a83c459e562348af0ba12c","unresolved":true,"context_lines":[{"line_number":944,"context_line":"            \"to resolve the inconsistency.\" % server[\u0027id\u0027],"},{"line_number":945,"context_line":"            self.stdlog.logger.output,"},{"line_number":946,"context_line":"        )"},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"        self.stdlog.delete_stored_logs()"},{"line_number":949,"context_line":"        # the deletion succeeds"},{"line_number":950,"context_line":"        self._delete_server(server)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5c9da67b_04c50e99","line":947,"updated":"2025-07-21 10:53:14.000000000","message":"* assert no placement error in the logs\n* assert warning about inventory adjustment due to allocation in the logs.","commit_id":"8d8b7fc26335a4ce164be5946d50766390e7cfb3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"551da1ec68fee3c37c5e090720215d92a2df4513","unresolved":false,"context_lines":[{"line_number":944,"context_line":"            \"to resolve the inconsistency.\" % server[\u0027id\u0027],"},{"line_number":945,"context_line":"            self.stdlog.logger.output,"},{"line_number":946,"context_line":"        )"},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"        self.stdlog.delete_stored_logs()"},{"line_number":949,"context_line":"        # the deletion succeeds"},{"line_number":950,"context_line":"        self._delete_server(server)"}],"source_content_type":"text/x-python","patch_set":5,"id":"e4a312dc_f4e787c4","line":947,"in_reply_to":"5c9da67b_04c50e99","updated":"2025-07-21 11:11:01.000000000","message":"Done","commit_id":"8d8b7fc26335a4ce164be5946d50766390e7cfb3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5217608c794fc5f1fe8816bfb8307d310bdc5231","unresolved":true,"context_lines":[{"line_number":782,"context_line":"        )"},{"line_number":783,"context_line":"        # the warning from the placement PCI tracking logic"},{"line_number":784,"context_line":"        self.assertIn("},{"line_number":785,"context_line":"            \"WARNING [nova.compute.pci_placement_translator] \""},{"line_number":786,"context_line":"            \"Device spec is not found for device 0000:81:00.0 in \""},{"line_number":787,"context_line":"            \"[pci]device_spec. The device is allocated by \""},{"line_number":788,"context_line":"            \"%s. We are keeping this device in the Placement \""}],"source_content_type":"text/x-python","patch_set":7,"id":"751511bf_4e3589a1","line":785,"updated":"2025-09-02 11:56:39.000000000","message":"a constant woudl have helped here :)","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d768efefade649848b5409bd1573db412772f797","unresolved":true,"context_lines":[{"line_number":782,"context_line":"        )"},{"line_number":783,"context_line":"        # the warning from the placement PCI tracking logic"},{"line_number":784,"context_line":"        self.assertIn("},{"line_number":785,"context_line":"            \"WARNING [nova.compute.pci_placement_translator] \""},{"line_number":786,"context_line":"            \"Device spec is not found for device 0000:81:00.0 in \""},{"line_number":787,"context_line":"            \"[pci]device_spec. The device is allocated by \""},{"line_number":788,"context_line":"            \"%s. We are keeping this device in the Placement \""}],"source_content_type":"text/x-python","patch_set":7,"id":"bae3d551_9712c59a","line":785,"in_reply_to":"751511bf_4e3589a1","updated":"2025-09-04 07:54:23.000000000","message":"Doing it...","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aeaa8651081bcea806171fe71c96dd47c9a15331","unresolved":false,"context_lines":[{"line_number":782,"context_line":"        )"},{"line_number":783,"context_line":"        # the warning from the placement PCI tracking logic"},{"line_number":784,"context_line":"        self.assertIn("},{"line_number":785,"context_line":"            \"WARNING [nova.compute.pci_placement_translator] \""},{"line_number":786,"context_line":"            \"Device spec is not found for device 0000:81:00.0 in \""},{"line_number":787,"context_line":"            \"[pci]device_spec. The device is allocated by \""},{"line_number":788,"context_line":"            \"%s. We are keeping this device in the Placement \""}],"source_content_type":"text/x-python","patch_set":7,"id":"704037b3_3d3dc283","line":785,"in_reply_to":"bae3d551_9712c59a","updated":"2025-09-04 08:34:14.000000000","message":"Done","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"}],"nova/tests/unit/compute/test_pci_placement_translator.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5217608c794fc5f1fe8816bfb8307d310bdc5231","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        with mock.patch.object(pt, \"remove\", new\u003dmock.NonCallableMock()):"},{"line_number":70,"context_line":"            ppt.update_provider_tree_for_pci("},{"line_number":71,"context_line":"                pt, \"fake-node\", pci_tracker, {}, [])"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        self.assertIn("},{"line_number":74,"context_line":"            \"WARNING [nova.compute.pci_placement_translator] \""}],"source_content_type":"text/x-python","patch_set":7,"id":"01bfc8fc_34150828","line":71,"updated":"2025-09-02 11:56:39.000000000","message":"ack so now it will be modified but not remvoed hence the mocking refactor","commit_id":"bc5b082a110566d5146a5915a43b9793a58c8a06"}]}
