)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"15536bd2b53fc74ba9c5aa5d2ff2bd953a873e48","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"03d66d5b_c8915e89","updated":"2022-04-26 10:59:21.000000000","message":"Lets talk about this on the meeting","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"2a12553273b11321ac814c79b67c0a10f5d9eba6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4fb68502_ec3eabab","updated":"2022-04-25 17:13:11.000000000","message":"So I wonder - wouldn\u0027t a nova-manage command be better here? We have a precedent for fixing things that should not happen during normal operation (orphaned placement allocations, outdated connection_info for block devices, etc): nova-managed commands. I feel like hiding from the operator the fact that something went wrong and their database got into an inconsistent state is not the wisest choice here, and I\u0027d prefer requiring manual (but automated, via nova-manager) intervention.","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"15536bd2b53fc74ba9c5aa5d2ff2bd953a873e48","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5dd7eed6_fdad60ca","in_reply_to":"4fb68502_ec3eabab","updated":"2022-04-26 10:59:21.000000000","message":"You have a point. I think we can talk about this on the nova meeting today. I\u0027m happy to create a nova-manage command instead of this patch if we agree that is the better direction.","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ad209b3a911034a720f3bcb5693596b98997cff2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"90c58db8_bcb87e47","in_reply_to":"5dd7eed6_fdad60ca","updated":"2022-04-27 11:38:39.000000000","message":"So we touched this on the nova meeting yesterday. The agreement was the following:\n1) it is OK to do the cleanup at the pci claim but this patch needs wider review\n2) at least we should LOG information to the user about the fixed inconsistency (already done in this PS)\n\nwe use the nova-manage CLI to do DB cleanup when multiple DBs needs to be synced e.g. nova-manage placement heal_allocation need to update both the Nova and the Placement DB.","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"15a6cfa8534e416bb23222e4fafb5084068752a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e3196bd4_ad550191","in_reply_to":"90c58db8_bcb87e47","updated":"2022-04-27 11:39:22.000000000","message":"The nova meeting logs: https://meetings.opendev.org/meetings/nova/2022/nova.2022-04-26-16.00.log.html#l-171","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d7cae7ed718e83f3b6809f8c45a6603087b48605","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c29e88c4_dab2325f","updated":"2022-05-03 21:00:23.000000000","message":"Change itself looks reasonable but it looks like we would lose test coverage of one code branch?","commit_id":"951a2ae047a34e3023e82fdf218c3ac3b08882cc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7b7276ad1537496c77fa54bc2293fc769b413e15","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e260754e_4e2a79cc","updated":"2022-04-29 10:11:39.000000000","message":"recheck\n\nthe test instablity should now be adressed by the eailer patch in the series.\nyou have provided a repoduce which this now updates to demonstrete the bug.\n\nsince we dont actully know how an operator could cause this bug i dont think we have anything useful\nto convay to them in a releasse not really other then  its fixed so im ok to not have one but if you decided to add one im happy to re review.","commit_id":"951a2ae047a34e3023e82fdf218c3ac3b08882cc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fab9934c156cfe0a5e8f60a2304eda0274bee219","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"4ad73142_0def4940","updated":"2022-04-29 17:42:23.000000000","message":"recheck volume detach failed in cinder with: \"Unhandled error: OSError: write error\"\n\n[1]https://zuul.opendev.org/t/openstack/build/6360ae0b54f0494bae889aadd0f1dea3/log/controller/logs/screen-c-api.txt#5880","commit_id":"951a2ae047a34e3023e82fdf218c3ac3b08882cc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0cdaf78400a29da5761b2fc0903f18c2cc252b21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2b05c241_6a92299c","updated":"2022-05-04 23:44:39.000000000","message":"Test coverage update looks good, thanks!","commit_id":"3af2ecc13fa9334de8418accaed4fffefefb41da"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c405a1c0354fd525955ed792c64337faabbbcf33","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e916bacf_f9f837f4","updated":"2022-05-05 11:40:11.000000000","message":"thanks melanie for catching that testing oversight","commit_id":"3af2ecc13fa9334de8418accaed4fffefefb41da"}],"nova/objects/pci_device.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cfbd999ace4667a49a8f6a4caf4cfb9dcc479ce5","unresolved":true,"context_lines":[{"line_number":348,"context_line":"            vfs_list \u003d self.child_devices"},{"line_number":349,"context_line":"            if not all([vf.is_available() for vf in vfs_list]):"},{"line_number":350,"context_line":"                raise exception.PciDeviceVFInvalidStatus("},{"line_number":351,"context_line":"                    compute_node_id\u003dself.compute_node_id,"},{"line_number":352,"context_line":"                    address\u003dself.address)"},{"line_number":353,"context_line":"            self._bulk_update_status(vfs_list,"},{"line_number":354,"context_line":"                                           fields.PciDeviceStatus.UNCLAIMABLE)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1e17be1c_3d770a18","side":"PARENT","line":351,"updated":"2022-04-28 09:39:29.000000000","message":"according to the ci the exaction is being raised form here\n File \"/home/zuul/src/opendev.org/openstack/nova/nova/objects/pci_device.py\", line 351, in claim\n    raise exception.PciDeviceVFInvalidStatus(\nnova.exception.PciDeviceVFInvalidStatus: Not all Virtual Functions of PF 1:0000:00:01.1 are free.","commit_id":"d85abcb9ffc4388e7274dad836a1efe2403a9b50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ada76d985ccadb5a01f4c3e78be84c13fb615434","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            vfs_list \u003d self.child_devices"},{"line_number":349,"context_line":"            if not all([vf.is_available() for vf in vfs_list]):"},{"line_number":350,"context_line":"                raise exception.PciDeviceVFInvalidStatus("},{"line_number":351,"context_line":"                    compute_node_id\u003dself.compute_node_id,"},{"line_number":352,"context_line":"                    address\u003dself.address)"},{"line_number":353,"context_line":"            self._bulk_update_status(vfs_list,"},{"line_number":354,"context_line":"                                           fields.PciDeviceStatus.UNCLAIMABLE)"}],"source_content_type":"text/x-python","patch_set":3,"id":"d20d5f10_052b42d1","side":"PARENT","line":351,"in_reply_to":"1e17be1c_3d770a18","updated":"2022-04-28 14:35:37.000000000","message":"Fixed in https://review.opendev.org/c/openstack/nova/+/839766/2","commit_id":"d85abcb9ffc4388e7274dad836a1efe2403a9b50"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"2a12553273b11321ac814c79b67c0a10f5d9eba6","unresolved":true,"context_lines":[{"line_number":358,"context_line":"                actual_statuses \u003d {"},{"line_number":359,"context_line":"                    child.status for child in non_free_dependants}"},{"line_number":360,"context_line":"                allowed_non_free_statues \u003d {"},{"line_number":361,"context_line":"                    fields.PciDeviceStatus.UNCLAIMABLE,"},{"line_number":362,"context_line":"                    fields.PciDeviceStatus.UNAVAILABLE,"},{"line_number":363,"context_line":"                }"},{"line_number":364,"context_line":"                if actual_statuses - allowed_non_free_statues \u003d\u003d set():"}],"source_content_type":"text/x-python","patch_set":3,"id":"09b8a33d_10920835","line":361,"updated":"2022-04-25 17:13:11.000000000","message":"I guess that fact that we\u0027re only allowing UNCLAIMABLE and UNAVAILABLE should guard against double-claiming child VFs that are already claimed for an instance...","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"15536bd2b53fc74ba9c5aa5d2ff2bd953a873e48","unresolved":true,"context_lines":[{"line_number":358,"context_line":"                actual_statuses \u003d {"},{"line_number":359,"context_line":"                    child.status for child in non_free_dependants}"},{"line_number":360,"context_line":"                allowed_non_free_statues \u003d {"},{"line_number":361,"context_line":"                    fields.PciDeviceStatus.UNCLAIMABLE,"},{"line_number":362,"context_line":"                    fields.PciDeviceStatus.UNAVAILABLE,"},{"line_number":363,"context_line":"                }"},{"line_number":364,"context_line":"                if actual_statuses - allowed_non_free_statues \u003d\u003d set():"}],"source_content_type":"text/x-python","patch_set":3,"id":"74213404_ddbe337c","line":361,"in_reply_to":"09b8a33d_10920835","updated":"2022-04-26 10:59:21.000000000","message":"yes. L339 already ensure that he device, the PF parent, we are going to claim is available. The original check here was very defensive. Strictly enforced that if the parent is available then children must be available too. We lift some of this restriction to allow claiming the parent when the child in not used but marked as unclaimable / unavailable, meaning its parent is used. So yes, this easing of the restriction still does not allow double claiming the device due to L339.","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cfbd999ace4667a49a8f6a4caf4cfb9dcc479ce5","unresolved":true,"context_lines":[{"line_number":358,"context_line":"                actual_statuses \u003d {"},{"line_number":359,"context_line":"                    child.status for child in non_free_dependants}"},{"line_number":360,"context_line":"                allowed_non_free_statues \u003d {"},{"line_number":361,"context_line":"                    fields.PciDeviceStatus.UNCLAIMABLE,"},{"line_number":362,"context_line":"                    fields.PciDeviceStatus.UNAVAILABLE,"},{"line_number":363,"context_line":"                }"},{"line_number":364,"context_line":"                if actual_statuses - allowed_non_free_statues \u003d\u003d set():"}],"source_content_type":"text/x-python","patch_set":3,"id":"7b9c5863_9ddbc48f","line":361,"in_reply_to":"74213404_ddbe337c","updated":"2022-04-28 09:39:29.000000000","message":"I agree with gibi.\n\npart of me is sad that we don\u0027t have a db trigger to enforce this at the db layer. but this new logic should be safe.","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13f0ad088d75020bca15e343ce4bf565003534bb","unresolved":false,"context_lines":[{"line_number":358,"context_line":"                actual_statuses \u003d {"},{"line_number":359,"context_line":"                    child.status for child in non_free_dependants}"},{"line_number":360,"context_line":"                allowed_non_free_statues \u003d {"},{"line_number":361,"context_line":"                    fields.PciDeviceStatus.UNCLAIMABLE,"},{"line_number":362,"context_line":"                    fields.PciDeviceStatus.UNAVAILABLE,"},{"line_number":363,"context_line":"                }"},{"line_number":364,"context_line":"                if actual_statuses - allowed_non_free_statues \u003d\u003d set():"}],"source_content_type":"text/x-python","patch_set":3,"id":"146c1b2a_d9290e59","line":361,"in_reply_to":"7b9c5863_9ddbc48f","updated":"2022-05-04 08:57:21.000000000","message":"Ack","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cfbd999ace4667a49a8f6a4caf4cfb9dcc479ce5","unresolved":true,"context_lines":[{"line_number":377,"context_line":"                    )"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"                else:"},{"line_number":380,"context_line":"                    raise exception.PciDeviceVFInvalidStatus("},{"line_number":381,"context_line":"                        compute_node_id\u003dself.compute_node_id,"},{"line_number":382,"context_line":"                        address\u003dself.address)"},{"line_number":383,"context_line":"            self._bulk_update_status(vfs_list,"}],"source_content_type":"text/x-python","patch_set":3,"id":"0ad35856_b105c617","line":380,"updated":"2022-04-28 09:39:29.000000000","message":"where as it should be from here\n File \"/home/zuul/src/opendev.org/openstack/nova/nova/objects/pci_device.py\", line 351, in claim\n    raise exception.PciDeviceVFInvalidStatus(\nnova.exception.PciDeviceVFInvalidStatus: Not all Virtual Functions of PF 1:0000:00:01.1 are free.\n\nso the numbers don\u0027t line up\n\nwell the exctpiotn should not be raise at all if this was working correctly but the line number should match there is something going on with how this is running in ci\n\n\nlooking at the logs we can see the commit checked out here\n\nhttps://zuul.opendev.org/t/openstack/build/ba83603950f14877aea1eefb3e853efc/log/job-output.txt#294\n\n\nbug that commit does not match the commit you submitted\n\nhttps://opendev.org/openstack/nova/commit/039d35764e7889e158cd442817d27f98b3c6e305\n\n\n039d35764e7889e158cd442817d27f98b3c6e305 vs 4740a86d2c9f351cd86ca37fd7596158e79c97e2\n\nso we must be testing a merge commit and something in that merge has broken this test it seams.\n\nill try pulling this locally but I think we need to do a rebase of this patch.","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ada76d985ccadb5a01f4c3e78be84c13fb615434","unresolved":false,"context_lines":[{"line_number":377,"context_line":"                    )"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"                else:"},{"line_number":380,"context_line":"                    raise exception.PciDeviceVFInvalidStatus("},{"line_number":381,"context_line":"                        compute_node_id\u003dself.compute_node_id,"},{"line_number":382,"context_line":"                        address\u003dself.address)"},{"line_number":383,"context_line":"            self._bulk_update_status(vfs_list,"}],"source_content_type":"text/x-python","patch_set":3,"id":"4c3a2bed_7449f5f2","line":380,"in_reply_to":"0ad35856_b105c617","updated":"2022-04-28 14:35:37.000000000","message":"Done","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d7cae7ed718e83f3b6809f8c45a6603087b48605","unresolved":true,"context_lines":[{"line_number":379,"context_line":"                else:"},{"line_number":380,"context_line":"                    raise exception.PciDeviceVFInvalidStatus("},{"line_number":381,"context_line":"                        compute_node_id\u003dself.compute_node_id,"},{"line_number":382,"context_line":"                        address\u003dself.address)"},{"line_number":383,"context_line":"            self._bulk_update_status(vfs_list,"},{"line_number":384,"context_line":"                                           fields.PciDeviceStatus.UNCLAIMABLE)"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bfa788ac_bf3e26eb","line":382,"updated":"2022-05-03 21:00:23.000000000","message":"Are we losing test coverage of this case? We would reach here if we had child devices with status set: {AVAILABLE, UNAVAILABLE, UNCLAIMABLE}.","commit_id":"951a2ae047a34e3023e82fdf218c3ac3b08882cc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0cdaf78400a29da5761b2fc0903f18c2cc252b21","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                else:"},{"line_number":380,"context_line":"                    raise exception.PciDeviceVFInvalidStatus("},{"line_number":381,"context_line":"                        compute_node_id\u003dself.compute_node_id,"},{"line_number":382,"context_line":"                        address\u003dself.address)"},{"line_number":383,"context_line":"            self._bulk_update_status(vfs_list,"},{"line_number":384,"context_line":"                                           fields.PciDeviceStatus.UNCLAIMABLE)"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"0a9b1982_e597fd1f","line":382,"in_reply_to":"3c8958e8_4fff5362","updated":"2022-05-04 23:44:39.000000000","message":"Gah, indeed my example set is a case that would _not_ raise /facepalm. Sorry about that. I see you have chosen a set that will actually cover this code in your test :)","commit_id":"951a2ae047a34e3023e82fdf218c3ac3b08882cc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"196cb38c1c7b754dc9941452366bfaca40ccee71","unresolved":true,"context_lines":[{"line_number":379,"context_line":"                else:"},{"line_number":380,"context_line":"                    raise exception.PciDeviceVFInvalidStatus("},{"line_number":381,"context_line":"                        compute_node_id\u003dself.compute_node_id,"},{"line_number":382,"context_line":"                        address\u003dself.address)"},{"line_number":383,"context_line":"            self._bulk_update_status(vfs_list,"},{"line_number":384,"context_line":"                                           fields.PciDeviceStatus.UNCLAIMABLE)"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9841c657_362e77bd","line":382,"in_reply_to":"79e955ca_8910a0e4","updated":"2022-05-03 21:18:02.000000000","message":"Yeah, if we somehow had a mix of AVAILABLE and UNAVAILABLE|UNCLAIMABLE we would raise here. Whether or not that is desired, I leave up to you SMEs 😊\n\nIf we want to keep it, I think we should add test coverage for it.","commit_id":"951a2ae047a34e3023e82fdf218c3ac3b08882cc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13f0ad088d75020bca15e343ce4bf565003534bb","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                else:"},{"line_number":380,"context_line":"                    raise exception.PciDeviceVFInvalidStatus("},{"line_number":381,"context_line":"                        compute_node_id\u003dself.compute_node_id,"},{"line_number":382,"context_line":"                        address\u003dself.address)"},{"line_number":383,"context_line":"            self._bulk_update_status(vfs_list,"},{"line_number":384,"context_line":"                                           fields.PciDeviceStatus.UNCLAIMABLE)"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"d42f6dc2_8ad0f381","line":382,"in_reply_to":"9841c657_362e77bd","updated":"2022-05-04 08:57:21.000000000","message":"You are right, I was sloppy with test coverage. I added a test case where the PF is AVAILABLE while VF1 is UNAVAILABLE and VF2 is AVAILABLE. It shows the we don\u0027t end up in the raise statement (as expected by me).\n\nI think what we want in general here is that the PF can be allocated if none of the VFs are used. So I still want to raise if the VF is in ALLOCATED or CLAIMED state. Sure that shows another DB inconsistency (as the PF is in AVAILABLE state by L339) but that is more sever as there is an instance using the VF. So in that case I don\u0027t want to allow using the PF as well.","commit_id":"951a2ae047a34e3023e82fdf218c3ac3b08882cc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7d2b3cde74898334ab9a6408e0108ac34c940744","unresolved":true,"context_lines":[{"line_number":379,"context_line":"                else:"},{"line_number":380,"context_line":"                    raise exception.PciDeviceVFInvalidStatus("},{"line_number":381,"context_line":"                        compute_node_id\u003dself.compute_node_id,"},{"line_number":382,"context_line":"                        address\u003dself.address)"},{"line_number":383,"context_line":"            self._bulk_update_status(vfs_list,"},{"line_number":384,"context_line":"                                           fields.PciDeviceStatus.UNCLAIMABLE)"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"79e955ca_8910a0e4","line":382,"in_reply_to":"bfa788ac_bf3e26eb","updated":"2022-05-03 21:09:46.000000000","message":"ah you are say ing if we have some child devices that are in unaviable or unclaimed and some that are in the expected state of Avaiable then we wouldhit this else.\n\nsince Avaiable is not in allowed_non_free_statues\n\nso  actual_statuses - allowed_non_free_statues !\u003d set()\n\nya we should not raise in that case\n\nmaybe we shoudl get rid fo this if else entirely and just log the inconsitent state.","commit_id":"951a2ae047a34e3023e82fdf218c3ac3b08882cc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6214dcddc289f4894804b78288676cfb36ada4ac","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                else:"},{"line_number":380,"context_line":"                    raise exception.PciDeviceVFInvalidStatus("},{"line_number":381,"context_line":"                        compute_node_id\u003dself.compute_node_id,"},{"line_number":382,"context_line":"                        address\u003dself.address)"},{"line_number":383,"context_line":"            self._bulk_update_status(vfs_list,"},{"line_number":384,"context_line":"                                           fields.PciDeviceStatus.UNCLAIMABLE)"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3c8958e8_4fff5362","line":382,"in_reply_to":"d42f6dc2_8ad0f381","updated":"2022-05-04 11:52:59.000000000","message":"yes we shoudl raise if any of the VFs are in ALLOCATED or CLAIMED \nand likely we should set the PF to UNAVAILABLE\n\nwe should not raise if we have a mix of {UNCLAIMABLE, UNAVAILABLE, or AVAILABLE}\n\nso really you shoudl proably jsut test if ALLOCATED or CLAIMED  are in actual_statuses","commit_id":"951a2ae047a34e3023e82fdf218c3ac3b08882cc"}],"nova/tests/unit/pci/test_manager.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cfbd999ace4667a49a8f6a4caf4cfb9dcc479ce5","unresolved":true,"context_lines":[{"line_number":508,"context_line":"        )"},{"line_number":509,"context_line":"        # now try to claim and allocate the PF. It should work as it is"},{"line_number":510,"context_line":"        # available"},{"line_number":511,"context_line":"        self.tracker.claim_instance("},{"line_number":512,"context_line":"            mock.sentinel.context, pci_requests_obj, None)"},{"line_number":513,"context_line":"        self.tracker.allocate_instance({\u0027uuid\u0027: uuidsentinel.instance1})"},{"line_number":514,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"2d4c7a3d_60b976de","line":511,"range":{"start_line":511,"start_character":8,"end_line":511,"end_character":35},"updated":"2022-04-28 09:39:29.000000000","message":"this is failing to claim the device\n\nhttps://github.com/openstack/nova/blob/b5029890c1c5b1b5153c9ca2fc9a8ea2437f635d/nova/pci/manager.py#L315-L330\n\nhttps://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_ba8/838555/2/check/openstack-tox-py38/ba83603/testr_results.html\n\nso we are taking this branch\nhttps://review.opendev.org/c/openstack/nova/+/838555/3/nova/objects/pci_device.py#380\n\nbut something is wrong the line numbers don\u0027t match\n\n File \"/home/zuul/src/opendev.org/openstack/nova/nova/objects/pci_device.py\", line 351, in claim\n    raise exception.PciDeviceVFInvalidStatus(\nnova.exception.PciDeviceVFInvalidStatus: Not all Virtual Functions of PF 1:0000:00:01.1 are free.","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ada76d985ccadb5a01f4c3e78be84c13fb615434","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        )"},{"line_number":509,"context_line":"        # now try to claim and allocate the PF. It should work as it is"},{"line_number":510,"context_line":"        # available"},{"line_number":511,"context_line":"        self.tracker.claim_instance("},{"line_number":512,"context_line":"            mock.sentinel.context, pci_requests_obj, None)"},{"line_number":513,"context_line":"        self.tracker.allocate_instance({\u0027uuid\u0027: uuidsentinel.instance1})"},{"line_number":514,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"682ee27e_3875c1fc","line":511,"range":{"start_line":511,"start_character":8,"end_line":511,"end_character":35},"in_reply_to":"2d4c7a3d_60b976de","updated":"2022-04-28 14:35:37.000000000","message":"Done","commit_id":"039d35764e7889e158cd442817d27f98b3c6e305"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0cdaf78400a29da5761b2fc0903f18c2cc252b21","unresolved":true,"context_lines":[{"line_number":572,"context_line":"        vf1_dev \u003d self._get_device_by_address(vf1[\u0027address\u0027])"},{"line_number":573,"context_line":"        self.assertEqual(\u0027unavailable\u0027, vf1_dev.status)"},{"line_number":574,"context_line":"        vf2_dev \u003d self._get_device_by_address(vf2[\u0027address\u0027])"},{"line_number":575,"context_line":"        self.assertEqual(\u0027unavailable\u0027, vf2_dev.status)"},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"        self.assertIn("},{"line_number":578,"context_line":"            \u0027Some child device of parent 0000:00:01.1 is in an inconsistent \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3d1aafea_7df2f4c8","line":575,"updated":"2022-05-04 23:44:39.000000000","message":"Note to self: claim_instance sets the PF status to CLAIMED and VFs status to UNCLAIMABLE, then allocate_instance sets the statuses to what is shown here ^.","commit_id":"3af2ecc13fa9334de8418accaed4fffefefb41da"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c405a1c0354fd525955ed792c64337faabbbcf33","unresolved":true,"context_lines":[{"line_number":572,"context_line":"        vf1_dev \u003d self._get_device_by_address(vf1[\u0027address\u0027])"},{"line_number":573,"context_line":"        self.assertEqual(\u0027unavailable\u0027, vf1_dev.status)"},{"line_number":574,"context_line":"        vf2_dev \u003d self._get_device_by_address(vf2[\u0027address\u0027])"},{"line_number":575,"context_line":"        self.assertEqual(\u0027unavailable\u0027, vf2_dev.status)"},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"        self.assertIn("},{"line_number":578,"context_line":"            \u0027Some child device of parent 0000:00:01.1 is in an inconsistent \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"c3df785d_9c66c304","line":575,"in_reply_to":"3d1aafea_7df2f4c8","updated":"2022-05-05 11:40:11.000000000","message":"yes we could technically assert that but i think this is sufficent.","commit_id":"3af2ecc13fa9334de8418accaed4fffefefb41da"}]}
