)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"https://review.opendev.org/c/openstack/nova-specs/+/787458"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Remotely managed VFs need to be classified"},{"line_number":15,"context_line":"as such based on a port type used at port creation. VF logical number"},{"line_number":16,"context_line":"and PF mac also need to be passed to Neutron in port updates to allow"},{"line_number":17,"context_line":"remote_managed ports to be set up correctly on a SmartNIC DPU."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"038a4934_a1cd4d11","line":14,"updated":"2021-12-17 12:50:57.000000000","message":"so one general comment, this is a lot to do in one commit.\n\nI likely would have split this out into 3-5.\n\nthe pre-filter and traits reporting, and PCI whitelist/tag parsing for example could all have been separate patches with this final patch to tie everything together\n\nasuming this is the final patch in the seris it should also have a release note.\n-1 is for the release note but i would consider splitting this up to make it simpler to reivew","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99982401da0eae93de73f97f790b7f34082e9906","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"https://review.opendev.org/c/openstack/nova-specs/+/787458"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Remotely managed VFs need to be classified"},{"line_number":15,"context_line":"as such based on a port type used at port creation. VF logical number"},{"line_number":16,"context_line":"and PF mac also need to be passed to Neutron in port updates to allow"},{"line_number":17,"context_line":"remote_managed ports to be set up correctly on a SmartNIC DPU."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"35ac09d6_4d15eb09","line":14,"in_reply_to":"038a4934_a1cd4d11","updated":"2022-01-25 02:28:34.000000000","message":"Done","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"6c58d9968c85c05af6779478401d8f14d8e1a133","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Dmitrii Shcherbakov \u003cdmitrii.shcherbakov@canonical.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-01-16 23:51:52 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Filter computes without remote-managed ports early"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a pre-filter for requests that contain VNIC_TYPE_SMARTNIC ports"},{"line_number":10,"context_line":"in them: hosts that do not have either the relevant compute driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"738a00f5_a3826fe4","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":50},"updated":"2022-01-16 20:57:59.000000000","message":"Will add a release note in this commit as well in another respin.","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"012680ea9b86041b9abf7a7c39411b0fe43e6aec","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dmitrii Shcherbakov \u003cdmitrii.shcherbakov@canonical.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-01-16 23:51:52 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Filter computes without remote-managed ports early"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a pre-filter for requests that contain VNIC_TYPE_SMARTNIC ports"},{"line_number":10,"context_line":"in them: hosts that do not have either the relevant compute driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"8d7dcccb_d70aa6c1","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":50},"in_reply_to":"738a00f5_a3826fe4","updated":"2022-02-01 19:59:40.000000000","message":"Done","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99982401da0eae93de73f97f790b7f34082e9906","unresolved":true,"context_lines":[{"line_number":13,"context_line":"actually available for allocation is checked at a later point by"},{"line_number":14,"context_line":"the PciPassthroughFilter."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-On: Ica09376951d49bc60ce6e33147477e4fa38b9482"},{"line_number":17,"context_line":"Depends-On: If5a4c81084ff9f9f8fecf9fa4cd62fc98e3efcd9"},{"line_number":18,"context_line":"Change-Id: I168d3ccc914f25a3d4255c9b319ee6b91a2f66e2"},{"line_number":19,"context_line":"Implements: blueprint integration-with-off-path-network-backends"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"ec39691d_586a2272","line":16,"updated":"2022-01-25 02:28:34.000000000","message":"this one is to nova and is not needed the one below is against os-traits and should remain","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"1a511b7d862f9fb290ec43b7e8cd47afcfa8cf23","unresolved":false,"context_lines":[{"line_number":13,"context_line":"actually available for allocation is checked at a later point by"},{"line_number":14,"context_line":"the PciPassthroughFilter."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-On: Ica09376951d49bc60ce6e33147477e4fa38b9482"},{"line_number":17,"context_line":"Depends-On: If5a4c81084ff9f9f8fecf9fa4cd62fc98e3efcd9"},{"line_number":18,"context_line":"Change-Id: I168d3ccc914f25a3d4255c9b319ee6b91a2f66e2"},{"line_number":19,"context_line":"Implements: blueprint integration-with-off-path-network-backends"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"cfef62ed_75676f3b","line":16,"in_reply_to":"c93cb6a9_8887bfef","updated":"2022-01-27 21:39:11.000000000","message":"Done","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"1c78a4cdc193baafe03a8630959e1b90ffc1a17d","unresolved":true,"context_lines":[{"line_number":13,"context_line":"actually available for allocation is checked at a later point by"},{"line_number":14,"context_line":"the PciPassthroughFilter."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-On: Ica09376951d49bc60ce6e33147477e4fa38b9482"},{"line_number":17,"context_line":"Depends-On: If5a4c81084ff9f9f8fecf9fa4cd62fc98e3efcd9"},{"line_number":18,"context_line":"Change-Id: I168d3ccc914f25a3d4255c9b319ee6b91a2f66e2"},{"line_number":19,"context_line":"Implements: blueprint integration-with-off-path-network-backends"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"c93cb6a9_8887bfef","line":16,"in_reply_to":"ec39691d_586a2272","updated":"2022-01-26 21:00:13.000000000","message":"Ack","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c4e06a8c4665392821432b0c626a2edcb2d6978b","unresolved":true,"context_lines":[{"line_number":13,"context_line":"actually available for allocation is checked at a later point by"},{"line_number":14,"context_line":"the PciPassthroughFilter."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-On: If5a4c81084ff9f9f8fecf9fa4cd62fc98e3efcd9"},{"line_number":17,"context_line":"Depends-On: If33ff039a5a3dca71cef8494cdb7b6573c7cfc9c"},{"line_number":18,"context_line":"Depends-On: Ic314d3e1871651abbdff69b0e4a022672d43e570"},{"line_number":19,"context_line":"Change-Id: I168d3ccc914f25a3d4255c9b319ee6b91a2f66e2"},{"line_number":20,"context_line":"Implements: blueprint integration-with-off-path-network-backends"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"532f0558_f34fbc51","line":18,"range":{"start_line":16,"start_character":0,"end_line":18,"end_character":53},"updated":"2022-02-01 15:14:37.000000000","message":"these are not needed. Some of them are already merged, others are in this patch series already","commit_id":"067d03255c55c6bb3c6a63c4a3439a4c3e02394d"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"012680ea9b86041b9abf7a7c39411b0fe43e6aec","unresolved":false,"context_lines":[{"line_number":13,"context_line":"actually available for allocation is checked at a later point by"},{"line_number":14,"context_line":"the PciPassthroughFilter."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-On: If5a4c81084ff9f9f8fecf9fa4cd62fc98e3efcd9"},{"line_number":17,"context_line":"Depends-On: If33ff039a5a3dca71cef8494cdb7b6573c7cfc9c"},{"line_number":18,"context_line":"Depends-On: Ic314d3e1871651abbdff69b0e4a022672d43e570"},{"line_number":19,"context_line":"Change-Id: I168d3ccc914f25a3d4255c9b319ee6b91a2f66e2"},{"line_number":20,"context_line":"Implements: blueprint integration-with-off-path-network-backends"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"0e8a7c13_4ed6cba7","line":18,"range":{"start_line":16,"start_character":0,"end_line":18,"end_character":53},"in_reply_to":"532f0558_f34fbc51","updated":"2022-02-01 19:59:40.000000000","message":"Done","commit_id":"067d03255c55c6bb3c6a63c4a3439a4c3e02394d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"11e8c1dd89498c44db2c73c9d405a585622a2308","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2a682a4d_e6e107dc","updated":"2021-11-19 08:20:21.000000000","message":"Added:\n\n* compute service version checking for network requests containing VNIC_TYPE_SMARTNIC ports;\n* altered get_bind_time_events to take VNIC_TYPE_SMARTNIC into account;\n* get_bind_time_events and get_plug_time_events now accept same_host boolean (or None) instead of a migration object;\n* get_vf_num_by_pci_address now returns an int rather than a string (used to return a string before this patch but there\u0027s no good reason for that by the looks of it).\n\nTODO:\n\n* add a prefilter for remote managed ports (pending addition of a new compute capability COMPUTE_REMOTE_MANAGED_PORTS to os-traits);\n  * it is clear how to implement a static virt driver-based check;\n  * dynamically checking for the presence of remote_managed devices is more complicated:\n    * Does it need to be a driver init-stage check?\n    * Does the lack of free devices need to be taken into account or is this going to be a hardware presence (not availability) check?\n* Filter remote_managed devices out for requests that do not explicitly ask for them. Legacy SR-IOV and HW offload cases need to be prevented from being able to allocate remote_managed devices.\n  * Along the lines of https://github.com/openstack/nova/blob/52bd1e51d675a1eb1226a45e3e952b17bda712a2/nova/pci/stats.py#L411-L433\n* Assess whether certain lifecycle operations blocked per the spec can actually be enabled. Block them at the API level if not (or not yet).\n  * https://review.opendev.org/c/openstack/nova-specs/+/787458/14/specs/yoga/approved/integration-with-off-path-network-backends.rst#33\n* More unit and functional tests.","commit_id":"3d391e08e7a6efc2f25012ce3c144b65cb10a824"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"f8226f85e25f37a406849588c6abb442a30e5ba0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"03c4c839_c82df298","updated":"2021-11-19 08:37:49.000000000","message":"Raised https://review.opendev.org/c/openstack/os-traits/+/818514 - will add a \"Depends-On\" here when I implement a prefilter and upload the change.","commit_id":"3d391e08e7a6efc2f25012ce3c144b65cb10a824"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c5f6001d648b68a7e87d7e9864bc40a0b31641ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1dfa5ab0_4df0a56f","updated":"2021-11-19 12:29:26.000000000","message":"recheck","commit_id":"3d391e08e7a6efc2f25012ce3c144b65cb10a824"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"35b4759b375ee3fb877a1e3205439f0774b9c1ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"774a2caf_bc81d468","updated":"2021-11-19 10:13:27.000000000","message":"recheck","commit_id":"3d391e08e7a6efc2f25012ce3c144b65cb10a824"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"86e92966ba0468b2ccc190f7912310a15b647265","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"455041ed_e2324a98","updated":"2021-11-24 20:03:17.000000000","message":"Added a pre-filter for requests that contain VNIC_TYPE_SMARTNIC ports in them: hosts that do not have either the relevant compute driver capability COMPUTE_REMOTE_MANAGED_PORTS or PCI device pools with \"remote_managed\" devices are filtered out early. Presence of devices actually available for allocation is checked at a later point by the PciPassthroughFilter.","commit_id":"4b528ab727a3da925b3806cea92a6877d4176c4f"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"7df77cd38bbaf9ae203ebc09cc9239bc221296c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"06dd8eae_b685e2e0","updated":"2021-11-25 12:25:08.000000000","message":"Implemented additional filtering logic in PciDeviceStats so that remote_managed VFs aren\u0027t used unless explicitly asked for, remote_managed PFs are not supported at all (see the reasoning in commit message). Mixed-use scenarios for VFs are supported: e.g. one could request a remote-managed VF and a legacy SR-IOV or hardware offloaded VF (it\u0027s a questionable platform configuration but we need to take this into account nevertheless).","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"47c8f8f6d449b6993805ab89a14fcd354848154e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"97579eff_241d5863","updated":"2022-01-11 11:16:01.000000000","message":"Just got back, I\u0027ll update the review soon - apologies for the delay.","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"bb690620_ce4383ec","updated":"2021-12-17 12:50:57.000000000","message":"over all this looks good to me.\ni need to review it again but can i suggest you break this up into  a few smaller patches.\nas noted in teh commit this is really 3-5 patches in one and you need a release note too.\none final thing to consider is we likely need some docs updates to capture the new remote_managed tag usage.","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"776801404b6a73c8328fee47f8d3dff26ea151d1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"8f7883e4_6f34a47e","in_reply_to":"1efbf50f_8faae321","updated":"2022-01-11 11:09:43.000000000","message":"+100 for splitting this","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"740c1976aca95d991fe2198d69c29c46d26a9b3c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"2edd7619_20fd5006","in_reply_to":"8f7883e4_6f34a47e","updated":"2022-01-27 21:39:45.000000000","message":"Done","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"7415541592996abee88db50737cec93d34682bb4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1efbf50f_8faae321","in_reply_to":"bb690620_ce4383ec","updated":"2021-12-23 12:28:31.000000000","message":"Thanks a lot for the review!\n\nI\u0027ll address the comments and do a split after I am back in January.","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99982401da0eae93de73f97f790b7f34082e9906","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"118656fd_3b5923cf","updated":"2022-01-25 02:28:34.000000000","message":"overall this is fine but you should update the traits to use the os_traits constants.\n\ni know this will break the unit and funct test until the new os-traits lib is released but that is intentional.\n\nthe tempest jobs will generally pull in the unrelased version due to the depends on before the release\nbut the functional and unit tests do not do that.","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"0075aeaee9433094ed7ee7c74e459c15291caaa0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"5fe3fda8_59ae653c","updated":"2022-01-28 15:43:15.000000000","message":"recheck","commit_id":"f515f0aedcbf4ded9ddaa05b95d0254b46423aaf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"07f6b2284e6b8572342ba45c1ee57afece77cee3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"2d35ddf6_609aed56","updated":"2022-02-01 15:16:26.000000000","message":"priority +1 as I commit to get back to this an re-review as needed.","commit_id":"067d03255c55c6bb3c6a63c4a3439a4c3e02394d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"641b71a00567c1e44cb77663b86ea0849a0aff50","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"b60d446a_7f80f9ef","updated":"2022-02-03 14:03:02.000000000","message":"Looks good","commit_id":"d6ee7ce26dd4212dfc4f6f902e9f16a8578bdad3"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"93ec02f494f58fd6cecb756804fdf521a5177e66","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"f4fc06c4_4f28be50","updated":"2022-02-02 17:20:35.000000000","message":"recheck","commit_id":"d6ee7ce26dd4212dfc4f6f902e9f16a8578bdad3"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"e1d31495c8b13ac4448dcbb1d328b5b0c2fbc2bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"8812b180_3dcd2da4","updated":"2022-02-03 20:52:47.000000000","message":"Made `supports_remote_managed_ports` a Libvirt version-dependent capability (7.9.0 added support for PCI VPD) per the question on the doc change.\n\nhttps://review.opendev.org/c/openstack/nova/+/812111/20/nova/virt/libvirt/driver.py#816\nhttps://review.opendev.org/c/openstack/nova/+/812111/20/nova/virt/libvirt/host.py#1705","commit_id":"f86d92e4f13213ffff8fe5c540a74ae926359943"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d42265986d4821eeff4b61062e5a546cb09839b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"75c45a99_6b6afa3f","updated":"2022-02-04 09:50:34.000000000","message":"still looks good","commit_id":"f86d92e4f13213ffff8fe5c540a74ae926359943"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d42265986d4821eeff4b61062e5a546cb09839b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"72311686_fca9513b","in_reply_to":"8812b180_3dcd2da4","updated":"2022-02-04 09:50:34.000000000","message":"thanks!","commit_id":"f86d92e4f13213ffff8fe5c540a74ae926359943"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"90b4ed28784b454a788d16a5a95f566d9c0fe1cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"fe1b2abf_61fc0f30","updated":"2022-02-04 11:20:47.000000000","message":"Moved some of the bits from here to https://review.opendev.org/c/openstack/nova/+/827839 in 21.","commit_id":"dc99c9cf46c747707e26119160aaa6f197a502eb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b7396b520de920dd9ceee6544196529cc50092ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"a53fdb43_f0d9b4da","updated":"2022-02-07 11:33:38.000000000","message":"still good.","commit_id":"baeb9a9305e3e83d0480bae75dae472bf7f25fca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"250cd3f5d1abbdb8098797f964428133b3f1197e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"ed89382e_f57502fe","updated":"2022-02-08 10:06:24.000000000","message":"this will need to be respun to account for the change in the name of the vnic_type\nbut other then that i would be +2 so +1 for now","commit_id":"baeb9a9305e3e83d0480bae75dae472bf7f25fca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d06cae23715e7644fbae78c0a5b89fa71800211c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"73f31216_f59bcceb","updated":"2022-02-09 11:16:39.000000000","message":"i think im happy with this revision thanks for moving this before the feature is enabled.","commit_id":"c487c730d010013f8579622337af63d93b733f3b"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"fa3adf5e338949b77d8cf97f4b73e8be0ae01dc2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"097b68c8_1a1c09da","updated":"2022-02-09 09:40:14.000000000","message":"recheck","commit_id":"c487c730d010013f8579622337af63d93b733f3b"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"553119fa454713d7b1f8aafe939263f83340c234","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"60cbb5fb_62b19480","updated":"2022-02-09 07:22:25.000000000","message":"recheck","commit_id":"c487c730d010013f8579622337af63d93b733f3b"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"1f57ff71e97b0e4971613ca52e4282aa18b0d844","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"a7e35293_405be227","updated":"2022-02-09 12:07:12.000000000","message":"recheck","commit_id":"c487c730d010013f8579622337af63d93b733f3b"}],"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":1030,"context_line":"                    if min_version \u003c SUPPORT_VNIC_TYPE_SMARTNIC:"},{"line_number":1031,"context_line":"                        msg \u003d (\"SmartNIC ports are not supported\""},{"line_number":1032,"context_line":"                               \" until an upgrade is fully finished.\")"},{"line_number":1033,"context_line":"                        raise exception.ForbiddenWithSmartNICPorts(msg)"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"    def _validate_and_build_base_options("},{"line_number":1036,"context_line":"        self, context, flavor, boot_meta, image_href, image_id, kernel_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"19af0ddd_61f437b3","line":1033,"updated":"2021-12-17 12:50:57.000000000","message":"ack, this significantly simplifies reasonable about upgrades","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"                    if min_version \u003c SUPPORT_VNIC_TYPE_SMARTNIC:"},{"line_number":1031,"context_line":"                        msg \u003d (\"SmartNIC ports are not supported\""},{"line_number":1032,"context_line":"                               \" until an upgrade is fully finished.\")"},{"line_number":1033,"context_line":"                        raise exception.ForbiddenWithSmartNICPorts(msg)"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"    def _validate_and_build_base_options("},{"line_number":1036,"context_line":"        self, context, flavor, boot_meta, image_href, image_id, kernel_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"8d3dc3b6_3961180a","line":1033,"in_reply_to":"19af0ddd_61f437b3","updated":"2022-01-16 20:56:39.000000000","message":"Ack","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":1145,"context_line":"        # that are not currently supported."},{"line_number":1146,"context_line":"        for trait, supported in self.driver.capabilities_as_traits().items():"},{"line_number":1147,"context_line":"            add_trait \u003d supported"},{"line_number":1148,"context_line":"            # TODO(dmitriis): replace with a standard trait, pending"},{"line_number":1149,"context_line":"            # https://review.opendev.org/c/openstack/os-traits/+/818514"},{"line_number":1150,"context_line":"            # os_traits.COMPUTE_REMOTE_MANAGED_PORTS"},{"line_number":1151,"context_line":"            if trait \u003d\u003d \u0027COMPUTE_REMOTE_MANAGED_PORTS\u0027:"},{"line_number":1152,"context_line":"                add_trait \u0026\u003d self._should_expose_remote_managed_ports_trait("},{"line_number":1153,"context_line":"                    supported)"}],"source_content_type":"text/x-python","patch_set":9,"id":"6ecea6b9_96cc2e49","line":1150,"range":{"start_line":1148,"start_character":12,"end_line":1150,"end_character":52},"updated":"2021-12-17 12:50:57.000000000","message":"this is actully a \"standard\" trait form placement point of view since it does not start with CUSTOM_ so it will be rejected if you do not have the patched os-traits. however you have used a depends on so this wont merged until that trait is merged so i guess that is ok.\n\nif you respin i would either make this CUSTOM_ or drop the todo since you dont realy have anything else that you need to do.","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":1145,"context_line":"        # that are not currently supported."},{"line_number":1146,"context_line":"        for trait, supported in self.driver.capabilities_as_traits().items():"},{"line_number":1147,"context_line":"            add_trait \u003d supported"},{"line_number":1148,"context_line":"            # TODO(dmitriis): replace with a standard trait, pending"},{"line_number":1149,"context_line":"            # https://review.opendev.org/c/openstack/os-traits/+/818514"},{"line_number":1150,"context_line":"            # os_traits.COMPUTE_REMOTE_MANAGED_PORTS"},{"line_number":1151,"context_line":"            if trait \u003d\u003d \u0027COMPUTE_REMOTE_MANAGED_PORTS\u0027:"},{"line_number":1152,"context_line":"                add_trait \u0026\u003d self._should_expose_remote_managed_ports_trait("},{"line_number":1153,"context_line":"                    supported)"}],"source_content_type":"text/x-python","patch_set":9,"id":"6570a3fa_a86dbe3d","line":1150,"range":{"start_line":1148,"start_character":12,"end_line":1150,"end_character":52},"in_reply_to":"6ecea6b9_96cc2e49","updated":"2022-01-16 20:56:39.000000000","message":"ack, I\u0027ll drop the comments when I respin and replace the string once the os-traits change is in.","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c4e06a8c4665392821432b0c626a2edcb2d6978b","unresolved":true,"context_lines":[{"line_number":1173,"context_line":"        for trait, supported in self.driver.capabilities_as_traits().items():"},{"line_number":1174,"context_line":"            add_trait \u003d supported"},{"line_number":1175,"context_line":"            if trait \u003d\u003d os_traits.COMPUTE_REMOTE_MANAGED_PORTS:"},{"line_number":1176,"context_line":"                add_trait \u0026\u003d self._should_expose_remote_managed_ports_trait("},{"line_number":1177,"context_line":"                    supported)"},{"line_number":1178,"context_line":"            if add_trait:"},{"line_number":1179,"context_line":"                traits.add(trait)"}],"source_content_type":"text/x-python","patch_set":16,"id":"93be2919_c4cc876d","line":1176,"updated":"2022-02-01 15:14:37.000000000","message":"That is a clever dynamic capability. I don\u0027t say that this is wrong but we probably need to agree that this is OK usage of the capability traits in general.","commit_id":"067d03255c55c6bb3c6a63c4a3439a4c3e02394d"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"012680ea9b86041b9abf7a7c39411b0fe43e6aec","unresolved":true,"context_lines":[{"line_number":1173,"context_line":"        for trait, supported in self.driver.capabilities_as_traits().items():"},{"line_number":1174,"context_line":"            add_trait \u003d supported"},{"line_number":1175,"context_line":"            if trait \u003d\u003d os_traits.COMPUTE_REMOTE_MANAGED_PORTS:"},{"line_number":1176,"context_line":"                add_trait \u0026\u003d self._should_expose_remote_managed_ports_trait("},{"line_number":1177,"context_line":"                    supported)"},{"line_number":1178,"context_line":"            if add_trait:"},{"line_number":1179,"context_line":"                traits.add(trait)"}],"source_content_type":"text/x-python","patch_set":16,"id":"e1327a41_d2871742","line":1176,"in_reply_to":"93be2919_c4cc876d","updated":"2022-02-01 19:59:40.000000000","message":"Ack, for context: Sean asked for the trait to be dependent on the presence of remote-managed devices on a node so that the prefilter can alleviate the need for a more expensive search process during scheduling besides filtering out the nodes that do not have compatible drivers.\n\nIn terms of clashes with user-defined traits, I think we are not in trouble here because user-defined traits must be prefixed with \"CUSTOM_\".\n\nhttps://docs.openstack.org/api-ref/placement/?expanded\u003dupdate-traits-detail#update-traits\n\"400 BadRequest if trait name is not prefixed with CUSTOM_ prefix.\"","commit_id":"067d03255c55c6bb3c6a63c4a3439a4c3e02394d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"641b71a00567c1e44cb77663b86ea0849a0aff50","unresolved":false,"context_lines":[{"line_number":1173,"context_line":"        for trait, supported in self.driver.capabilities_as_traits().items():"},{"line_number":1174,"context_line":"            add_trait \u003d supported"},{"line_number":1175,"context_line":"            if trait \u003d\u003d os_traits.COMPUTE_REMOTE_MANAGED_PORTS:"},{"line_number":1176,"context_line":"                add_trait \u0026\u003d self._should_expose_remote_managed_ports_trait("},{"line_number":1177,"context_line":"                    supported)"},{"line_number":1178,"context_line":"            if add_trait:"},{"line_number":1179,"context_line":"                traits.add(trait)"}],"source_content_type":"text/x-python","patch_set":16,"id":"fdf12b20_3945cac7","line":1176,"in_reply_to":"e1327a41_d2871742","updated":"2022-02-03 14:03:02.000000000","message":"I talked about this with Sean on IRC. Both agree that this dynamic thing is useful.","commit_id":"067d03255c55c6bb3c6a63c4a3439a4c3e02394d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d06cae23715e7644fbae78c0a5b89fa71800211c","unresolved":true,"context_lines":[{"line_number":1126,"context_line":"            LOG.error(\u0027Unable to find services table record for nova-compute \u0027"},{"line_number":1127,"context_line":"                      \u0027host %s\u0027, self.host)"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"    def _should_expose_remote_managed_ports_trait(self,"},{"line_number":1130,"context_line":"                                                  is_supported: bool):"},{"line_number":1131,"context_line":"        \"\"\"Determine whether COMPUTE_REMOTE_MANAGED_PORTS should be exposed."},{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"        Determines if the COMPUTE_REMOTE_MANAGED_PORTS trait needs to be"}],"source_content_type":"text/x-python","patch_set":24,"id":"1d188b08_3a22ef26","line":1130,"range":{"start_line":1129,"start_character":50,"end_line":1130,"end_character":68},"updated":"2022-02-09 11:16:39.000000000","message":"nit we then to prefer the haning indent style\nso if you need to have it span multiple lines you shoudl move\nall paramter to the next line\nthat minimise the indentaions.\n\nlatetly we have also started puting the closing bracket on a new line too\n\nso\n    def _should_expose_remote_managed_ports_trait(self,\n                                                  is_supported: bool):\n\nto\n\n    def _should_expose_remote_managed_ports_trait(\n        self, is_supported: bool):\nor\n    def _should_expose_remote_managed_ports_trait(\n        self, is_supported: bool\n    ):","commit_id":"c487c730d010013f8579622337af63d93b733f3b"}],"nova/network/neutron.py":[{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"3c6b6b4c21b74fde396336597f3644a62756cc52","unresolved":true,"context_lines":[{"line_number":1529,"context_line":"            else:"},{"line_number":1530,"context_line":"                return {"},{"line_number":1531,"context_line":"                    \u0027pf_mac_address\u0027: pf_mac,"},{"line_number":1532,"context_line":"                    \u0027vf_num\u0027: vf_num,"},{"line_number":1533,"context_line":"                }"},{"line_number":1534,"context_line":""},{"line_number":1535,"context_line":"    def _get_pci_device_profile(self, pci_dev):"}],"source_content_type":"text/x-python","patch_set":3,"id":"20388b9c_775070d7","line":1532,"updated":"2021-11-18 13:12:25.000000000","message":"Can we add int() here?\n\nThe Neutron OVN driver does validation of the port_binding data, including type. There is precedence do expect actual ints on the wire for numerical types: https://github.com/openstack/neutron/blob/6a73a362c5ff5b7c28c15a49f47a9900c0d2b4e1/neutron/common/ovn/constants.py#L50","commit_id":"d9cf33faa33a4a47eede7765e5e1b00139c99fb1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"3c256cecfd41db0bba4e4bee4caae22823faa56e","unresolved":true,"context_lines":[{"line_number":1529,"context_line":"            else:"},{"line_number":1530,"context_line":"                return {"},{"line_number":1531,"context_line":"                    \u0027pf_mac_address\u0027: pf_mac,"},{"line_number":1532,"context_line":"                    \u0027vf_num\u0027: vf_num,"},{"line_number":1533,"context_line":"                }"},{"line_number":1534,"context_line":""},{"line_number":1535,"context_line":"    def _get_pci_device_profile(self, pci_dev):"}],"source_content_type":"text/x-python","patch_set":3,"id":"beedcf13_e86a4980","line":1532,"in_reply_to":"20388b9c_775070d7","updated":"2021-11-18 13:46:27.000000000","message":"I think we should. I used int in some unit tests - better make it consistent.","commit_id":"d9cf33faa33a4a47eede7765e5e1b00139c99fb1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d06cae23715e7644fbae78c0a5b89fa71800211c","unresolved":false,"context_lines":[{"line_number":1529,"context_line":"            else:"},{"line_number":1530,"context_line":"                return {"},{"line_number":1531,"context_line":"                    \u0027pf_mac_address\u0027: pf_mac,"},{"line_number":1532,"context_line":"                    \u0027vf_num\u0027: vf_num,"},{"line_number":1533,"context_line":"                }"},{"line_number":1534,"context_line":""},{"line_number":1535,"context_line":"    def _get_pci_device_profile(self, pci_dev):"}],"source_content_type":"text/x-python","patch_set":3,"id":"6c595e4e_0837e634","line":1532,"in_reply_to":"77e8b61e_b4252a8e","updated":"2022-02-09 11:16:39.000000000","message":"nova expect the bining profiles and binding_details to be a dict fo strings keys to string values.\nits not a dict of multiple types.\nso the validation in the neutron ovn driver is incrorrect.\n\nwe could start using json types other then string but that would require a new api extention in neutron to support typed_port_bidnings\n\nhttps://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/portbindings.py\nand\nhttps://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/portbindings_extended.py\n\nare untyped","commit_id":"d9cf33faa33a4a47eede7765e5e1b00139c99fb1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"cb358432045a95d93fdc1a46e7cf6542c843f943","unresolved":true,"context_lines":[{"line_number":1529,"context_line":"            else:"},{"line_number":1530,"context_line":"                return {"},{"line_number":1531,"context_line":"                    \u0027pf_mac_address\u0027: pf_mac,"},{"line_number":1532,"context_line":"                    \u0027vf_num\u0027: vf_num,"},{"line_number":1533,"context_line":"                }"},{"line_number":1534,"context_line":""},{"line_number":1535,"context_line":"    def _get_pci_device_profile(self, pci_dev):"}],"source_content_type":"text/x-python","patch_set":3,"id":"77e8b61e_b4252a8e","line":1532,"in_reply_to":"beedcf13_e86a4980","updated":"2021-11-18 13:50:28.000000000","message":"fwiw, the existing implementation of `get_vf_num_by_pci_address` returns a string.\n\nhttps://github.com/openstack/nova/blob/52bd1e51d675a1eb1226a45e3e952b17bda712a2/nova/pci/utils.py#L194","commit_id":"d9cf33faa33a4a47eede7765e5e1b00139c99fb1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":1519,"context_line":"                \"Could not determine PF MAC address for a VF with\""},{"line_number":1520,"context_line":"                \" addr %(addr)s, error: %(e)s\","},{"line_number":1521,"context_line":"                {\"addr\": pci_dev.address, \"e\": e})"},{"line_number":1522,"context_line":"            raise"},{"line_number":1523,"context_line":"        else:"},{"line_number":1524,"context_line":"            try:"},{"line_number":1525,"context_line":"                vf_num \u003d pci_utils.get_vf_num_by_pci_address("},{"line_number":1526,"context_line":"                    pci_dev.address)"}],"source_content_type":"text/x-python","patch_set":9,"id":"37c61bf4_48c419d2","line":1523,"range":{"start_line":1522,"start_character":0,"end_line":1523,"end_character":13},"updated":"2021-12-17 12:50:57.000000000","message":"nit: technically because you reraise you do not need to use the else clause\n\nso you can remove the else and dedent the block below if you like","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":1519,"context_line":"                \"Could not determine PF MAC address for a VF with\""},{"line_number":1520,"context_line":"                \" addr %(addr)s, error: %(e)s\","},{"line_number":1521,"context_line":"                {\"addr\": pci_dev.address, \"e\": e})"},{"line_number":1522,"context_line":"            raise"},{"line_number":1523,"context_line":"        else:"},{"line_number":1524,"context_line":"            try:"},{"line_number":1525,"context_line":"                vf_num \u003d pci_utils.get_vf_num_by_pci_address("},{"line_number":1526,"context_line":"                    pci_dev.address)"}],"source_content_type":"text/x-python","patch_set":9,"id":"6a68e53b_ead30ede","line":1523,"range":{"start_line":1522,"start_character":0,"end_line":1523,"end_character":13},"in_reply_to":"37c61bf4_48c419d2","updated":"2022-01-16 20:56:39.000000000","message":"Ack","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":1530,"context_line":"                    \" with addr %(addr)s, error: %(e)s\", {"},{"line_number":1531,"context_line":"                        \"addr\": pci_dev.address, \"e\": e})"},{"line_number":1532,"context_line":"                raise"},{"line_number":1533,"context_line":"            else:"},{"line_number":1534,"context_line":"                return {"},{"line_number":1535,"context_line":"                    \u0027pf_mac_address\u0027: pf_mac,"},{"line_number":1536,"context_line":"                    \u0027vf_num\u0027: vf_num,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3e81af2f_8c8999b6","line":1533,"range":{"start_line":1533,"start_character":11,"end_line":1533,"end_character":17},"updated":"2021-12-17 12:50:57.000000000","message":"same here","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":1530,"context_line":"                    \" with addr %(addr)s, error: %(e)s\", {"},{"line_number":1531,"context_line":"                        \"addr\": pci_dev.address, \"e\": e})"},{"line_number":1532,"context_line":"                raise"},{"line_number":1533,"context_line":"            else:"},{"line_number":1534,"context_line":"                return {"},{"line_number":1535,"context_line":"                    \u0027pf_mac_address\u0027: pf_mac,"},{"line_number":1536,"context_line":"                    \u0027vf_num\u0027: vf_num,"}],"source_content_type":"text/x-python","patch_set":9,"id":"d3800ba1_a24c22fa","line":1533,"range":{"start_line":1533,"start_character":11,"end_line":1533,"end_character":17},"in_reply_to":"3e81af2f_8c8999b6","updated":"2022-01-16 20:56:39.000000000","message":"Ack","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":1549,"context_line":"                dev_profile.update({"},{"line_number":1550,"context_line":"                    \u0027card_serial_number\u0027: card_serial_number"},{"line_number":1551,"context_line":"                })"},{"line_number":1552,"context_line":"            if pci_dev.dev_type \u003d\u003d obj_fields.PciDeviceType.SRIOV_VF:"},{"line_number":1553,"context_line":"                # Neutron may decide to do something with this additional"},{"line_number":1554,"context_line":"                # information depending on the port type."},{"line_number":1555,"context_line":"                dev_profile.update(self._get_vf_pci_device_profile(pci_dev))"}],"source_content_type":"text/x-python","patch_set":9,"id":"df787f1d_ff62bed4","line":1552,"range":{"start_line":1552,"start_character":31,"end_line":1552,"end_character":69},"updated":"2021-12-17 12:50:57.000000000","message":"in the future we may want this to be \n\nif pci_dev.dev_type in (\n    obj_fields.PciDeviceType.SRIOV_VF,\n    obj_fields.PciDeviceType.VDPA):\n\nbut this works for now.\n\nyou coudl add a todo or not to capture that but that is not mandatory.","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":1549,"context_line":"                dev_profile.update({"},{"line_number":1550,"context_line":"                    \u0027card_serial_number\u0027: card_serial_number"},{"line_number":1551,"context_line":"                })"},{"line_number":1552,"context_line":"            if pci_dev.dev_type \u003d\u003d obj_fields.PciDeviceType.SRIOV_VF:"},{"line_number":1553,"context_line":"                # Neutron may decide to do something with this additional"},{"line_number":1554,"context_line":"                # information depending on the port type."},{"line_number":1555,"context_line":"                dev_profile.update(self._get_vf_pci_device_profile(pci_dev))"}],"source_content_type":"text/x-python","patch_set":9,"id":"b9dd9d01_de35cec5","line":1552,"range":{"start_line":1552,"start_character":31,"end_line":1552,"end_character":69},"in_reply_to":"df787f1d_ff62bed4","updated":"2022-01-16 20:56:39.000000000","message":"Ack, I\u0027ll add a TODO to remember.","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":2307,"context_line":"                # SR-IOV modes (legacy and ovs) in the same deployment."},{"line_number":2308,"context_line":"                spec \u003d {"},{"line_number":2309,"context_line":"                    pci_request.PCI_NET_TAG: physnet,"},{"line_number":2310,"context_line":"                    # Convert the value to string since tags are compared as"},{"line_number":2311,"context_line":"                    # string values case-insensitively."},{"line_number":2312,"context_line":"                    pci_request.PCI_REMOTE_MANAGED_TAG:"},{"line_number":2313,"context_line":"                    str(self._is_remote_managed(vnic_type)),"}],"source_content_type":"text/x-python","patch_set":9,"id":"fddff2ad_4207f8fe","line":2310,"updated":"2021-12-17 12:50:57.000000000","message":"+1 for the comment its easy to forget that","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":2307,"context_line":"                # SR-IOV modes (legacy and ovs) in the same deployment."},{"line_number":2308,"context_line":"                spec \u003d {"},{"line_number":2309,"context_line":"                    pci_request.PCI_NET_TAG: physnet,"},{"line_number":2310,"context_line":"                    # Convert the value to string since tags are compared as"},{"line_number":2311,"context_line":"                    # string values case-insensitively."},{"line_number":2312,"context_line":"                    pci_request.PCI_REMOTE_MANAGED_TAG:"},{"line_number":2313,"context_line":"                    str(self._is_remote_managed(vnic_type)),"}],"source_content_type":"text/x-python","patch_set":9,"id":"7eb4be6f_52800291","line":2310,"in_reply_to":"fddff2ad_4207f8fe","updated":"2022-01-16 20:56:39.000000000","message":"Ack","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"}],"nova/pci/stats.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":139,"context_line":"        if dev.extra_info.get(\u0027parent_ifname\u0027):"},{"line_number":140,"context_line":"            pool[\u0027parent_ifname\u0027] \u003d dev.extra_info[\u0027parent_ifname\u0027]"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        self._maybe_add_remote_managed_tag(dev, pool)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        return pool"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1dd4ab8c_02c975e8","line":142,"range":{"start_line":142,"start_character":4,"end_line":142,"end_character":53},"updated":"2021-12-17 12:50:57.000000000","message":"ack, calling this here is fine the filter fucntions below V we try to keep as pure\nfunctions of there input that do not modify the pools data.\n\n_create_pool_keys_from_dev however is the perfect place to inject this default","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        if dev.extra_info.get(\u0027parent_ifname\u0027):"},{"line_number":140,"context_line":"            pool[\u0027parent_ifname\u0027] \u003d dev.extra_info[\u0027parent_ifname\u0027]"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        self._maybe_add_remote_managed_tag(dev, pool)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        return pool"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"84463670_d17739c5","line":142,"range":{"start_line":142,"start_character":4,"end_line":142,"end_character":53},"in_reply_to":"1dd4ab8c_02c975e8","updated":"2022-01-16 20:56:39.000000000","message":"Ack","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":493,"context_line":"        :returns: A list of pools that can be used to support the request if"},{"line_number":494,"context_line":"            this is possible."},{"line_number":495,"context_line":"        \"\"\""},{"line_number":496,"context_line":"        if all(spec.get(\u0027remote_managed\u0027, \u0027false\u0027).lower() !\u003d \u0027true\u0027"},{"line_number":497,"context_line":"               for spec in request.spec):"},{"line_number":498,"context_line":"            pools \u003d [pool for pool in pools"},{"line_number":499,"context_line":"                     if pool.get(\u0027remote_managed\u0027, \u0027false\u0027).lower() !\u003d \u0027true\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"6b23e31f_43ce2259","line":496,"range":{"start_line":496,"start_character":15,"end_line":496,"end_character":68},"updated":"2021-12-17 12:50:57.000000000","message":"nit: we do have string utils to convert stings into bools\n\nso this could be \n\n\nfrom oslo_utils import strutils\n...\nif all(strutils.bool_from_string(spec.get(\u0027remote_managed\u0027, \u0027false\u0027)) ...","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        :returns: A list of pools that can be used to support the request if"},{"line_number":494,"context_line":"            this is possible."},{"line_number":495,"context_line":"        \"\"\""},{"line_number":496,"context_line":"        if all(spec.get(\u0027remote_managed\u0027, \u0027false\u0027).lower() !\u003d \u0027true\u0027"},{"line_number":497,"context_line":"               for spec in request.spec):"},{"line_number":498,"context_line":"            pools \u003d [pool for pool in pools"},{"line_number":499,"context_line":"                     if pool.get(\u0027remote_managed\u0027, \u0027false\u0027).lower() !\u003d \u0027true\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"69491d0d_8c072637","line":496,"range":{"start_line":496,"start_character":15,"end_line":496,"end_character":68},"in_reply_to":"6b23e31f_43ce2259","updated":"2022-01-16 20:56:39.000000000","message":"Will replace with functions from strutils, thanks for the hint!","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":496,"context_line":"        if all(spec.get(\u0027remote_managed\u0027, \u0027false\u0027).lower() !\u003d \u0027true\u0027"},{"line_number":497,"context_line":"               for spec in request.spec):"},{"line_number":498,"context_line":"            pools \u003d [pool for pool in pools"},{"line_number":499,"context_line":"                     if pool.get(\u0027remote_managed\u0027, \u0027false\u0027).lower() !\u003d \u0027true\u0027]"},{"line_number":500,"context_line":"        return pools"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def _filter_pools_for_remote_managed_pf_devices("}],"source_content_type":"text/x-python","patch_set":9,"id":"6f2187ed_9f5b5cfd","line":499,"range":{"start_line":499,"start_character":23,"end_line":499,"end_character":77},"updated":"2021-12-17 12:50:57.000000000","message":"same\nstrutils.bool_from_string(pool.get(\u0027remote_managed\u0027, \u0027false\u0027))\nits similar complexity either way but its slightly more idiomatic\n\nthe one caveat with this is bool_from_string allows y Y yes 1 true True and a few other valuse to map to True that is not always what we want but it think its ok in this case.\n\nform a docs point of view we would just document True and False","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":496,"context_line":"        if all(spec.get(\u0027remote_managed\u0027, \u0027false\u0027).lower() !\u003d \u0027true\u0027"},{"line_number":497,"context_line":"               for spec in request.spec):"},{"line_number":498,"context_line":"            pools \u003d [pool for pool in pools"},{"line_number":499,"context_line":"                     if pool.get(\u0027remote_managed\u0027, \u0027false\u0027).lower() !\u003d \u0027true\u0027]"},{"line_number":500,"context_line":"        return pools"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def _filter_pools_for_remote_managed_pf_devices("}],"source_content_type":"text/x-python","patch_set":9,"id":"b4d75c16_51e865e6","line":499,"range":{"start_line":499,"start_character":23,"end_line":499,"end_character":77},"in_reply_to":"6f2187ed_9f5b5cfd","updated":"2022-01-16 20:56:39.000000000","message":"Ack, also we can drop `, \u0027false\u0027` since bool_from_string returns False when doing a non-strict conversion.","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":522,"context_line":"        pools \u003d ["},{"line_number":523,"context_line":"            pool for pool in pools"},{"line_number":524,"context_line":"            if not (pool.get(\u0027dev_type\u0027) \u003d\u003d fields.PciDeviceType.SRIOV_PF and"},{"line_number":525,"context_line":"                    pool.get(\u0027remote_managed\u0027, \u0027false\u0027).lower() \u003d\u003d \u0027true\u0027)"},{"line_number":526,"context_line":"        ]"},{"line_number":527,"context_line":"        return pools"},{"line_number":528,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"483a94f0_5fea7394","line":525,"range":{"start_line":525,"start_character":20,"end_line":525,"end_character":73},"updated":"2021-12-17 12:50:57.000000000","message":"same\nstrutils.bool_from_string(pool.get(\u0027remote_managed\u0027, \u0027false\u0027))","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":522,"context_line":"        pools \u003d ["},{"line_number":523,"context_line":"            pool for pool in pools"},{"line_number":524,"context_line":"            if not (pool.get(\u0027dev_type\u0027) \u003d\u003d fields.PciDeviceType.SRIOV_PF and"},{"line_number":525,"context_line":"                    pool.get(\u0027remote_managed\u0027, \u0027false\u0027).lower() \u003d\u003d \u0027true\u0027)"},{"line_number":526,"context_line":"        ]"},{"line_number":527,"context_line":"        return pools"},{"line_number":528,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"b573e62c_5e4126d0","line":525,"range":{"start_line":525,"start_character":20,"end_line":525,"end_character":73},"in_reply_to":"483a94f0_5fea7394","updated":"2022-01-16 20:56:39.000000000","message":"Ack","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99982401da0eae93de73f97f790b7f34082e9906","unresolved":true,"context_lines":[{"line_number":771,"context_line":"        The check is pool-based, not free device-based and is NUMA cell"},{"line_number":772,"context_line":"        agnostic."},{"line_number":773,"context_line":"        \"\"\""},{"line_number":774,"context_line":"        dummy_req \u003d objects.InstancePCIRequest(count\u003d0,"},{"line_number":775,"context_line":"                                               spec\u003d[{\u0027remote_managed\u0027: True}])"},{"line_number":776,"context_line":"        pools \u003d self._filter_pools_for_spec(self.pools, dummy_req)"},{"line_number":777,"context_line":"        return True if pools else False"}],"source_content_type":"text/x-python","patch_set":10,"id":"04bef765_f4c76f42","line":774,"updated":"2022-01-25 02:28:34.000000000","message":"nit if you respin please drop count to the next line and reflow the args.\n\nbut yes you are requesting here so that its not looking at the free devices and just to pools this should work +1","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"1c78a4cdc193baafe03a8630959e1b90ffc1a17d","unresolved":true,"context_lines":[{"line_number":771,"context_line":"        The check is pool-based, not free device-based and is NUMA cell"},{"line_number":772,"context_line":"        agnostic."},{"line_number":773,"context_line":"        \"\"\""},{"line_number":774,"context_line":"        dummy_req \u003d objects.InstancePCIRequest(count\u003d0,"},{"line_number":775,"context_line":"                                               spec\u003d[{\u0027remote_managed\u0027: True}])"},{"line_number":776,"context_line":"        pools \u003d self._filter_pools_for_spec(self.pools, dummy_req)"},{"line_number":777,"context_line":"        return True if pools else False"}],"source_content_type":"text/x-python","patch_set":10,"id":"1c835434_312e3a7d","line":774,"in_reply_to":"04bef765_f4c76f42","updated":"2022-01-26 21:00:13.000000000","message":"Will do, ty.","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"1a511b7d862f9fb290ec43b7e8cd47afcfa8cf23","unresolved":false,"context_lines":[{"line_number":771,"context_line":"        The check is pool-based, not free device-based and is NUMA cell"},{"line_number":772,"context_line":"        agnostic."},{"line_number":773,"context_line":"        \"\"\""},{"line_number":774,"context_line":"        dummy_req \u003d objects.InstancePCIRequest(count\u003d0,"},{"line_number":775,"context_line":"                                               spec\u003d[{\u0027remote_managed\u0027: True}])"},{"line_number":776,"context_line":"        pools \u003d self._filter_pools_for_spec(self.pools, dummy_req)"},{"line_number":777,"context_line":"        return True if pools else False"}],"source_content_type":"text/x-python","patch_set":10,"id":"e8cc8b2b_0d79a938","line":774,"in_reply_to":"1c835434_312e3a7d","updated":"2022-01-27 21:39:11.000000000","message":"Done","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c4e06a8c4665392821432b0c626a2edcb2d6978b","unresolved":true,"context_lines":[{"line_number":744,"context_line":"            spec\u003d[{\u0027remote_managed\u0027: True}]"},{"line_number":745,"context_line":"        )"},{"line_number":746,"context_line":"        pools \u003d self._filter_pools_for_spec(self.pools, dummy_req)"},{"line_number":747,"context_line":"        return True if pools else False"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a22033b_c9242522","line":747,"range":{"start_line":747,"start_character":15,"end_line":747,"end_character":39},"updated":"2022-02-01 15:14:37.000000000","message":"return bool(pools)","commit_id":"067d03255c55c6bb3c6a63c4a3439a4c3e02394d"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"012680ea9b86041b9abf7a7c39411b0fe43e6aec","unresolved":false,"context_lines":[{"line_number":744,"context_line":"            spec\u003d[{\u0027remote_managed\u0027: True}]"},{"line_number":745,"context_line":"        )"},{"line_number":746,"context_line":"        pools \u003d self._filter_pools_for_spec(self.pools, dummy_req)"},{"line_number":747,"context_line":"        return True if pools else False"}],"source_content_type":"text/x-python","patch_set":16,"id":"d428c531_31a8ccbe","line":747,"range":{"start_line":747,"start_character":15,"end_line":747,"end_character":39},"in_reply_to":"3a22033b_c9242522","updated":"2022-02-01 19:59:40.000000000","message":"Done","commit_id":"067d03255c55c6bb3c6a63c4a3439a4c3e02394d"}],"nova/scheduler/request_filter.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":379,"context_line":"    remote-managed ports (actual device availability besides a pool presence"},{"line_number":380,"context_line":"    check is done at the time of PciPassthroughFilter execution)."},{"line_number":381,"context_line":"    \"\"\""},{"line_number":382,"context_line":"    # TODO(dmitriis): replace with a standard trait, pending"},{"line_number":383,"context_line":"    # https://review.opendev.org/c/openstack/os-traits/+/818514"},{"line_number":384,"context_line":"    # os_traits.COMPUTE_REMOTE_MANAGED_PORTS"},{"line_number":385,"context_line":"    trait_name \u003d \u0027COMPUTE_REMOTE_MANAGED_PORTS\u0027"},{"line_number":386,"context_line":"    if request_spec.requested_networks:"},{"line_number":387,"context_line":"        network_api \u003d neutron.API()"},{"line_number":388,"context_line":"        for request_net in request_spec.requested_networks:"}],"source_content_type":"text/x-python","patch_set":9,"id":"cfbc8b14_baa301b2","line":385,"range":{"start_line":382,"start_character":4,"end_line":385,"end_character":47},"updated":"2021-12-17 12:50:57.000000000","message":"again this is a standard trait already i guess you just mean import it as a constant instead\nof use it as a stirng","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":379,"context_line":"    remote-managed ports (actual device availability besides a pool presence"},{"line_number":380,"context_line":"    check is done at the time of PciPassthroughFilter execution)."},{"line_number":381,"context_line":"    \"\"\""},{"line_number":382,"context_line":"    # TODO(dmitriis): replace with a standard trait, pending"},{"line_number":383,"context_line":"    # https://review.opendev.org/c/openstack/os-traits/+/818514"},{"line_number":384,"context_line":"    # os_traits.COMPUTE_REMOTE_MANAGED_PORTS"},{"line_number":385,"context_line":"    trait_name \u003d \u0027COMPUTE_REMOTE_MANAGED_PORTS\u0027"},{"line_number":386,"context_line":"    if request_spec.requested_networks:"},{"line_number":387,"context_line":"        network_api \u003d neutron.API()"},{"line_number":388,"context_line":"        for request_net in request_spec.requested_networks:"}],"source_content_type":"text/x-python","patch_set":9,"id":"33477fe7_f543f3d3","line":385,"range":{"start_line":382,"start_character":4,"end_line":385,"end_character":47},"in_reply_to":"cfbc8b14_baa301b2","updated":"2022-01-16 20:56:39.000000000","message":"Yes, I\u0027ll drop the comment and replace the string once the os-traits change lands.","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99982401da0eae93de73f97f790b7f34082e9906","unresolved":true,"context_lines":[{"line_number":400,"context_line":"    transform_image_metadata,"},{"line_number":401,"context_line":"    accelerators_filter,"},{"line_number":402,"context_line":"    routed_networks_filter,"},{"line_number":403,"context_line":"]"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"def process_reqspec(ctxt, request_spec):"}],"source_content_type":"text/x-python","patch_set":10,"id":"017dbc71_e688c985","line":403,"updated":"2022-01-25 02:28:34.000000000","message":"you need to add the remote_manaaged_ports_filter to the end of this list for it to work.","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"1c78a4cdc193baafe03a8630959e1b90ffc1a17d","unresolved":true,"context_lines":[{"line_number":400,"context_line":"    transform_image_metadata,"},{"line_number":401,"context_line":"    accelerators_filter,"},{"line_number":402,"context_line":"    routed_networks_filter,"},{"line_number":403,"context_line":"]"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"def process_reqspec(ctxt, request_spec):"}],"source_content_type":"text/x-python","patch_set":10,"id":"136e8473_ff6f3099","line":403,"in_reply_to":"017dbc71_e688c985","updated":"2022-01-26 21:00:13.000000000","message":"Will do, thanks for the catch!","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"1a511b7d862f9fb290ec43b7e8cd47afcfa8cf23","unresolved":false,"context_lines":[{"line_number":400,"context_line":"    transform_image_metadata,"},{"line_number":401,"context_line":"    accelerators_filter,"},{"line_number":402,"context_line":"    routed_networks_filter,"},{"line_number":403,"context_line":"]"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"def process_reqspec(ctxt, request_spec):"}],"source_content_type":"text/x-python","patch_set":10,"id":"324e0233_81a1ab4d","line":403,"in_reply_to":"136e8473_ff6f3099","updated":"2022-01-27 21:39:11.000000000","message":"Done","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"}],"nova/tests/unit/network/test_network_info.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def test_has_bind_time_event_normal(self):"},{"line_number":469,"context_line":"        cases \u003d ["},{"line_number":470,"context_line":"            (model.VIF(vnic_type\u003dmodel.VNIC_TYPE_NORMAL,"},{"line_number":471,"context_line":"                       details\u003d{\u0027ovs_hybrid_plug\u0027: False}),"},{"line_number":472,"context_line":"             [],"},{"line_number":473,"context_line":"             False),"},{"line_number":474,"context_line":"            (model.VIF(vnic_type\u003dmodel.VNIC_TYPE_NORMAL,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fd52e752_ec1429c5","line":471,"range":{"start_line":470,"start_character":13,"end_line":471,"end_character":58},"updated":"2021-12-17 12:50:57.000000000","message":"you also need to set the vif to active\u003dTrue\n\nwe have a bug in our current code.\nhttps://bugs.launchpad.net/nova/+bug/1951623","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def test_has_bind_time_event_normal(self):"},{"line_number":469,"context_line":"        cases \u003d ["},{"line_number":470,"context_line":"            (model.VIF(vnic_type\u003dmodel.VNIC_TYPE_NORMAL,"},{"line_number":471,"context_line":"                       details\u003d{\u0027ovs_hybrid_plug\u0027: False}),"},{"line_number":472,"context_line":"             [],"},{"line_number":473,"context_line":"             False),"},{"line_number":474,"context_line":"            (model.VIF(vnic_type\u003dmodel.VNIC_TYPE_NORMAL,"}],"source_content_type":"text/x-python","patch_set":9,"id":"76ff3be9_86048728","line":471,"range":{"start_line":470,"start_character":13,"end_line":471,"end_character":58},"in_reply_to":"fd52e752_ec1429c5","updated":"2022-01-16 20:56:39.000000000","message":"Ack, thanks noticing!","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"}],"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":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":7604,"context_line":""},{"line_number":7605,"context_line":"    @mock.patch.object("},{"line_number":7606,"context_line":"        pci_utils, \u0027get_vf_num_by_pci_address\u0027,"},{"line_number":7607,"context_line":"        side_effect\u003d(lambda vf_a: {\u00270000:82:00.1\u0027: 1}.get(vf_a)))"},{"line_number":7608,"context_line":"    @mock.patch.object("},{"line_number":7609,"context_line":"        pci_utils, \u0027get_pf_mac_by_vf_pci_address\u0027,"},{"line_number":7610,"context_line":"        side_effect\u003d(lambda vf_a: {"}],"source_content_type":"text/x-python","patch_set":9,"id":"9d43f722_170933a8","line":7607,"range":{"start_line":7607,"start_character":7,"end_line":7607,"end_character":65},"updated":"2021-12-17 12:50:57.000000000","message":"this work\nits basically the same as \n\nlambda vf_a:  return 1 if vf_a \u003d\u003d \u00270000:82:00.1\u0027 else None","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":7604,"context_line":""},{"line_number":7605,"context_line":"    @mock.patch.object("},{"line_number":7606,"context_line":"        pci_utils, \u0027get_vf_num_by_pci_address\u0027,"},{"line_number":7607,"context_line":"        side_effect\u003d(lambda vf_a: {\u00270000:82:00.1\u0027: 1}.get(vf_a)))"},{"line_number":7608,"context_line":"    @mock.patch.object("},{"line_number":7609,"context_line":"        pci_utils, \u0027get_pf_mac_by_vf_pci_address\u0027,"},{"line_number":7610,"context_line":"        side_effect\u003d(lambda vf_a: {"}],"source_content_type":"text/x-python","patch_set":9,"id":"2b7cdc03_53d6d3ce","line":7607,"range":{"start_line":7607,"start_character":7,"end_line":7607,"end_character":65},"in_reply_to":"9d43f722_170933a8","updated":"2022-01-16 20:56:39.000000000","message":"Ack","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":7622,"context_line":"                               [\u0027vendor_id\u0027, \u0027product_id\u0027, \u0027address\u0027,"},{"line_number":7623,"context_line":"                                \u0027card_serial_number\u0027, \u0027dev_type\u0027])"},{"line_number":7624,"context_line":"        mydev \u003d PciDevice(**pci_dev)"},{"line_number":7625,"context_line":"        self.assertEqual(self.api._get_vf_pci_device_profile(mydev),"},{"line_number":7626,"context_line":"                         {\u0027pf_mac_address\u0027: \u0027de:ad:be:ef:ca:fe\u0027, \u0027vf_num\u0027: 1})"},{"line_number":7627,"context_line":""},{"line_number":7628,"context_line":"    @mock.patch.object(pci_utils, \u0027get_vf_num_by_pci_address\u0027)"},{"line_number":7629,"context_line":"    @mock.patch.object(pci_utils, \u0027get_pf_mac_by_vf_pci_address\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"d487278e_7a50d9ca","line":7626,"range":{"start_line":7625,"start_character":9,"end_line":7626,"end_character":78},"updated":"2021-12-17 12:50:57.000000000","message":"should this not also have the serial   \u0027card_serial_number\u0027: \u0027MT2113X00000\u0027,","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":7622,"context_line":"                               [\u0027vendor_id\u0027, \u0027product_id\u0027, \u0027address\u0027,"},{"line_number":7623,"context_line":"                                \u0027card_serial_number\u0027, \u0027dev_type\u0027])"},{"line_number":7624,"context_line":"        mydev \u003d PciDevice(**pci_dev)"},{"line_number":7625,"context_line":"        self.assertEqual(self.api._get_vf_pci_device_profile(mydev),"},{"line_number":7626,"context_line":"                         {\u0027pf_mac_address\u0027: \u0027de:ad:be:ef:ca:fe\u0027, \u0027vf_num\u0027: 1})"},{"line_number":7627,"context_line":""},{"line_number":7628,"context_line":"    @mock.patch.object(pci_utils, \u0027get_vf_num_by_pci_address\u0027)"},{"line_number":7629,"context_line":"    @mock.patch.object(pci_utils, \u0027get_pf_mac_by_vf_pci_address\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7cc23173_3aef0564","line":7626,"range":{"start_line":7625,"start_character":9,"end_line":7626,"end_character":78},"in_reply_to":"d487278e_7a50d9ca","updated":"2022-01-16 20:56:39.000000000","message":"The serial number would be added in `_get_pci_device_profile` which calls `_get_vf_pci_device_profile` for devices of type obj_fields.PciDeviceType.SRIOV_VF in the current implementation.\n\nI could limit the addition of the card_serial_number to VFs for now and just do it in `get_vf_pci_device_profile`.","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9be84528b2b1c2d39f0ea3c3dd847279e8f5dbf4","unresolved":true,"context_lines":[{"line_number":7682,"context_line":"                                \u0027card_serial_number\u0027, \u0027dev_type\u0027])"},{"line_number":7683,"context_line":"        mydev \u003d PciDevice(**pci_dev)"},{"line_number":7684,"context_line":""},{"line_number":7685,"context_line":"        self.assertEqual({\u0027card_serial_number\u0027: \u0027MT2113X00000\u0027,"},{"line_number":7686,"context_line":"                          \u0027pci_slot\u0027: \u00270000:82:00.1\u0027,"},{"line_number":7687,"context_line":"                          \u0027pci_vendor_info\u0027: \u0027a2d6:15b3\u0027,"},{"line_number":7688,"context_line":"                          \u0027pf_mac_address\u0027: \u0027de:ad:be:ef:ca:fe\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1209fcbe_0a387eb3","line":7685,"range":{"start_line":7685,"start_character":25,"end_line":7685,"end_character":63},"updated":"2021-12-17 12:50:57.000000000","message":"like here the serial is included but not above","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"c667490cfa65d9972640eb2b996c59688e1ed2c9","unresolved":false,"context_lines":[{"line_number":7682,"context_line":"                                \u0027card_serial_number\u0027, \u0027dev_type\u0027])"},{"line_number":7683,"context_line":"        mydev \u003d PciDevice(**pci_dev)"},{"line_number":7684,"context_line":""},{"line_number":7685,"context_line":"        self.assertEqual({\u0027card_serial_number\u0027: \u0027MT2113X00000\u0027,"},{"line_number":7686,"context_line":"                          \u0027pci_slot\u0027: \u00270000:82:00.1\u0027,"},{"line_number":7687,"context_line":"                          \u0027pci_vendor_info\u0027: \u0027a2d6:15b3\u0027,"},{"line_number":7688,"context_line":"                          \u0027pf_mac_address\u0027: \u0027de:ad:be:ef:ca:fe\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7b1d41cf_b435c017","line":7685,"range":{"start_line":7685,"start_character":25,"end_line":7685,"end_character":63},"in_reply_to":"1209fcbe_0a387eb3","updated":"2022-01-16 20:56:39.000000000","message":"Ack, will rework as commented above.","commit_id":"7e3b85c79f8eab2130035eb205477593d464b5b1"}],"nova/virt/driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99982401da0eae93de73f97f790b7f34082e9906","unresolved":true,"context_lines":[{"line_number":126,"context_line":"    \"supports_secure_boot\": os_traits.COMPUTE_SECURITY_UEFI_SECURE_BOOT,"},{"line_number":127,"context_line":"    \"supports_socket_pci_numa_affinity\":"},{"line_number":128,"context_line":"        os_traits.COMPUTE_SOCKET_PCI_NUMA_AFFINITY,"},{"line_number":129,"context_line":"    \"supports_remote_managed_ports\": \u0027COMPUTE_REMOTE_MANAGED_PORTS\u0027,"},{"line_number":130,"context_line":"}"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"258e29a7_cab78027","line":129,"updated":"2022-01-25 02:28:34.000000000","message":"you should update this to use the os_traits constant.\nthis patch cannot merge until os-traits is released and the min version of nova is updated to require the new trait.\n\nso this ptach should have a depend on to the patch to do the release in the release repo and you should bump the min verion in nova’s lower-constraitns/requirements file.","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"1c78a4cdc193baafe03a8630959e1b90ffc1a17d","unresolved":true,"context_lines":[{"line_number":126,"context_line":"    \"supports_secure_boot\": os_traits.COMPUTE_SECURITY_UEFI_SECURE_BOOT,"},{"line_number":127,"context_line":"    \"supports_socket_pci_numa_affinity\":"},{"line_number":128,"context_line":"        os_traits.COMPUTE_SOCKET_PCI_NUMA_AFFINITY,"},{"line_number":129,"context_line":"    \"supports_remote_managed_ports\": \u0027COMPUTE_REMOTE_MANAGED_PORTS\u0027,"},{"line_number":130,"context_line":"}"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ad657a17_562e37d0","line":129,"in_reply_to":"258e29a7_cab78027","updated":"2022-01-26 21:00:13.000000000","message":"Ack, will do.","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"740c1976aca95d991fe2198d69c29c46d26a9b3c","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    \"supports_secure_boot\": os_traits.COMPUTE_SECURITY_UEFI_SECURE_BOOT,"},{"line_number":127,"context_line":"    \"supports_socket_pci_numa_affinity\":"},{"line_number":128,"context_line":"        os_traits.COMPUTE_SOCKET_PCI_NUMA_AFFINITY,"},{"line_number":129,"context_line":"    \"supports_remote_managed_ports\": \u0027COMPUTE_REMOTE_MANAGED_PORTS\u0027,"},{"line_number":130,"context_line":"}"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"0d484307_ef2ca9a4","line":129,"in_reply_to":"ad657a17_562e37d0","updated":"2022-01-27 21:39:45.000000000","message":"Done","commit_id":"91e186598a973bedb253c66b6bb93f9dcd1e4fb4"}]}
