)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":10,"context_line":"a given VF PCI address and include them in port updates to Neutron."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint integration-with-off-path-network-backends"},{"line_number":13,"context_line":"Depends-On: I6445433142286728a8c7efadcf80d07082d60bc3"},{"line_number":14,"context_line":"Change-Id: I83a128a260acdd8bf78fede566af6881b8b82a9c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9459c508_9c9c9a72","line":13,"updated":"2022-01-24 11:51:24.000000000","message":"depends on is used for inter repo depencies this is alreay tracked by the parent relationship of the commits. so this should be removed.\n\nthere are limited cases where depend on can resonamble be used in the same repo but this is not really one of them. it will not break anything really but it does make the ci role that does the repo preeration do extra work by downloading a second copy of nova checked out to that commit then merginging them","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"a given VF PCI address and include them in port updates to Neutron."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint integration-with-off-path-network-backends"},{"line_number":13,"context_line":"Depends-On: I6445433142286728a8c7efadcf80d07082d60bc3"},{"line_number":14,"context_line":"Change-Id: I83a128a260acdd8bf78fede566af6881b8b82a9c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9db0e07b_0fb48856","line":13,"in_reply_to":"9459c508_9c9c9a72","updated":"2022-01-24 22:52:58.000000000","message":"Ack, will remove. Thanks for noticing!","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"cad414e107af67b99f5b30d176c2f040ca61705d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c76bba6a_3ff52003","updated":"2022-01-26 11:23:49.000000000","message":"Marked a couple of comments as resolved, will upload shortly.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5d359afa_22576238","updated":"2022-01-24 22:52:58.000000000","message":"Will do a respin based on the comments, thanks for the review!","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8de7ea49_6c1187db","updated":"2022-01-24 11:51:24.000000000","message":"orverall this looks ok.\n\nthere are some issues with the tests but logically the code is more or less correct.\ncan you adress them when you respin","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"88b09a089ba147b55e05b5aa5256a61a5acdedd8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b5314699_1129ed82","updated":"2022-02-01 13:35:48.000000000","message":"couple of small suggestion inline but overall looks OK","commit_id":"f766125471dca45dc4501ae90ed4140da8c9c87a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b37c79830039d192e31240daf9c5b448b5df5097","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"892f36d5_24c6f572","updated":"2022-02-03 13:25:41.000000000","message":"Looks good. Please drop the duplicate mock from the test case either in this patch if you need to reship, or in a separate followup up patch top of the series.","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"a50f14a50f739ff1315829a4279e256dd3e90b77","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"1f67a52a_3e1de544","updated":"2022-02-02 17:19:11.000000000","message":"Unrelated test_device_tagging failure - will recheck.","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"edcf75c5ff0cb81506af59abf129c9a7870fb289","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d5574b24_72e466a4","updated":"2022-02-07 13:39:05.000000000","message":"over all this looks good however it will break Cavium ThunderX hosts see comment inline\nsince you will need to respin to adress that can you also adress the fixture issue","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"213cd3e32d00d05ff36daedbafaf3b22a2a1f19d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"05d03487_b3c53ea0","updated":"2022-02-01 20:29:31.000000000","message":"recheck","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"77405d8ed2d02df4e6996a60fb2d2ca1f77ad2b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"57cab490_b370aaf6","updated":"2022-02-02 12:46:47.000000000","message":"recheck","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"ceac4439c2e621a43fd93caa72a06d89d00afbed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"936de7f4_0828430b","updated":"2022-02-02 17:19:16.000000000","message":"recheck","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"1cfcfdcb33cd3ec1b5f6b70a31d07cf6808900dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d95ded57_915a06ae","updated":"2022-02-01 17:21:20.000000000","message":"recheck","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"65d5ae38cd7982d4518a5fff8286c4e55fa071d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1631bd8d_99fd3435","updated":"2022-02-08 12:43:30.000000000","message":"looks like my comments are addressed.\n\n+2 for now while i look later in the series.\ni dont object to merging this now just holding off for now while i review.","commit_id":"1f71696ecc2cd1abfc30f2f03f3c4857e51b9fbf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"127571bda53700982c0170f70c50d9be356daee6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f829320d_c30ee4e9","updated":"2022-02-09 16:13:25.000000000","message":"series looks good. lets merge this. Thanks Dmitrii for working on this!","commit_id":"1f71696ecc2cd1abfc30f2f03f3c4857e51b9fbf"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"986db362b5a7d9f501841c8cb3f060d00ee2bc8c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"7ae591bb_c6e28e0c","in_reply_to":"f829320d_c30ee4e9","updated":"2022-02-09 16:27:30.000000000","message":"Thanks a lot for all the help and support, I really appreciate it!","commit_id":"1f71696ecc2cd1abfc30f2f03f3c4857e51b9fbf"}],"nova/network/neutron.py":[{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"d607ebd330cabab7318418de99245e9c7901c828","unresolved":true,"context_lines":[{"line_number":666,"context_line":"            # NOTE: We\u0027re doing this to remove the binding information"},{"line_number":667,"context_line":"            # for the physical device but don\u0027t want to overwrite the other"},{"line_number":668,"context_line":"            # information in the binding profile."},{"line_number":669,"context_line":"            for profile_key in (\u0027pci_vendor_info\u0027, \u0027pci_slot\u0027,"},{"line_number":670,"context_line":"                                constants.ALLOCATION, \u0027arq_uuid\u0027):"},{"line_number":671,"context_line":"                if profile_key in port_profile:"},{"line_number":672,"context_line":"                    del port_profile[profile_key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5e97b192_16ce80df","line":669,"updated":"2022-01-22 15:58:56.000000000","message":"In order to make interface detachment work, a change is needed to `_unbind_ports` function as well to include additional keys that were added in port updates:\n\n```\n            for profile_key in (\u0027pci_vendor_info\u0027, \u0027pci_slot\u0027,\n                                constants.ALLOCATION, \u0027arq_uuid\u0027,\n                                \u0027card_serial_number\u0027, \u0027vf_num\u0027, \u0027pf_mac_address\u0027,\n                                \u0027physical_network\u0027):\n```\n\nOtherwise, the respective changes at the Neutron side\n\nhttps://review.opendev.org/c/openstack/neutron/+/808961/3/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py#913\nhttps://review.opendev.org/c/openstack/neutron/+/808961/3/neutron/common/ovn/constants.py#97\n\nwill result in a failed validation as follows:\n\n```\npython3/dist-packages/oslo_service/periodic_task.py:210\n2022-01-22 15:21:48.952 2288574 DEBUG neutronclient.v2_0.client [req-246ea179-4a42-499d-8280-f5ec1ebbd25b 8aef64ec498e459d852bf468acf4b50d 24a2daadf2604891bf6b61f2aa8788d2 - 71780f62619a479c84961f673c0e59c0 71780f62619a479c84961f673c0e59c0] Error message: {\"NeutronError\": {\"type\": \"InvalidInput\", \"message\": \"Invalid input for operation: Invalid binding:profile. dict_keys([\u0027pci_vendor_info\u0027, \u0027pci_slot\u0027, \u0027physical_network\u0027, \u0027card_serial_number\u0027, \u0027pf_mac_address\u0027, \u0027vf_num\u0027]) are all required..\", \"detail\": \"\"}} _handle_fault_response /usr/lib/python3/dist-packages/neutronclient/v2_0/client.py:262\n2022-01-22 15:21:48.953 2288574 ERROR nova.network.neutron [req-246ea179-4a42-499d-8280-f5ec1ebbd25b 8aef64ec498e459d852bf468acf4b50d 24a2daadf2604891bf6b61f2aa8788d2 - 71780f62619a479c84961f673c0e59c0 71780f62619a479c84961f673c0e59c0] Unable to clear device ID for port \u00278fe7ae77-410c-40bd-b658-97e0fd1792e4\u0027: neutronclient.common.exceptions.BadRequest: Invalid input for operation: Invalid binding:profile. dict_keys([\u0027pci_vendor_info\u0027, \u0027pci_slot\u0027, \u0027physical_network\u0027, \u0027card_serial_number\u0027, \u0027pf_mac_address\u0027, \u0027vf_num\u0027]) are all required..\nNeutron server returns request_ids: [\u0027req-9869a146-8bc5-463e-82ea-6a3958e43c66\u0027]\n2022-01-22 15:21:48.953 2288574 ERROR nova.network.neutron Traceback (most recent call last):\n2022-01-22 15:21:48.953 2288574 ERROR nova.network.neutron   File \"/usr/lib/python3/dist-packages/nova/network/neutron.py\", line 680, in _unbind_ports\n2022-01-22 15:21:48.953 2288574 ERROR nova.network.neutron     port_client.update_port(port_id, port_req_body)\n```\n\nWill add those in a respin.\n\nWith this fixed, I was able to functionally test hot-plugging and removal of VNIC_TYPE_SMARTNIC ports (including the case where all ports got removed from a VM).","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":666,"context_line":"            # NOTE: We\u0027re doing this to remove the binding information"},{"line_number":667,"context_line":"            # for the physical device but don\u0027t want to overwrite the other"},{"line_number":668,"context_line":"            # information in the binding profile."},{"line_number":669,"context_line":"            for profile_key in (\u0027pci_vendor_info\u0027, \u0027pci_slot\u0027,"},{"line_number":670,"context_line":"                                constants.ALLOCATION, \u0027arq_uuid\u0027):"},{"line_number":671,"context_line":"                if profile_key in port_profile:"},{"line_number":672,"context_line":"                    del port_profile[profile_key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"a7bd8a2f_aa758f50","line":669,"in_reply_to":"5e97b192_16ce80df","updated":"2022-01-24 11:51:24.000000000","message":"i guess adding the extra field should not break an older neuton as they will just be ignored so we likely dont need a depends on to track the neturon change but the neutron change should have a depends on against this change.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"b0323f099dcc3aa1f28c125963aa0841620cd962","unresolved":false,"context_lines":[{"line_number":666,"context_line":"            # NOTE: We\u0027re doing this to remove the binding information"},{"line_number":667,"context_line":"            # for the physical device but don\u0027t want to overwrite the other"},{"line_number":668,"context_line":"            # information in the binding profile."},{"line_number":669,"context_line":"            for profile_key in (\u0027pci_vendor_info\u0027, \u0027pci_slot\u0027,"},{"line_number":670,"context_line":"                                constants.ALLOCATION, \u0027arq_uuid\u0027):"},{"line_number":671,"context_line":"                if profile_key in port_profile:"},{"line_number":672,"context_line":"                    del port_profile[profile_key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"8d70ab62_9dad52be","line":669,"in_reply_to":"8d900034_0bd93ee7","updated":"2022-01-25 06:37:16.000000000","message":"The tip of the Neutron series had a Depends-On to https://review.opendev.org/c/openstack/nova/+/808199, and I\u0027d be happy to point it to this review instead.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":false,"context_lines":[{"line_number":666,"context_line":"            # NOTE: We\u0027re doing this to remove the binding information"},{"line_number":667,"context_line":"            # for the physical device but don\u0027t want to overwrite the other"},{"line_number":668,"context_line":"            # information in the binding profile."},{"line_number":669,"context_line":"            for profile_key in (\u0027pci_vendor_info\u0027, \u0027pci_slot\u0027,"},{"line_number":670,"context_line":"                                constants.ALLOCATION, \u0027arq_uuid\u0027):"},{"line_number":671,"context_line":"                if profile_key in port_profile:"},{"line_number":672,"context_line":"                    del port_profile[profile_key]"}],"source_content_type":"text/x-python","patch_set":1,"id":"8d900034_0bd93ee7","line":669,"in_reply_to":"a7bd8a2f_aa758f50","updated":"2022-01-24 22:52:58.000000000","message":"Ack, added a comment to the Neutron review.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"b0323f099dcc3aa1f28c125963aa0841620cd962","unresolved":true,"context_lines":[{"line_number":1537,"context_line":"            })"},{"line_number":1538,"context_line":"        vf_profile.update({"},{"line_number":1539,"context_line":"            \u0027pf_mac_address\u0027: pf_mac,"},{"line_number":1540,"context_line":"            \u0027vf_num\u0027: vf_num,"},{"line_number":1541,"context_line":"        })"},{"line_number":1542,"context_line":"        return vf_profile"},{"line_number":1543,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"2230012e_48643ccf","line":1540,"updated":"2022-01-25 06:37:16.000000000","message":"This is currently sent as ``str`` over the wire.  Neutron actually does validation of the binding profile items and there is precedence in the code base to expect numerical values to actually be transmitted as ``int``.\n\nI am sure this is something that could be negotiated with either team, but what would you think about Nova transmitting this as ``int``?\n\nRef:\nhttps://review.opendev.org/c/openstack/neutron/+/826099\nhttps://review.opendev.org/c/openstack/neutron/+/818420","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"f6b52ca3c99ff9b30f6099ef01154c25cce5930e","unresolved":true,"context_lines":[{"line_number":1537,"context_line":"            })"},{"line_number":1538,"context_line":"        vf_profile.update({"},{"line_number":1539,"context_line":"            \u0027pf_mac_address\u0027: pf_mac,"},{"line_number":1540,"context_line":"            \u0027vf_num\u0027: vf_num,"},{"line_number":1541,"context_line":"        })"},{"line_number":1542,"context_line":"        return vf_profile"},{"line_number":1543,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b709da77_c973bece","line":1540,"in_reply_to":"2230012e_48643ccf","updated":"2022-01-25 15:13:11.000000000","message":"I don\u0027t mind sending it as an int.\n\nThis function got updated to return an int: https://review.opendev.org/c/openstack/nova/+/824833/1/nova/pci/utils.py#213\n\nIf that still happens, either we haven\u0027t updated our test system or there\u0027s something else converting it to a string down the line during request serialization.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"42a3eff85681355231522eeb6303e2768e8b578f","unresolved":false,"context_lines":[{"line_number":1537,"context_line":"            })"},{"line_number":1538,"context_line":"        vf_profile.update({"},{"line_number":1539,"context_line":"            \u0027pf_mac_address\u0027: pf_mac,"},{"line_number":1540,"context_line":"            \u0027vf_num\u0027: vf_num,"},{"line_number":1541,"context_line":"        })"},{"line_number":1542,"context_line":"        return vf_profile"},{"line_number":1543,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"959dada6_29dfb68d","line":1540,"in_reply_to":"b709da77_c973bece","updated":"2022-01-27 10:07:47.000000000","message":"Ah, I missed that change, that should indeed solve it. Thx!","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":1540,"context_line":"            \u0027vf_num\u0027: vf_num,"},{"line_number":1541,"context_line":"        })"},{"line_number":1542,"context_line":"        return vf_profile"},{"line_number":1543,"context_line":""},{"line_number":1544,"context_line":"    def _get_pci_device_profile(self, pci_dev):"},{"line_number":1545,"context_line":"        dev_spec \u003d self.pci_whitelist.get_devspec(pci_dev)"},{"line_number":1546,"context_line":"        if dev_spec:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5c592984_edb1ffa4","line":1543,"updated":"2022-01-24 11:51:24.000000000","message":"+1 for factoring this out into its own testable function.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":false,"context_lines":[{"line_number":1540,"context_line":"            \u0027vf_num\u0027: vf_num,"},{"line_number":1541,"context_line":"        })"},{"line_number":1542,"context_line":"        return vf_profile"},{"line_number":1543,"context_line":""},{"line_number":1544,"context_line":"    def _get_pci_device_profile(self, pci_dev):"},{"line_number":1545,"context_line":"        dev_spec \u003d self.pci_whitelist.get_devspec(pci_dev)"},{"line_number":1546,"context_line":"        if dev_spec:"}],"source_content_type":"text/x-python","patch_set":1,"id":"001aab1a_b6b4ed59","line":1543,"in_reply_to":"5c592984_edb1ffa4","updated":"2022-01-24 22:52:58.000000000","message":"Ack","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"88b09a089ba147b55e05b5aa5256a61a5acdedd8","unresolved":true,"context_lines":[{"line_number":668,"context_line":"            # information in the binding profile."},{"line_number":669,"context_line":"            for profile_key in (\u0027pci_vendor_info\u0027, \u0027pci_slot\u0027,"},{"line_number":670,"context_line":"                                constants.ALLOCATION, \u0027arq_uuid\u0027,"},{"line_number":671,"context_line":"                                \u0027card_serial_number\u0027, \u0027vf_num\u0027,"},{"line_number":672,"context_line":"                                \u0027pf_mac_address\u0027, \u0027physical_network\u0027):"},{"line_number":673,"context_line":"                if profile_key in port_profile:"},{"line_number":674,"context_line":"                    del port_profile[profile_key]"}],"source_content_type":"text/x-python","patch_set":6,"id":"4274c988_e86364b8","line":671,"range":{"start_line":671,"start_character":33,"end_line":671,"end_character":51},"updated":"2022-02-01 13:35:48.000000000","message":"This was added in the previous PS so I think the removal of this key should be moved there too","commit_id":"f766125471dca45dc4501ae90ed4140da8c9c87a"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"803bdd0d0d497b931c4993e1c17562bd29395524","unresolved":false,"context_lines":[{"line_number":668,"context_line":"            # information in the binding profile."},{"line_number":669,"context_line":"            for profile_key in (\u0027pci_vendor_info\u0027, \u0027pci_slot\u0027,"},{"line_number":670,"context_line":"                                constants.ALLOCATION, \u0027arq_uuid\u0027,"},{"line_number":671,"context_line":"                                \u0027card_serial_number\u0027, \u0027vf_num\u0027,"},{"line_number":672,"context_line":"                                \u0027pf_mac_address\u0027, \u0027physical_network\u0027):"},{"line_number":673,"context_line":"                if profile_key in port_profile:"},{"line_number":674,"context_line":"                    del port_profile[profile_key]"}],"source_content_type":"text/x-python","patch_set":6,"id":"60ff1683_46accce8","line":671,"range":{"start_line":671,"start_character":33,"end_line":671,"end_character":51},"in_reply_to":"4274c988_e86364b8","updated":"2022-02-01 14:59:40.000000000","message":"Done","commit_id":"f766125471dca45dc4501ae90ed4140da8c9c87a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"88b09a089ba147b55e05b5aa5256a61a5acdedd8","unresolved":true,"context_lines":[{"line_number":669,"context_line":"            for profile_key in (\u0027pci_vendor_info\u0027, \u0027pci_slot\u0027,"},{"line_number":670,"context_line":"                                constants.ALLOCATION, \u0027arq_uuid\u0027,"},{"line_number":671,"context_line":"                                \u0027card_serial_number\u0027, \u0027vf_num\u0027,"},{"line_number":672,"context_line":"                                \u0027pf_mac_address\u0027, \u0027physical_network\u0027):"},{"line_number":673,"context_line":"                if profile_key in port_profile:"},{"line_number":674,"context_line":"                    del port_profile[profile_key]"},{"line_number":675,"context_line":"            port_req_body[\u0027port\u0027][constants.BINDING_PROFILE] \u003d port_profile"}],"source_content_type":"text/x-python","patch_set":6,"id":"057ae970_524c7489","line":672,"range":{"start_line":672,"start_character":51,"end_line":672,"end_character":67},"updated":"2022-02-01 13:35:48.000000000","message":"ditto","commit_id":"f766125471dca45dc4501ae90ed4140da8c9c87a"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"803bdd0d0d497b931c4993e1c17562bd29395524","unresolved":false,"context_lines":[{"line_number":669,"context_line":"            for profile_key in (\u0027pci_vendor_info\u0027, \u0027pci_slot\u0027,"},{"line_number":670,"context_line":"                                constants.ALLOCATION, \u0027arq_uuid\u0027,"},{"line_number":671,"context_line":"                                \u0027card_serial_number\u0027, \u0027vf_num\u0027,"},{"line_number":672,"context_line":"                                \u0027pf_mac_address\u0027, \u0027physical_network\u0027):"},{"line_number":673,"context_line":"                if profile_key in port_profile:"},{"line_number":674,"context_line":"                    del port_profile[profile_key]"},{"line_number":675,"context_line":"            port_req_body[\u0027port\u0027][constants.BINDING_PROFILE] \u003d port_profile"}],"source_content_type":"text/x-python","patch_set":6,"id":"c4d0b6d6_0a01428a","line":672,"range":{"start_line":672,"start_character":51,"end_line":672,"end_character":67},"in_reply_to":"057ae970_524c7489","updated":"2022-02-01 14:59:40.000000000","message":"Done","commit_id":"f766125471dca45dc4501ae90ed4140da8c9c87a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"88b09a089ba147b55e05b5aa5256a61a5acdedd8","unresolved":false,"context_lines":[{"line_number":1514,"context_line":"        \"\"\""},{"line_number":1515,"context_line":"        vf_profile \u003d {}"},{"line_number":1516,"context_line":""},{"line_number":1517,"context_line":"        # All VFs must have a parent PF PCI address."},{"line_number":1518,"context_line":"        if not pci_dev.parent_addr:"},{"line_number":1519,"context_line":"            raise exception.PciDeviceIsNotVF(address\u003dpci_dev.address)"},{"line_number":1520,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ce0a0c5b_ff78abd1","line":1517,"updated":"2022-02-01 13:35:48.000000000","message":"That seems like a valid assumption","commit_id":"f766125471dca45dc4501ae90ed4140da8c9c87a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"edcf75c5ff0cb81506af59abf129c9a7870fb289","unresolved":true,"context_lines":[{"line_number":1514,"context_line":"        \"\"\""},{"line_number":1515,"context_line":"        vf_profile \u003d {}"},{"line_number":1516,"context_line":""},{"line_number":1517,"context_line":"        # All VFs must have a parent PF PCI address."},{"line_number":1518,"context_line":"        if not pci_dev.parent_addr:"},{"line_number":1519,"context_line":"            raise exception.PciDeviceIsNotVF(address\u003dpci_dev.address)"},{"line_number":1520,"context_line":"        try:"},{"line_number":1521,"context_line":"            pf_mac \u003d pci_utils.get_mac_by_pci_address(pci_dev.parent_addr)"},{"line_number":1522,"context_line":"        except (exception.PciDeviceNotFoundById) as e:"}],"source_content_type":"text/x-python","patch_set":7,"id":"dd4c8cfb_e4614411","line":1519,"range":{"start_line":1517,"start_character":0,"end_line":1519,"end_character":69},"updated":"2022-02-07 13:39:05.000000000","message":"this technially is not needed since the only place its used is guarded by\n\nif pci_dev.dev_type \u003d\u003d obj_fields.PciDeviceType.SRIOV_VF:\nso this shoudl never raise.","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"07ebb0196631d121f6c79040d0158139af13b5a0","unresolved":false,"context_lines":[{"line_number":1514,"context_line":"        \"\"\""},{"line_number":1515,"context_line":"        vf_profile \u003d {}"},{"line_number":1516,"context_line":""},{"line_number":1517,"context_line":"        # All VFs must have a parent PF PCI address."},{"line_number":1518,"context_line":"        if not pci_dev.parent_addr:"},{"line_number":1519,"context_line":"            raise exception.PciDeviceIsNotVF(address\u003dpci_dev.address)"},{"line_number":1520,"context_line":"        try:"},{"line_number":1521,"context_line":"            pf_mac \u003d pci_utils.get_mac_by_pci_address(pci_dev.parent_addr)"},{"line_number":1522,"context_line":"        except (exception.PciDeviceNotFoundById) as e:"}],"source_content_type":"text/x-python","patch_set":7,"id":"061d00b4_cec6db9e","line":1519,"range":{"start_line":1517,"start_character":0,"end_line":1519,"end_character":69},"in_reply_to":"dd4c8cfb_e4614411","updated":"2022-02-07 16:25:32.000000000","message":"Agreed, if this ever happens, that will definitely be a regression.","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"edcf75c5ff0cb81506af59abf129c9a7870fb289","unresolved":true,"context_lines":[{"line_number":1519,"context_line":"            raise exception.PciDeviceIsNotVF(address\u003dpci_dev.address)"},{"line_number":1520,"context_line":"        try:"},{"line_number":1521,"context_line":"            pf_mac \u003d pci_utils.get_mac_by_pci_address(pci_dev.parent_addr)"},{"line_number":1522,"context_line":"        except (exception.PciDeviceNotFoundById) as e:"},{"line_number":1523,"context_line":"            LOG.error("},{"line_number":1524,"context_line":"                \"Could not determine PF MAC address for a VF with\""},{"line_number":1525,"context_line":"                \" addr %(addr)s, error: %(e)s\","},{"line_number":1526,"context_line":"                {\"addr\": pci_dev.address, \"e\": e})"},{"line_number":1527,"context_line":"            raise"},{"line_number":1528,"context_line":"        try:"},{"line_number":1529,"context_line":"            vf_num \u003d pci_utils.get_vf_num_by_pci_address("},{"line_number":1530,"context_line":"                pci_dev.address)"}],"source_content_type":"text/x-python","patch_set":7,"id":"e6461ad2_c3656595","line":1527,"range":{"start_line":1522,"start_character":7,"end_line":1527,"end_character":17},"updated":"2022-02-07 13:39:05.000000000","message":"we cannot assuem that the pf will always have a mac as it may not have a netdev associated with it.\n\nhttps://review.opendev.org/c/openstack/nova/+/777679/3\nhttps://launchpad.net/bugs/1915255\nso we can log here but we shoudl not raise\n\nwe shoudl just not include the PF mac.\n\nin such a case you will not have the info required for off path configuration but since that wont be Cavium ThunderX hosts for there integrated nics that is ok","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"07ebb0196631d121f6c79040d0158139af13b5a0","unresolved":false,"context_lines":[{"line_number":1519,"context_line":"            raise exception.PciDeviceIsNotVF(address\u003dpci_dev.address)"},{"line_number":1520,"context_line":"        try:"},{"line_number":1521,"context_line":"            pf_mac \u003d pci_utils.get_mac_by_pci_address(pci_dev.parent_addr)"},{"line_number":1522,"context_line":"        except (exception.PciDeviceNotFoundById) as e:"},{"line_number":1523,"context_line":"            LOG.error("},{"line_number":1524,"context_line":"                \"Could not determine PF MAC address for a VF with\""},{"line_number":1525,"context_line":"                \" addr %(addr)s, error: %(e)s\","},{"line_number":1526,"context_line":"                {\"addr\": pci_dev.address, \"e\": e})"},{"line_number":1527,"context_line":"            raise"},{"line_number":1528,"context_line":"        try:"},{"line_number":1529,"context_line":"            vf_num \u003d pci_utils.get_vf_num_by_pci_address("},{"line_number":1530,"context_line":"                pci_dev.address)"}],"source_content_type":"text/x-python","patch_set":7,"id":"2e6518b3_6324a282","line":1527,"range":{"start_line":1522,"start_character":7,"end_line":1527,"end_character":17},"in_reply_to":"e6461ad2_c3656595","updated":"2022-02-07 16:25:32.000000000","message":"Agreed, I\u0027ll log a debug message and will remove re-raising.","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"69fe92e84733ed420d059d2c074b79fc04d35006","unresolved":true,"context_lines":[{"line_number":1519,"context_line":"            raise exception.PciDeviceIsNotVF(address\u003dpci_dev.address)"},{"line_number":1520,"context_line":"        try:"},{"line_number":1521,"context_line":"            pf_mac \u003d pci_utils.get_mac_by_pci_address(pci_dev.parent_addr)"},{"line_number":1522,"context_line":"        except (exception.PciDeviceNotFoundById) as e:"},{"line_number":1523,"context_line":"            LOG.error("},{"line_number":1524,"context_line":"                \"Could not determine PF MAC address for a VF with\""},{"line_number":1525,"context_line":"                \" addr %(addr)s, error: %(e)s\","},{"line_number":1526,"context_line":"                {\"addr\": pci_dev.address, \"e\": e})"},{"line_number":1527,"context_line":"            raise"},{"line_number":1528,"context_line":"        try:"},{"line_number":1529,"context_line":"            vf_num \u003d pci_utils.get_vf_num_by_pci_address("},{"line_number":1530,"context_line":"                pci_dev.address)"}],"source_content_type":"text/x-python","patch_set":7,"id":"09e68df8_90ca4c3c","line":1527,"range":{"start_line":1522,"start_character":7,"end_line":1527,"end_character":17},"in_reply_to":"e6461ad2_c3656595","updated":"2022-02-07 13:43:25.000000000","message":"the log shoudl be at debug by the way not error","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"edcf75c5ff0cb81506af59abf129c9a7870fb289","unresolved":true,"context_lines":[{"line_number":1533,"context_line":"                \"Could not determine a VF logical number for a VF\""},{"line_number":1534,"context_line":"                \" with addr %(addr)s, error: %(e)s\", {"},{"line_number":1535,"context_line":"                    \"addr\": pci_dev.address, \"e\": e})"},{"line_number":1536,"context_line":"            raise"},{"line_number":1537,"context_line":"        card_serial_number \u003d pci_dev.card_serial_number"},{"line_number":1538,"context_line":"        if card_serial_number:"},{"line_number":1539,"context_line":"            vf_profile.update({"}],"source_content_type":"text/x-python","patch_set":7,"id":"b55005ba_f96116f2","line":1536,"range":{"start_line":1536,"start_character":11,"end_line":1536,"end_character":17},"updated":"2022-02-07 13:39:05.000000000","message":"again im not sure raising is correct here.\n\nthis really shoudl be optional.","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"07ebb0196631d121f6c79040d0158139af13b5a0","unresolved":false,"context_lines":[{"line_number":1533,"context_line":"                \"Could not determine a VF logical number for a VF\""},{"line_number":1534,"context_line":"                \" with addr %(addr)s, error: %(e)s\", {"},{"line_number":1535,"context_line":"                    \"addr\": pci_dev.address, \"e\": e})"},{"line_number":1536,"context_line":"            raise"},{"line_number":1537,"context_line":"        card_serial_number \u003d pci_dev.card_serial_number"},{"line_number":1538,"context_line":"        if card_serial_number:"},{"line_number":1539,"context_line":"            vf_profile.update({"}],"source_content_type":"text/x-python","patch_set":7,"id":"58563c96_d0b35dda","line":1536,"range":{"start_line":1536,"start_character":11,"end_line":1536,"end_character":17},"in_reply_to":"b55005ba_f96116f2","updated":"2022-02-07 16:25:32.000000000","message":"For context, I think we\u0027re safe to assume it will be there for all VFs because it\u0027s the generic SR-IOV code that creates the physfn symlinks through which the number is retrieved by Nova:\n\nhttps://github.com/torvalds/linux/blob/v5.16/drivers/pci/iov.c#L144-L147\nhttps://github.com/torvalds/linux/blob/v5.16/drivers/pci/iov.c#L295\n\nHowever, I have no issue in changing it to avoid raising and instead just log a warning here.","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"69fe92e84733ed420d059d2c074b79fc04d35006","unresolved":true,"context_lines":[{"line_number":1533,"context_line":"                \"Could not determine a VF logical number for a VF\""},{"line_number":1534,"context_line":"                \" with addr %(addr)s, error: %(e)s\", {"},{"line_number":1535,"context_line":"                    \"addr\": pci_dev.address, \"e\": e})"},{"line_number":1536,"context_line":"            raise"},{"line_number":1537,"context_line":"        card_serial_number \u003d pci_dev.card_serial_number"},{"line_number":1538,"context_line":"        if card_serial_number:"},{"line_number":1539,"context_line":"            vf_profile.update({"}],"source_content_type":"text/x-python","patch_set":7,"id":"b7239f96_f05a2128","line":1536,"range":{"start_line":1536,"start_character":11,"end_line":1536,"end_character":17},"in_reply_to":"b55005ba_f96116f2","updated":"2022-02-07 13:43:25.000000000","message":"same here debug not error","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"}],"nova/pci/utils.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":220,"context_line":"        raise exception.PciDeviceNotFoundById(id\u003dvf_pci_addr)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    physfn_path \u003d os.path.join(vf_path, \u0027physfn\u0027)"},{"line_number":223,"context_line":"    if not os.path.islink(physfn_path):"},{"line_number":224,"context_line":"        raise exception.PciDeviceIsNotVF(address\u003dvf_pci_addr)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    pf_pci_addr \u003d os.path.basename(os.readlink(physfn_path))"}],"source_content_type":"text/x-python","patch_set":1,"id":"8240037f_3902570c","line":223,"range":{"start_line":223,"start_character":19,"end_line":223,"end_character":25},"updated":"2022-01-24 11:51:24.000000000","message":"i partly wonder if it would be better just to check it exists ratther then the type here and above.\n\ni guess this will alway be a symlink in this case today. it could be a hard link but i dont think hardlinks are typically use in /sys.\n\n\ni guess my point is nova does not care what the type of the inode is just that its present so exists matches the intent better but this is also correct so this is jut a nit.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"cad414e107af67b99f5b30d176c2f040ca61705d","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        raise exception.PciDeviceNotFoundById(id\u003dvf_pci_addr)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    physfn_path \u003d os.path.join(vf_path, \u0027physfn\u0027)"},{"line_number":223,"context_line":"    if not os.path.islink(physfn_path):"},{"line_number":224,"context_line":"        raise exception.PciDeviceIsNotVF(address\u003dvf_pci_addr)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    pf_pci_addr \u003d os.path.basename(os.readlink(physfn_path))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1d79b030_58008311","line":223,"range":{"start_line":223,"start_character":19,"end_line":223,"end_character":25},"in_reply_to":"1203197b_0ec1f08d","updated":"2022-01-26 11:23:49.000000000","message":"Done","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":true,"context_lines":[{"line_number":220,"context_line":"        raise exception.PciDeviceNotFoundById(id\u003dvf_pci_addr)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    physfn_path \u003d os.path.join(vf_path, \u0027physfn\u0027)"},{"line_number":223,"context_line":"    if not os.path.islink(physfn_path):"},{"line_number":224,"context_line":"        raise exception.PciDeviceIsNotVF(address\u003dvf_pci_addr)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    pf_pci_addr \u003d os.path.basename(os.readlink(physfn_path))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1203197b_0ec1f08d","line":223,"range":{"start_line":223,"start_character":19,"end_line":223,"end_character":25},"in_reply_to":"8240037f_3902570c","updated":"2022-01-24 22:52:58.000000000","message":"Actually, I can use pci_dev.parent_addr instead which we will get for all VFs from Libvirt and this function and the one below can be dropped completely.\n\nThere will be some changes in testing but less code to review/merge.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"88b09a089ba147b55e05b5aa5256a61a5acdedd8","unresolved":false,"context_lines":[{"line_number":210,"context_line":"    else:"},{"line_number":211,"context_line":"        raise exception.PciDeviceNotFoundById(id\u003dpci_addr)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    return int(vf_num)"}],"source_content_type":"text/x-python","patch_set":6,"id":"e7940734_b70d1099","line":213,"updated":"2022-02-01 13:35:48.000000000","message":"OK, all the legacy callers treat this value as something that can be stringified with str() so change the type to int will not break them","commit_id":"f766125471dca45dc4501ae90ed4140da8c9c87a"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"803bdd0d0d497b931c4993e1c17562bd29395524","unresolved":false,"context_lines":[{"line_number":210,"context_line":"    else:"},{"line_number":211,"context_line":"        raise exception.PciDeviceNotFoundById(id\u003dpci_addr)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    return int(vf_num)"}],"source_content_type":"text/x-python","patch_set":6,"id":"e5086b1b_1d5cbc76","line":213,"in_reply_to":"e7940734_b70d1099","updated":"2022-02-01 14:59:40.000000000","message":"Yes, that was a surprisingly simple change to make.","commit_id":"f766125471dca45dc4501ae90ed4140da8c9c87a"}],"nova/tests/fixtures/libvirt.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":2164,"context_line":""},{"line_number":2165,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":2166,"context_line":"            \u0027nova.pci.utils.get_pf_mac_by_vf_pci_address\u0027,"},{"line_number":2167,"context_line":"            return_value\u003d\u0027fake_pf_mac\u0027))"},{"line_number":2168,"context_line":""},{"line_number":2169,"context_line":"        # libvirt calls out to sysfs to get the vfs ID during macvtap plug"},{"line_number":2170,"context_line":"        self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":1,"id":"d91f04a6_c14c3b26","line":2167,"range":{"start_line":2167,"start_character":25,"end_line":2167,"end_character":38},"updated":"2022-01-24 11:51:24.000000000","message":"this should really be a vaild mac\n\nwe do try to keep the test data valid when we can","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":false,"context_lines":[{"line_number":2164,"context_line":""},{"line_number":2165,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":2166,"context_line":"            \u0027nova.pci.utils.get_pf_mac_by_vf_pci_address\u0027,"},{"line_number":2167,"context_line":"            return_value\u003d\u0027fake_pf_mac\u0027))"},{"line_number":2168,"context_line":""},{"line_number":2169,"context_line":"        # libvirt calls out to sysfs to get the vfs ID during macvtap plug"},{"line_number":2170,"context_line":"        self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":1,"id":"ba9ac79e_452cd825","line":2167,"range":{"start_line":2167,"start_character":25,"end_line":2167,"end_character":38},"in_reply_to":"d91f04a6_c14c3b26","updated":"2022-01-24 22:52:58.000000000","message":"Ack","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"}],"nova/tests/functional/libvirt/test_pci_sriov_servers.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":62,"context_line":"            \u0027.PciPassthroughFilter.host_passes\u0027,"},{"line_number":63,"context_line":"            side_effect\u003dhost_pass_mock)).mock"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":66,"context_line":"            \u0027nova.pci.utils.get_pf_mac_by_vf_pci_address\u0027,"},{"line_number":67,"context_line":"            return_value\u003d\u0027fake_pf_mac\u0027))"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"d865ed17_8342cab0","line":65,"updated":"2022-01-24 11:51:24.000000000","message":"this should be provided by the libvirt fixture\nwhich is enabled by base.ServersTestBase\n\nhttps://github.com/openstack/nova/blob/master/nova/tests/functional/libvirt/base.py#L45","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"cad414e107af67b99f5b30d176c2f040ca61705d","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            \u0027.PciPassthroughFilter.host_passes\u0027,"},{"line_number":63,"context_line":"            side_effect\u003dhost_pass_mock)).mock"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":66,"context_line":"            \u0027nova.pci.utils.get_pf_mac_by_vf_pci_address\u0027,"},{"line_number":67,"context_line":"            return_value\u003d\u0027fake_pf_mac\u0027))"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"45a01a36_124f0935","line":65,"in_reply_to":"d865ed17_8342cab0","updated":"2022-01-26 11:23:49.000000000","message":"Ack","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":66,"context_line":"            \u0027nova.pci.utils.get_pf_mac_by_vf_pci_address\u0027,"},{"line_number":67,"context_line":"            return_value\u003d\u0027fake_pf_mac\u0027))"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":70,"context_line":"            \u0027nova.pci.utils.get_vf_num_by_pci_address\u0027,"},{"line_number":71,"context_line":"            return_value\u003d\u0027fake_vf_num\u0027))"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"e326a55a_64938fc9","line":69,"updated":"2022-01-24 11:51:24.000000000","message":"this is also provided by the libvirt fixture and the return value should be an int","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"cad414e107af67b99f5b30d176c2f040ca61705d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            \u0027nova.pci.utils.get_pf_mac_by_vf_pci_address\u0027,"},{"line_number":67,"context_line":"            return_value\u003d\u0027fake_pf_mac\u0027))"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":70,"context_line":"            \u0027nova.pci.utils.get_vf_num_by_pci_address\u0027,"},{"line_number":71,"context_line":"            return_value\u003d\u0027fake_vf_num\u0027))"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4653471f_8caaaf7f","line":69,"in_reply_to":"e326a55a_64938fc9","updated":"2022-01-26 11:23:49.000000000","message":"Ack","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":296,"context_line":"                \u0027pci_slot\u0027: \u00270000:81:00.2\u0027,"},{"line_number":297,"context_line":"                \u0027physical_network\u0027: \u0027physnet4\u0027,"},{"line_number":298,"context_line":"                \u0027pf_mac_address\u0027: \u0027fake_pf_mac\u0027,"},{"line_number":299,"context_line":"                \u0027vf_num\u0027: \u0027fake_vf_num\u0027,"},{"line_number":300,"context_line":"            },"},{"line_number":301,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":302,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"d8ca1691_55ba306e","line":299,"range":{"start_line":299,"start_character":26,"end_line":299,"end_character":39},"updated":"2022-01-24 11:51:24.000000000","message":"this should be 1","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"cad414e107af67b99f5b30d176c2f040ca61705d","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                \u0027pci_slot\u0027: \u00270000:81:00.2\u0027,"},{"line_number":297,"context_line":"                \u0027physical_network\u0027: \u0027physnet4\u0027,"},{"line_number":298,"context_line":"                \u0027pf_mac_address\u0027: \u0027fake_pf_mac\u0027,"},{"line_number":299,"context_line":"                \u0027vf_num\u0027: \u0027fake_vf_num\u0027,"},{"line_number":300,"context_line":"            },"},{"line_number":301,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":302,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"4dd3a7c5_f68becd9","line":299,"range":{"start_line":299,"start_character":26,"end_line":299,"end_character":39},"in_reply_to":"d8ca1691_55ba306e","updated":"2022-01-26 11:23:49.000000000","message":"Ack","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":540,"context_line":"                \u0027pci_slot\u0027: \u00270000:81:01.4\u0027,"},{"line_number":541,"context_line":"                \u0027physical_network\u0027: \u0027physnet4\u0027,"},{"line_number":542,"context_line":"                \u0027pf_mac_address\u0027: \u0027fake_pf_mac\u0027,"},{"line_number":543,"context_line":"                \u0027vf_num\u0027: \u0027fake_vf_num\u0027,"},{"line_number":544,"context_line":"            },"},{"line_number":545,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":546,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"228cde0b_4cf8fc75","line":543,"updated":"2022-01-24 11:51:24.000000000","message":"same 1","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"152adf2e0aa497fe5ff5349b76bd2f92ebb702c2","unresolved":false,"context_lines":[{"line_number":540,"context_line":"                \u0027pci_slot\u0027: \u00270000:81:01.4\u0027,"},{"line_number":541,"context_line":"                \u0027physical_network\u0027: \u0027physnet4\u0027,"},{"line_number":542,"context_line":"                \u0027pf_mac_address\u0027: \u0027fake_pf_mac\u0027,"},{"line_number":543,"context_line":"                \u0027vf_num\u0027: \u0027fake_vf_num\u0027,"},{"line_number":544,"context_line":"            },"},{"line_number":545,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":546,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"f360fab5_29f687a9","line":543,"in_reply_to":"228cde0b_4cf8fc75","updated":"2022-01-28 18:16:48.000000000","message":"Done","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":574,"context_line":"                \u0027pci_slot\u0027: \u00270000:81:00.2\u0027,"},{"line_number":575,"context_line":"                \u0027physical_network\u0027: \u0027physnet4\u0027,"},{"line_number":576,"context_line":"                \u0027pf_mac_address\u0027: \u0027fake_pf_mac\u0027,"},{"line_number":577,"context_line":"                \u0027vf_num\u0027: \u0027fake_vf_num\u0027,"},{"line_number":578,"context_line":"            },"},{"line_number":579,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":580,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"bb6421c8_f78cb98f","line":577,"updated":"2022-01-24 11:51:24.000000000","message":"same 1","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"152adf2e0aa497fe5ff5349b76bd2f92ebb702c2","unresolved":false,"context_lines":[{"line_number":574,"context_line":"                \u0027pci_slot\u0027: \u00270000:81:00.2\u0027,"},{"line_number":575,"context_line":"                \u0027physical_network\u0027: \u0027physnet4\u0027,"},{"line_number":576,"context_line":"                \u0027pf_mac_address\u0027: \u0027fake_pf_mac\u0027,"},{"line_number":577,"context_line":"                \u0027vf_num\u0027: \u0027fake_vf_num\u0027,"},{"line_number":578,"context_line":"            },"},{"line_number":579,"context_line":"            port[\u0027binding:profile\u0027],"},{"line_number":580,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"256c1cb0_3f73623c","line":577,"in_reply_to":"bb6421c8_f78cb98f","updated":"2022-01-28 18:16:48.000000000","message":"Done","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"}],"nova/tests/functional/regressions/test_bug_1896463.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":55,"context_line":"            \u0027nova.pci.utils.get_pf_mac_by_vf_pci_address\u0027,"},{"line_number":56,"context_line":"            return_value\u003d\u0027fake_pf_mac\u0027))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":59,"context_line":"            \u0027nova.pci.utils.get_vf_num_by_pci_address\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"2f44dcf0_1de0fdd1","line":56,"updated":"2022-01-24 11:51:24.000000000","message":"again this should be a valid mac","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":55,"context_line":"            \u0027nova.pci.utils.get_pf_mac_by_vf_pci_address\u0027,"},{"line_number":56,"context_line":"            return_value\u003d\u0027fake_pf_mac\u0027))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":59,"context_line":"            \u0027nova.pci.utils.get_vf_num_by_pci_address\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"c6c43c89_9be70401","line":56,"in_reply_to":"2f44dcf0_1de0fdd1","updated":"2022-01-24 22:52:58.000000000","message":"Ack","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":59,"context_line":"            \u0027nova.pci.utils.get_vf_num_by_pci_address\u0027,"},{"line_number":60,"context_line":"            return_value\u003d\u0027fake_vf_num\u0027))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        self.admin_api \u003d self.api_fixture.admin_api"},{"line_number":63,"context_line":"        self.admin_api.microversion \u003d \u0027latest\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a638eb9_4f4329f3","line":60,"updated":"2022-01-24 11:51:24.000000000","message":"1","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":59,"context_line":"            \u0027nova.pci.utils.get_vf_num_by_pci_address\u0027,"},{"line_number":60,"context_line":"            return_value\u003d\u0027fake_vf_num\u0027))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        self.admin_api \u003d self.api_fixture.admin_api"},{"line_number":63,"context_line":"        self.admin_api.microversion \u003d \u0027latest\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"40cb7e20_cd794d89","line":60,"in_reply_to":"3a638eb9_4f4329f3","updated":"2022-01-24 22:52:58.000000000","message":"Ack","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"}],"nova/tests/functional/test_servers_resource_request.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":340,"context_line":""},{"line_number":341,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":342,"context_line":"            \u0027nova.pci.utils.get_vf_num_by_pci_address\u0027,"},{"line_number":343,"context_line":"            return_value\u003d\u0027fake_vf_num\u0027))"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        super(PortResourceRequestBasedSchedulingTestBase, self).setUp()"},{"line_number":346,"context_line":"        # override the default neutron fixture by mocking over it"}],"source_content_type":"text/x-python","patch_set":1,"id":"1de832ba_fb1be288","line":343,"updated":"2022-01-24 11:51:24.000000000","message":"can you update these to return valid test data when you respine","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":false,"context_lines":[{"line_number":340,"context_line":""},{"line_number":341,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":342,"context_line":"            \u0027nova.pci.utils.get_vf_num_by_pci_address\u0027,"},{"line_number":343,"context_line":"            return_value\u003d\u0027fake_vf_num\u0027))"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        super(PortResourceRequestBasedSchedulingTestBase, self).setUp()"},{"line_number":346,"context_line":"        # override the default neutron fixture by mocking over it"}],"source_content_type":"text/x-python","patch_set":1,"id":"699596f9_b75d03b5","line":343,"in_reply_to":"1de832ba_fb1be288","updated":"2022-01-24 22:52:58.000000000","message":"Ack, will do.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"88b09a089ba147b55e05b5aa5256a61a5acdedd8","unresolved":true,"context_lines":[{"line_number":309,"context_line":"class PortResourceRequestBasedSchedulingTestBase("},{"line_number":310,"context_line":"        integrated_helpers.ProviderUsageBaseTestCase):"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    compute_driver \u003d \u0027fake.FakeDriverWithPciResources\u0027"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    CUSTOM_VNIC_TYPE_NORMAL \u003d \u0027CUSTOM_VNIC_TYPE_NORMAL\u0027"},{"line_number":315,"context_line":"    CUSTOM_VNIC_TYPE_DIRECT \u003d \u0027CUSTOM_VNIC_TYPE_DIRECT\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"28a902ba_aa649439","line":312,"updated":"2022-02-01 13:35:48.000000000","message":"I would fix this instead of adding separate mocks below. Maybe just moving the mocks to the driver fixture is already enough to express the relationship.","commit_id":"f766125471dca45dc4501ae90ed4140da8c9c87a"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"803bdd0d0d497b931c4993e1c17562bd29395524","unresolved":false,"context_lines":[{"line_number":309,"context_line":"class PortResourceRequestBasedSchedulingTestBase("},{"line_number":310,"context_line":"        integrated_helpers.ProviderUsageBaseTestCase):"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    compute_driver \u003d \u0027fake.FakeDriverWithPciResources\u0027"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    CUSTOM_VNIC_TYPE_NORMAL \u003d \u0027CUSTOM_VNIC_TYPE_NORMAL\u0027"},{"line_number":315,"context_line":"    CUSTOM_VNIC_TYPE_DIRECT \u003d \u0027CUSTOM_VNIC_TYPE_DIRECT\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"eebc4d41_a419f794","line":312,"in_reply_to":"28a902ba_aa649439","updated":"2022-02-01 14:59:40.000000000","message":"Done","commit_id":"f766125471dca45dc4501ae90ed4140da8c9c87a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b37c79830039d192e31240daf9c5b448b5df5097","unresolved":true,"context_lines":[{"line_number":334,"context_line":"            fake.FakeDriverWithPciResources."},{"line_number":335,"context_line":"                FakeDriverWithPciResourcesConfigFixture())"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":338,"context_line":"            \u0027nova.pci.utils.get_mac_by_pci_address\u0027,"},{"line_number":339,"context_line":"            return_value\u003d\u002752:54:00:1e:59:c6\u0027))"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":342,"context_line":"            \u0027nova.pci.utils.get_vf_num_by_pci_address\u0027,"},{"line_number":343,"context_line":"            return_value\u003d1))"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        super(PortResourceRequestBasedSchedulingTestBase, self).setUp()"},{"line_number":346,"context_line":"        # override the default neutron fixture by mocking over it"}],"source_content_type":"text/x-python","patch_set":7,"id":"a4b13532_3a9a6042","line":343,"range":{"start_line":337,"start_character":1,"end_line":343,"end_character":28},"updated":"2022-02-03 13:25:41.000000000","message":"Thanks for adding this to the fixture. But now you can drop these from here as the fixture takes care of it","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"edcf75c5ff0cb81506af59abf129c9a7870fb289","unresolved":true,"context_lines":[{"line_number":334,"context_line":"            fake.FakeDriverWithPciResources."},{"line_number":335,"context_line":"                FakeDriverWithPciResourcesConfigFixture())"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":338,"context_line":"            \u0027nova.pci.utils.get_mac_by_pci_address\u0027,"},{"line_number":339,"context_line":"            return_value\u003d\u002752:54:00:1e:59:c6\u0027))"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":342,"context_line":"            \u0027nova.pci.utils.get_vf_num_by_pci_address\u0027,"},{"line_number":343,"context_line":"            return_value\u003d1))"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        super(PortResourceRequestBasedSchedulingTestBase, self).setUp()"},{"line_number":346,"context_line":"        # override the default neutron fixture by mocking over it"}],"source_content_type":"text/x-python","patch_set":7,"id":"aa507fdf_20a82d8c","line":343,"range":{"start_line":337,"start_character":1,"end_line":343,"end_character":28},"in_reply_to":"a4b13532_3a9a6042","updated":"2022-02-07 13:39:05.000000000","message":"+1","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"b6c0f83b731aec4342064b5c1134c90d0125fc20","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            fake.FakeDriverWithPciResources."},{"line_number":335,"context_line":"                FakeDriverWithPciResourcesConfigFixture())"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":338,"context_line":"            \u0027nova.pci.utils.get_mac_by_pci_address\u0027,"},{"line_number":339,"context_line":"            return_value\u003d\u002752:54:00:1e:59:c6\u0027))"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":342,"context_line":"            \u0027nova.pci.utils.get_vf_num_by_pci_address\u0027,"},{"line_number":343,"context_line":"            return_value\u003d1))"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        super(PortResourceRequestBasedSchedulingTestBase, self).setUp()"},{"line_number":346,"context_line":"        # override the default neutron fixture by mocking over it"}],"source_content_type":"text/x-python","patch_set":7,"id":"272c9cf5_6d7333df","line":343,"range":{"start_line":337,"start_character":1,"end_line":343,"end_character":28},"in_reply_to":"aa507fdf_20a82d8c","updated":"2022-02-08 11:33:40.000000000","message":"Done","commit_id":"00b9afd7772d2331eb0b92873b4ae18eebdb36d8"}],"nova/tests/unit/network/test_neutron.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":4486,"context_line":"    )"},{"line_number":4487,"context_line":"    @mock.patch.object(pci_whitelist.Whitelist, \u0027get_devspec\u0027)"},{"line_number":4488,"context_line":"    @mock.patch.object(neutronapi, \u0027get_client\u0027, return_value\u003dmock.Mock())"},{"line_number":4489,"context_line":"    def test_update_port_bindings_for_instance_with_pci(self,"},{"line_number":4490,"context_line":"                                            get_client_mock,"},{"line_number":4491,"context_line":"                                            get_pci_device_devspec_mock,"},{"line_number":4492,"context_line":"                                            _get_vf_pci_device_profile_mock):"}],"source_content_type":"text/x-python","patch_set":1,"id":"a9b46de7_8557cb3c","line":4489,"updated":"2022-01-24 11:51:24.000000000","message":"nit it would be nice if you could reflow this\ntest_,…(\n    self, get_client_mock, …\n):\n\n\nalthough you do not actully use _get_vf_pci_device_profile_mock\nin the test so instead of adding it to the fucntion signiture you should do this differnetly\n\n@mock.patch.object(neutronapi.API, \u0027_get_vf_pci_device_profile\u0027,\n                       return_value\u003d{})\n\nshould be \n\n@mock.patch.object(\n    neutronapi.API, \u0027_get_vf_pci_device_profile\u0027,\n    new\u003dmock.Mock(return_value\u003d{}))\n\nthen you wont need to add a new parmater and wont need to update these lines at all","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":false,"context_lines":[{"line_number":4486,"context_line":"    )"},{"line_number":4487,"context_line":"    @mock.patch.object(pci_whitelist.Whitelist, \u0027get_devspec\u0027)"},{"line_number":4488,"context_line":"    @mock.patch.object(neutronapi, \u0027get_client\u0027, return_value\u003dmock.Mock())"},{"line_number":4489,"context_line":"    def test_update_port_bindings_for_instance_with_pci(self,"},{"line_number":4490,"context_line":"                                            get_client_mock,"},{"line_number":4491,"context_line":"                                            get_pci_device_devspec_mock,"},{"line_number":4492,"context_line":"                                            _get_vf_pci_device_profile_mock):"}],"source_content_type":"text/x-python","patch_set":1,"id":"2b4e3a02_1413ac78","line":4489,"in_reply_to":"a9b46de7_8557cb3c","updated":"2022-01-24 22:52:58.000000000","message":"Ack, thanks for the hint!","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":7403,"context_line":"    @mock.patch.object(pci_manager, \u0027get_instance_pci_devs\u0027)"},{"line_number":7404,"context_line":"    def test_populate_neutron_extension_values_binding_sriov("},{"line_number":7405,"context_line":"        self, mock_get_instance_pci_devs, mock_get_pci_device_devspec,"},{"line_number":7406,"context_line":"        mock__get_vf_pci_device_profile):"},{"line_number":7407,"context_line":"        host_id \u003d \u0027my_host_id\u0027"},{"line_number":7408,"context_line":"        instance \u003d {\u0027host\u0027: host_id}"},{"line_number":7409,"context_line":"        port_req_body \u003d {\u0027port\u0027: {}}"}],"source_content_type":"text/x-python","patch_set":1,"id":"c53afb59_6192bd50","line":7406,"updated":"2022-01-24 11:51:24.000000000","message":"here and below you are actully using the new mock so this is correct.\n\nwe dont always add an extra _ when the function begins with one.\nthat we leave to personal prefernce.\n\ni generally dont but i know others like to do it for consitnacey so this is fine as is.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":false,"context_lines":[{"line_number":7403,"context_line":"    @mock.patch.object(pci_manager, \u0027get_instance_pci_devs\u0027)"},{"line_number":7404,"context_line":"    def test_populate_neutron_extension_values_binding_sriov("},{"line_number":7405,"context_line":"        self, mock_get_instance_pci_devs, mock_get_pci_device_devspec,"},{"line_number":7406,"context_line":"        mock__get_vf_pci_device_profile):"},{"line_number":7407,"context_line":"        host_id \u003d \u0027my_host_id\u0027"},{"line_number":7408,"context_line":"        instance \u003d {\u0027host\u0027: host_id}"},{"line_number":7409,"context_line":"        port_req_body \u003d {\u0027port\u0027: {}}"}],"source_content_type":"text/x-python","patch_set":1,"id":"6eb3241f_0a6b0a66","line":7406,"in_reply_to":"c53afb59_6192bd50","updated":"2022-01-24 22:52:58.000000000","message":"ack, I couldn\u0027t figure out which way it should be but `__` seemed to be consistent.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":7423,"context_line":"                   \u0027physical_network\u0027: \u0027physnet1\u0027,"},{"line_number":7424,"context_line":"                   \u0027pf_mac_address\u0027: \u0027de:ad:be:ef:ca:fe\u0027,"},{"line_number":7425,"context_line":"                   \u0027vf_num\u0027: 1,"},{"line_number":7426,"context_line":"                  }"},{"line_number":7427,"context_line":""},{"line_number":7428,"context_line":"        mock_get_instance_pci_devs.return_value \u003d [mydev]"},{"line_number":7429,"context_line":"        devspec \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3b87452d_84adaa27","line":7426,"updated":"2022-01-24 11:51:24.000000000","message":"i would suggest copying thee values as the default in the fixture by the way.\nsince they already show up in our test they make the most sense to use as the defaults","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":true,"context_lines":[{"line_number":7423,"context_line":"                   \u0027physical_network\u0027: \u0027physnet1\u0027,"},{"line_number":7424,"context_line":"                   \u0027pf_mac_address\u0027: \u0027de:ad:be:ef:ca:fe\u0027,"},{"line_number":7425,"context_line":"                   \u0027vf_num\u0027: 1,"},{"line_number":7426,"context_line":"                  }"},{"line_number":7427,"context_line":""},{"line_number":7428,"context_line":"        mock_get_instance_pci_devs.return_value \u003d [mydev]"},{"line_number":7429,"context_line":"        devspec \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"6475fd5e_9e09a9a5","line":7426,"in_reply_to":"3b87452d_84adaa27","updated":"2022-01-24 22:52:58.000000000","message":"OK, makes sense.\n\nI\u0027ll take the mac from an SR-IOV PF port.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"152adf2e0aa497fe5ff5349b76bd2f92ebb702c2","unresolved":false,"context_lines":[{"line_number":7423,"context_line":"                   \u0027physical_network\u0027: \u0027physnet1\u0027,"},{"line_number":7424,"context_line":"                   \u0027pf_mac_address\u0027: \u0027de:ad:be:ef:ca:fe\u0027,"},{"line_number":7425,"context_line":"                   \u0027vf_num\u0027: 1,"},{"line_number":7426,"context_line":"                  }"},{"line_number":7427,"context_line":""},{"line_number":7428,"context_line":"        mock_get_instance_pci_devs.return_value \u003d [mydev]"},{"line_number":7429,"context_line":"        devspec \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7fcb84d3_f2e958ee","line":7426,"in_reply_to":"6475fd5e_9e09a9a5","updated":"2022-01-28 18:16:48.000000000","message":"Done","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5d6e7af9424217d2ec5d65c2106816d1efd76785","unresolved":true,"context_lines":[{"line_number":7582,"context_line":"    def test__get_vf_pci_device_profile("},{"line_number":7583,"context_line":"        self, mock_get_pf_mac_by_vf_pci_address,"},{"line_number":7584,"context_line":"            mock_get_vf_num_by_pci_address):"},{"line_number":7585,"context_line":"        pci_dev \u003d {\u0027vendor_id\u0027: \u0027a2d6\u0027,"},{"line_number":7586,"context_line":"                   \u0027product_id\u0027: \u002715b3\u0027,"},{"line_number":7587,"context_line":"                   \u0027address\u0027: \u00270000:82:00.1\u0027,"},{"line_number":7588,"context_line":"                   \u0027card_serial_number\u0027: \u0027MT2113X00000\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"0053d301_e10c7b58","line":7585,"updated":"2022-01-24 11:51:24.000000000","message":"sine you are not actully using these mocks directly you shoud use the new\u003dmock.Mock\nsyntax instead to not return the instance of the mock to the wrapped function.\n\nwhen you respin can you check which test actully use the mocks directly and which use them indirectly and update them accordingly.\n\njust look a the functions you are modifying/extendign","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e0e3e4e1f78c46d4179537e66bfd5cfe0c4921d5","unresolved":true,"context_lines":[{"line_number":7582,"context_line":"    def test__get_vf_pci_device_profile("},{"line_number":7583,"context_line":"        self, mock_get_pf_mac_by_vf_pci_address,"},{"line_number":7584,"context_line":"            mock_get_vf_num_by_pci_address):"},{"line_number":7585,"context_line":"        pci_dev \u003d {\u0027vendor_id\u0027: \u0027a2d6\u0027,"},{"line_number":7586,"context_line":"                   \u0027product_id\u0027: \u002715b3\u0027,"},{"line_number":7587,"context_line":"                   \u0027address\u0027: \u00270000:82:00.1\u0027,"},{"line_number":7588,"context_line":"                   \u0027card_serial_number\u0027: \u0027MT2113X00000\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1830f810_87b09efd","line":7585,"in_reply_to":"0053d301_e10c7b58","updated":"2022-01-24 22:52:58.000000000","message":"Ack, will fix this.","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"152adf2e0aa497fe5ff5349b76bd2f92ebb702c2","unresolved":false,"context_lines":[{"line_number":7582,"context_line":"    def test__get_vf_pci_device_profile("},{"line_number":7583,"context_line":"        self, mock_get_pf_mac_by_vf_pci_address,"},{"line_number":7584,"context_line":"            mock_get_vf_num_by_pci_address):"},{"line_number":7585,"context_line":"        pci_dev \u003d {\u0027vendor_id\u0027: \u0027a2d6\u0027,"},{"line_number":7586,"context_line":"                   \u0027product_id\u0027: \u002715b3\u0027,"},{"line_number":7587,"context_line":"                   \u0027address\u0027: \u00270000:82:00.1\u0027,"},{"line_number":7588,"context_line":"                   \u0027card_serial_number\u0027: \u0027MT2113X00000\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"955f2b3e_d2596d3a","line":7585,"in_reply_to":"1830f810_87b09efd","updated":"2022-01-28 18:16:48.000000000","message":"Done","commit_id":"dd141c79024a55c5fe536c9596616bb490057002"}]}
