)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6970a9ae6ebc42604f8bef89d12f165a0cf1c4d0","unresolved":true,"context_lines":[{"line_number":7,"context_line":"[OVN][Placement] Drive binding by placement allocation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add OVN to the mechanism drivers that support placement allocation."},{"line_number":10,"context_line":"The choice of the mecanism driver during binding process was"},{"line_number":11,"context_line":"implemented in [1], using the \"port\" information provided by Nova"},{"line_number":12,"context_line":"in \"binding:profile\"."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"c0163d85_8a182cac","line":10,"range":{"start_line":10,"start_character":18,"end_line":10,"end_character":26},"updated":"2021-11-19 15:12:03.000000000","message":"mechanism","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f1bdf003d39c4bd81d9c61e4926300265c8fc5cc","unresolved":false,"context_lines":[{"line_number":7,"context_line":"[OVN][Placement] Drive binding by placement allocation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add OVN to the mechanism drivers that support placement allocation."},{"line_number":10,"context_line":"The choice of the mecanism driver during binding process was"},{"line_number":11,"context_line":"implemented in [1], using the \"port\" information provided by Nova"},{"line_number":12,"context_line":"in \"binding:profile\"."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"d3e2d893_24a367b2","line":10,"range":{"start_line":10,"start_character":18,"end_line":10,"end_character":26},"in_reply_to":"c0163d85_8a182cac","updated":"2021-11-22 16:26:31.000000000","message":"Done","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"29061d906b66ff0ef92f288dce073ee40087def4","unresolved":true,"context_lines":[{"line_number":24,"context_line":"registers."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"[1]https://review.opendev.org/c/openstack/neutron/+/574783"},{"line_number":27,"context_line":"[2]https://review.opendev.org/c/openstack/neutron/+/776701"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Partial-Bug: #1578989"},{"line_number":30,"context_line":"Change-Id: I88376c41c9a46b2c793ad6b3ab8e0baea99b8851"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"241d0547_2292b735","line":27,"updated":"2022-07-18 10:49:55.000000000","message":"this was reverted later. Is that needed here? It is also not mentioned anywhere in the commit message","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2482e25c417389b55172505822532dfa100d01cb","unresolved":true,"context_lines":[{"line_number":24,"context_line":"registers."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"[1]https://review.opendev.org/c/openstack/neutron/+/574783"},{"line_number":27,"context_line":"[2]https://review.opendev.org/c/openstack/neutron/+/776701"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Partial-Bug: #1578989"},{"line_number":30,"context_line":"Change-Id: I88376c41c9a46b2c793ad6b3ab8e0baea99b8851"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"d282221d_5466587c","line":27,"in_reply_to":"241d0547_2292b735","updated":"2022-07-26 13:31:11.000000000","message":"Right, and then I pushed [1] that also contains a note in the commit message that this is similar to the reverted patch but with the needed fixes.\n\nI\u0027ll update the link with [1].\n\n[1]https://review.opendev.org/c/openstack/neutron/+/801712","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"49db48308dcafc0aa5fd18965d9c38e3d046849e","unresolved":false,"context_lines":[{"line_number":24,"context_line":"registers."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"[1]https://review.opendev.org/c/openstack/neutron/+/574783"},{"line_number":27,"context_line":"[2]https://review.opendev.org/c/openstack/neutron/+/776701"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Partial-Bug: #1578989"},{"line_number":30,"context_line":"Change-Id: I88376c41c9a46b2c793ad6b3ab8e0baea99b8851"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"5529f7db_903512cb","line":27,"in_reply_to":"d282221d_5466587c","updated":"2022-07-29 10:14:05.000000000","message":"Done","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"047f6d6d82121e7be273f5a76a26a0f9d2d32ed8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"9505086e_f115f382","updated":"2021-11-10 08:47:47.000000000","message":"\u003e Patch Set 17:\n\u003e \n\u003e @Rodolfo: are you planning to enable tempest tests for QoS min bw + OVN? Something like a refreshed version of [1]. I looked into doing it but I got stuck at how to configure bandwidth inventory in OVN for tempest and the doc [2] did not helped me as I\u0027m new to OVN.\n\u003e \n\u003e [1] https://review.opendev.org/c/openstack/neutron/+/778670\n\u003e [2] https://review.opendev.org/c/openstack/neutron/+/801712/6/doc/source/admin/config-qos-min-bw.rst\n\nSorry, I didn\u0027t see your comment (3 months ago). Yes, I\u0027ll implement those tests as soon as I have those patches merged. Let me check if there is something wrong in the inventory configuration. Also this patch is rebased to use the new inventory definition.","commit_id":"0ccbcd083c4ebba1781d62aeb020e9039309c38b"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f5e5c020f0eba768441094f052ee2bb8fb7b212b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"4bceb14f_2a5e77d1","updated":"2021-11-09 08:40:40.000000000","message":"Please check failed tests in https://b822907c6361e16794e4-bedf8339247cc3e592c35ad8566e99fe.ssl.cf5.rackcdn.com/786478/22/check/neutron-functional-with-uwsgi/cb916cf/testr_results.html\nIt seems that failures may be related to that patch.","commit_id":"0ccbcd083c4ebba1781d62aeb020e9039309c38b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f684270be5f132881006091326dcc9ea2c16ff6c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"c184c935_bd5be41f","in_reply_to":"4bceb14f_2a5e77d1","updated":"2021-11-10 08:48:25.000000000","message":"Yes, I changed some definitions in the initial patch of this series. I\u0027ll check it now.","commit_id":"0ccbcd083c4ebba1781d62aeb020e9039309c38b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae0d8513d109eba3b05aa50d7bb10196c1151769","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"cdb9d226_f6bfea85","updated":"2021-11-11 11:12:43.000000000","message":"recheck","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d0b737bc237bff8d8cf19140deb4501f808da82d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"d870ff22_830cf2bf","updated":"2022-02-17 18:12:10.000000000","message":"NOTE testing: https://review.opendev.org/c/openstack/neutron/+/806170","commit_id":"0df007b1bef8c40ea07b59f9e4da5f6ed7940dc9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ae8b89a787d5889c8e810ae1f33aa0e8a93a744d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"e95c0ed0_0e93524b","updated":"2022-07-26 13:32:09.000000000","message":"Ah, please don\u0027t hesitate to add a -1 to have better visibility of your comments.","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"613d237466f5e9592cadca9eebe2133ac7a8c8b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"9b7c1c07_40440bbb","updated":"2022-07-13 20:28:32.000000000","message":"Question inline","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2482e25c417389b55172505822532dfa100d01cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"6cbd6d43_1a0e2f0d","updated":"2022-07-26 13:31:11.000000000","message":"Thanks for your reviews. Always appreciated. ","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d7897c7b53503e309591e598e1c036310fb57c17","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"5043f49e_cb1022db","updated":"2022-06-29 14:54:41.000000000","message":"ping fellow reviewers","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"aaaa90570a0ac41bf5c68ba1de9c9f180e33bc69","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"99920998_754c20c8","updated":"2022-07-11 13:44:06.000000000","message":"ping fellow reviewers","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"4b0bec74583e5c99db4042eccdf08e263cd9d99a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"ac23c80a_2c0e69e7","updated":"2022-08-08 11:57:18.000000000","message":"LGTM, just a qq","commit_id":"018f318e0718153707df29aae149081c333a3d30"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"2a12e56a6dafadcf53652f0b831e15cacd7e1f8f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"df6aca36_c55bb439","updated":"2022-08-08 13:30:42.000000000","message":"LGTM","commit_id":"4f1e60909b4d1edd7a7a1646698613c76551ac9f"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"e041e0a21e379103623e791b84d34093f8bf9893","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"07211799_0c87dfe0","updated":"2022-08-08 17:16:50.000000000","message":"That looks good to me from what I read in allocation spec and https://review.opendev.org/c/openstack/neutron/+/574783/40/neutron/plugins/ml2/drivers/mech_agent.py agent implementation","commit_id":"4f1e60909b4d1edd7a7a1646698613c76551ac9f"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"8f776b8f58e97c2887c48ebe74aa2504a8ebac6d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"a2b7550a_f8016ace","updated":"2022-08-10 06:45:02.000000000","message":"LGTM","commit_id":"edafe03adac24dcc5c7528114209c1d78b9db2e0"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6970a9ae6ebc42604f8bef89d12f165a0cf1c4d0","unresolved":true,"context_lines":[{"line_number":1217,"context_line":"        uuid_ns \u003d self.resource_provider_uuid5_namespace"},{"line_number":1218,"context_line":"        if uuid_ns is None:"},{"line_number":1219,"context_line":"            return False"},{"line_number":1220,"context_line":"        if \u0027allocation\u0027 not in context.current[\u0027binding:profile\u0027]:"},{"line_number":1221,"context_line":"            return False"},{"line_number":1222,"context_line":""},{"line_number":1223,"context_line":"        rp \u003d context.current[\u0027binding:profile\u0027][\u0027allocation\u0027]"}],"source_content_type":"text/x-python","patch_set":23,"id":"03d1f0ee_25844a09","line":1220,"range":{"start_line":1220,"start_character":11,"end_line":1220,"end_character":23},"updated":"2021-11-19 15:12:03.000000000","message":"Should we make this a constant?","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f1bdf003d39c4bd81d9c61e4926300265c8fc5cc","unresolved":false,"context_lines":[{"line_number":1217,"context_line":"        uuid_ns \u003d self.resource_provider_uuid5_namespace"},{"line_number":1218,"context_line":"        if uuid_ns is None:"},{"line_number":1219,"context_line":"            return False"},{"line_number":1220,"context_line":"        if \u0027allocation\u0027 not in context.current[\u0027binding:profile\u0027]:"},{"line_number":1221,"context_line":"            return False"},{"line_number":1222,"context_line":""},{"line_number":1223,"context_line":"        rp \u003d context.current[\u0027binding:profile\u0027][\u0027allocation\u0027]"}],"source_content_type":"text/x-python","patch_set":23,"id":"905e1a12_b3b02b58","line":1220,"range":{"start_line":1220,"start_character":11,"end_line":1220,"end_character":23},"in_reply_to":"03d1f0ee_25844a09","updated":"2021-11-22 16:26:31.000000000","message":"Done","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6970a9ae6ebc42604f8bef89d12f165a0cf1c4d0","unresolved":true,"context_lines":[{"line_number":1217,"context_line":"        uuid_ns \u003d self.resource_provider_uuid5_namespace"},{"line_number":1218,"context_line":"        if uuid_ns is None:"},{"line_number":1219,"context_line":"            return False"},{"line_number":1220,"context_line":"        if \u0027allocation\u0027 not in context.current[\u0027binding:profile\u0027]:"},{"line_number":1221,"context_line":"            return False"},{"line_number":1222,"context_line":""},{"line_number":1223,"context_line":"        rp \u003d context.current[\u0027binding:profile\u0027][\u0027allocation\u0027]"},{"line_number":1224,"context_line":"        reported \u003d {}"},{"line_number":1225,"context_line":"        _placement \u003d self._ovn_client._placement_extension"},{"line_number":1226,"context_line":"        for ch_name, ch_rps in (_placement.chassis.items()):"}],"source_content_type":"text/x-python","patch_set":23,"id":"79da2ef7_746ca00c","line":1223,"range":{"start_line":1220,"start_character":0,"end_line":1223,"end_character":61},"updated":"2021-11-19 15:12:03.000000000","message":"you can avoid double lookup:\n\n try:\n     rp \u003d context.current[\u0027binding:profile\u0027][\u0027allocation\u0027]\n except KeyError:\n     return False","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f1bdf003d39c4bd81d9c61e4926300265c8fc5cc","unresolved":false,"context_lines":[{"line_number":1217,"context_line":"        uuid_ns \u003d self.resource_provider_uuid5_namespace"},{"line_number":1218,"context_line":"        if uuid_ns is None:"},{"line_number":1219,"context_line":"            return False"},{"line_number":1220,"context_line":"        if \u0027allocation\u0027 not in context.current[\u0027binding:profile\u0027]:"},{"line_number":1221,"context_line":"            return False"},{"line_number":1222,"context_line":""},{"line_number":1223,"context_line":"        rp \u003d context.current[\u0027binding:profile\u0027][\u0027allocation\u0027]"},{"line_number":1224,"context_line":"        reported \u003d {}"},{"line_number":1225,"context_line":"        _placement \u003d self._ovn_client._placement_extension"},{"line_number":1226,"context_line":"        for ch_name, ch_rps in (_placement.chassis.items()):"}],"source_content_type":"text/x-python","patch_set":23,"id":"1664a0bc_38cc69b2","line":1223,"range":{"start_line":1220,"start_character":0,"end_line":1223,"end_character":61},"in_reply_to":"79da2ef7_746ca00c","updated":"2021-11-22 16:26:31.000000000","message":"Good catch","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6970a9ae6ebc42604f8bef89d12f165a0cf1c4d0","unresolved":true,"context_lines":[{"line_number":1223,"context_line":"        rp \u003d context.current[\u0027binding:profile\u0027][\u0027allocation\u0027]"},{"line_number":1224,"context_line":"        reported \u003d {}"},{"line_number":1225,"context_line":"        _placement \u003d self._ovn_client._placement_extension"},{"line_number":1226,"context_line":"        for ch_name, ch_rps in (_placement.chassis.items()):"},{"line_number":1227,"context_line":"            for device in ch_rps[const.RP_BANDWIDTHS].keys():"},{"line_number":1228,"context_line":"                hostname \u003d _placement.get_chassis_hostname(ch_name, device)"},{"line_number":1229,"context_line":"                if not hostname:"}],"source_content_type":"text/x-python","patch_set":23,"id":"0c04c9ea_9b83eff9","line":1226,"range":{"start_line":1226,"start_character":31,"end_line":1226,"end_character":32},"updated":"2021-11-19 15:12:03.000000000","message":"nit: parenthesis are not needed here","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f1bdf003d39c4bd81d9c61e4926300265c8fc5cc","unresolved":false,"context_lines":[{"line_number":1223,"context_line":"        rp \u003d context.current[\u0027binding:profile\u0027][\u0027allocation\u0027]"},{"line_number":1224,"context_line":"        reported \u003d {}"},{"line_number":1225,"context_line":"        _placement \u003d self._ovn_client._placement_extension"},{"line_number":1226,"context_line":"        for ch_name, ch_rps in (_placement.chassis.items()):"},{"line_number":1227,"context_line":"            for device in ch_rps[const.RP_BANDWIDTHS].keys():"},{"line_number":1228,"context_line":"                hostname \u003d _placement.get_chassis_hostname(ch_name, device)"},{"line_number":1229,"context_line":"                if not hostname:"}],"source_content_type":"text/x-python","patch_set":23,"id":"a1df0c1c_4883cfc7","line":1226,"range":{"start_line":1226,"start_character":31,"end_line":1226,"end_character":32},"in_reply_to":"0c04c9ea_9b83eff9","updated":"2021-11-22 16:26:31.000000000","message":"Done","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6970a9ae6ebc42604f8bef89d12f165a0cf1c4d0","unresolved":true,"context_lines":[{"line_number":1224,"context_line":"        reported \u003d {}"},{"line_number":1225,"context_line":"        _placement \u003d self._ovn_client._placement_extension"},{"line_number":1226,"context_line":"        for ch_name, ch_rps in (_placement.chassis.items()):"},{"line_number":1227,"context_line":"            for device in ch_rps[const.RP_BANDWIDTHS].keys():"},{"line_number":1228,"context_line":"                hostname \u003d _placement.get_chassis_hostname(ch_name, device)"},{"line_number":1229,"context_line":"                if not hostname:"},{"line_number":1230,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":23,"id":"b63bd11e_16645c25","line":1227,"range":{"start_line":1227,"start_character":53,"end_line":1227,"end_character":60},"updated":"2021-11-19 15:12:03.000000000","message":"This is implicit when looping over dict view. You don\u0027t need .keys()","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f1bdf003d39c4bd81d9c61e4926300265c8fc5cc","unresolved":false,"context_lines":[{"line_number":1224,"context_line":"        reported \u003d {}"},{"line_number":1225,"context_line":"        _placement \u003d self._ovn_client._placement_extension"},{"line_number":1226,"context_line":"        for ch_name, ch_rps in (_placement.chassis.items()):"},{"line_number":1227,"context_line":"            for device in ch_rps[const.RP_BANDWIDTHS].keys():"},{"line_number":1228,"context_line":"                hostname \u003d _placement.get_chassis_hostname(ch_name, device)"},{"line_number":1229,"context_line":"                if not hostname:"},{"line_number":1230,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":23,"id":"d04ce44e_32c48c2b","line":1227,"range":{"start_line":1227,"start_character":53,"end_line":1227,"end_character":60},"in_reply_to":"b63bd11e_16645c25","updated":"2021-11-22 16:26:31.000000000","message":"Right!","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6970a9ae6ebc42604f8bef89d12f165a0cf1c4d0","unresolved":true,"context_lines":[{"line_number":1241,"context_line":"        elif len(reported) \u003e 1:"},{"line_number":1242,"context_line":"            LOG.error(\u0027Several chassis reported the requested resource \u0027"},{"line_number":1243,"context_line":"                      \u0027provider: %s\u0027, reported)"},{"line_number":1244,"context_line":"            return False"},{"line_number":1245,"context_line":"        else:"},{"line_number":1246,"context_line":"            return False"},{"line_number":1247,"context_line":""},{"line_number":1248,"context_line":""},{"line_number":1249,"context_line":"def get_agents(self, context, filters\u003dNone, fields\u003dNone, _driver\u003dNone):"}],"source_content_type":"text/x-python","patch_set":23,"id":"bdcf72f7_8a3d1190","line":1246,"range":{"start_line":1244,"start_character":0,"end_line":1246,"end_character":24},"updated":"2021-11-19 15:12:03.000000000","message":"nit: Just return False on indentation with the \"if\" is enough","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f1bdf003d39c4bd81d9c61e4926300265c8fc5cc","unresolved":false,"context_lines":[{"line_number":1241,"context_line":"        elif len(reported) \u003e 1:"},{"line_number":1242,"context_line":"            LOG.error(\u0027Several chassis reported the requested resource \u0027"},{"line_number":1243,"context_line":"                      \u0027provider: %s\u0027, reported)"},{"line_number":1244,"context_line":"            return False"},{"line_number":1245,"context_line":"        else:"},{"line_number":1246,"context_line":"            return False"},{"line_number":1247,"context_line":""},{"line_number":1248,"context_line":""},{"line_number":1249,"context_line":"def get_agents(self, context, filters\u003dNone, fields\u003dNone, _driver\u003dNone):"}],"source_content_type":"text/x-python","patch_set":23,"id":"3ec8bd53_8f50cbbb","line":1246,"range":{"start_line":1244,"start_character":0,"end_line":1246,"end_character":24},"in_reply_to":"bdcf72f7_8a3d1190","updated":"2021-11-22 16:26:31.000000000","message":"Right!","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"613d237466f5e9592cadca9eebe2133ac7a8c8b7","unresolved":true,"context_lines":[{"line_number":1327,"context_line":"        except KeyError:"},{"line_number":1328,"context_line":"            return False"},{"line_number":1329,"context_line":""},{"line_number":1330,"context_line":"        reported \u003d collections.defaultdict(list)"},{"line_number":1331,"context_line":"        _placement \u003d self._ovn_client.placement_extension"},{"line_number":1332,"context_line":"        for ch_name, state in _placement.get_chassis_config().items():"},{"line_number":1333,"context_line":"            for device in state._rp_bandwidths:"}],"source_content_type":"text/x-python","patch_set":31,"id":"890ccf36_a50e9a39","line":1330,"range":{"start_line":1330,"start_character":43,"end_line":1330,"end_character":47},"updated":"2022-07-13 20:28:32.000000000","message":"I don\u0027t understand the meaning of the list. On L1344 we append to this list but the only place where the list is actually used is on L1353, where we just return False later. That\u0027s the only reason we need to iterate twice over fitting resource providers.\n\nIs the reason behind storing it the list just to produce the full list of chassis that reported the resource provider?","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"49db48308dcafc0aa5fd18965d9c38e3d046849e","unresolved":false,"context_lines":[{"line_number":1327,"context_line":"        except KeyError:"},{"line_number":1328,"context_line":"            return False"},{"line_number":1329,"context_line":""},{"line_number":1330,"context_line":"        reported \u003d collections.defaultdict(list)"},{"line_number":1331,"context_line":"        _placement \u003d self._ovn_client.placement_extension"},{"line_number":1332,"context_line":"        for ch_name, state in _placement.get_chassis_config().items():"},{"line_number":1333,"context_line":"            for device in state._rp_bandwidths:"}],"source_content_type":"text/x-python","patch_set":31,"id":"1d2f9827_f3e146a5","line":1330,"range":{"start_line":1330,"start_character":43,"end_line":1330,"end_character":47},"in_reply_to":"049e509c_c7a68925","updated":"2022-07-29 10:14:05.000000000","message":"Done","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2482e25c417389b55172505822532dfa100d01cb","unresolved":true,"context_lines":[{"line_number":1327,"context_line":"        except KeyError:"},{"line_number":1328,"context_line":"            return False"},{"line_number":1329,"context_line":""},{"line_number":1330,"context_line":"        reported \u003d collections.defaultdict(list)"},{"line_number":1331,"context_line":"        _placement \u003d self._ovn_client.placement_extension"},{"line_number":1332,"context_line":"        for ch_name, state in _placement.get_chassis_config().items():"},{"line_number":1333,"context_line":"            for device in state._rp_bandwidths:"}],"source_content_type":"text/x-python","patch_set":31,"id":"049e509c_c7a68925","line":1330,"range":{"start_line":1330,"start_character":43,"end_line":1330,"end_character":47},"in_reply_to":"890ccf36_a50e9a39","updated":"2022-07-26 13:31:11.000000000","message":"Right, good appreciation. This is needed both in check in L1347 and L1353. It is needed to have one and only one compute responsible of this resource provider. This is why we store the chassis that have reported this RP:\n- If there is only one, we report this chassis.\n- If there are more than one, we report an error. This must not happen.\n- If there is none (that could happen), we just return False (no error).\n\nThis is replicating what is done in the ML2 mech agent: https://github.com/openstack/neutron/blob/8ab5ee1d174388c9ae31f083ec656f6f95adcc14/neutron/plugins/ml2/drivers/mech_agent.py#L238-L260","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"29061d906b66ff0ef92f288dce073ee40087def4","unresolved":true,"context_lines":[{"line_number":1356,"context_line":"                LOG.error(\u0027Several chassis reported the requested resource \u0027"},{"line_number":1357,"context_line":"                          \u0027provider: %s\u0027, rps)"},{"line_number":1358,"context_line":"                return False"},{"line_number":1359,"context_line":"            return False"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":""},{"line_number":1362,"context_line":"def get_agents(self, context, filters\u003dNone, fields\u003dNone, _driver\u003dNone):"}],"source_content_type":"text/x-python","patch_set":31,"id":"ebe431fc_7d215167","line":1359,"updated":"2022-07-18 10:49:55.000000000","message":"why You need for loop as You always only iterate over firts item from the \"reported\" dict?","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"49db48308dcafc0aa5fd18965d9c38e3d046849e","unresolved":false,"context_lines":[{"line_number":1356,"context_line":"                LOG.error(\u0027Several chassis reported the requested resource \u0027"},{"line_number":1357,"context_line":"                          \u0027provider: %s\u0027, rps)"},{"line_number":1358,"context_line":"                return False"},{"line_number":1359,"context_line":"            return False"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":""},{"line_number":1362,"context_line":"def get_agents(self, context, filters\u003dNone, fields\u003dNone, _driver\u003dNone):"}],"source_content_type":"text/x-python","patch_set":31,"id":"018ab31d_a8d698c7","line":1359,"in_reply_to":"1c955150_ff4cc3bc","updated":"2022-07-29 10:14:05.000000000","message":"Done","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2482e25c417389b55172505822532dfa100d01cb","unresolved":true,"context_lines":[{"line_number":1356,"context_line":"                LOG.error(\u0027Several chassis reported the requested resource \u0027"},{"line_number":1357,"context_line":"                          \u0027provider: %s\u0027, rps)"},{"line_number":1358,"context_line":"                return False"},{"line_number":1359,"context_line":"            return False"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":""},{"line_number":1362,"context_line":"def get_agents(self, context, filters\u003dNone, fields\u003dNone, _driver\u003dNone):"}],"source_content_type":"text/x-python","patch_set":31,"id":"1c955150_ff4cc3bc","line":1359,"in_reply_to":"ebe431fc_7d215167","updated":"2022-07-26 13:31:11.000000000","message":"Right, \"reported\" dictionary will have zero or one key (L1344).\n\nTo be honest, we can improve this logic but what I want now is to mimic https://github.com/openstack/neutron/blob/8ab5ee1d174388c9ae31f083ec656f6f95adcc14/neutron/plugins/ml2/drivers/mech_agent.py#L197-L260","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"4b0bec74583e5c99db4042eccdf08e263cd9d99a","unresolved":true,"context_lines":[{"line_number":1341,"context_line":"                    namespace\u003duuid_ns, host\u003dhostname, device\u003ddevice)"},{"line_number":1342,"context_line":"                for group, rp in allocation.items():"},{"line_number":1343,"context_line":"                    if device_rp_uuid \u003d\u003d uuid.UUID(rp):"},{"line_number":1344,"context_line":"                        reported[group].append((ch_name, state))"},{"line_number":1345,"context_line":""},{"line_number":1346,"context_line":"        for group, states in reported.items():"},{"line_number":1347,"context_line":"            if len(states) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":32,"id":"84688821_a6a79216","line":1344,"updated":"2022-08-08 11:57:18.000000000","message":"Just qq, are we sure that atleast we would have one item in reported collection, right? just to be sure that for under this line will iterate atleas once.","commit_id":"018f318e0718153707df29aae149081c333a3d30"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e00fb70844966961d3b8352dbebc58adac35a5d2","unresolved":true,"context_lines":[{"line_number":1341,"context_line":"                    namespace\u003duuid_ns, host\u003dhostname, device\u003ddevice)"},{"line_number":1342,"context_line":"                for group, rp in allocation.items():"},{"line_number":1343,"context_line":"                    if device_rp_uuid \u003d\u003d uuid.UUID(rp):"},{"line_number":1344,"context_line":"                        reported[group].append((ch_name, state))"},{"line_number":1345,"context_line":""},{"line_number":1346,"context_line":"        for group, states in reported.items():"},{"line_number":1347,"context_line":"            if len(states) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":32,"id":"d64191bb_5ee38e4d","line":1344,"in_reply_to":"84688821_a6a79216","updated":"2022-08-08 13:28:03.000000000","message":"No, this could be empty. In this case this method should return False. It is working because is returning None, but we should explicitly return False.","commit_id":"018f318e0718153707df29aae149081c333a3d30"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3f6da65bece8233ae5ce1ca1a6c02099c2b47325","unresolved":false,"context_lines":[{"line_number":1341,"context_line":"                    namespace\u003duuid_ns, host\u003dhostname, device\u003ddevice)"},{"line_number":1342,"context_line":"                for group, rp in allocation.items():"},{"line_number":1343,"context_line":"                    if device_rp_uuid \u003d\u003d uuid.UUID(rp):"},{"line_number":1344,"context_line":"                        reported[group].append((ch_name, state))"},{"line_number":1345,"context_line":""},{"line_number":1346,"context_line":"        for group, states in reported.items():"},{"line_number":1347,"context_line":"            if len(states) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":32,"id":"8ad3f064_d7d637a6","line":1344,"in_reply_to":"d64191bb_5ee38e4d","updated":"2022-08-08 13:28:18.000000000","message":"Done","commit_id":"018f318e0718153707df29aae149081c333a3d30"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"50874b21c2aa66dd83295afd74934e5b7bd86731","unresolved":true,"context_lines":[{"line_number":1356,"context_line":"                LOG.error(\u0027Several chassis reported the requested resource \u0027"},{"line_number":1357,"context_line":"                          \u0027provider: %s\u0027, rps)"},{"line_number":1358,"context_line":"                return False"},{"line_number":1359,"context_line":"            return False"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"        return False"},{"line_number":1362,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"8d7c5e75_05281d4f","line":1359,"range":{"start_line":1359,"start_character":12,"end_line":1359,"end_character":24},"updated":"2022-08-08 22:43:59.000000000","message":"Why do we need this line? Test cases test_responsible_for_ports_allocation_no_chassis and test_responsible_for_ports_allocation_hostname_not_present hit line 1361, whereas cases test_responsible_for_ports_allocation and test_responsible_for_ports_allocation_multiple_chassis hit lines 1352 and 1358 respectively","commit_id":"4f1e60909b4d1edd7a7a1646698613c76551ac9f"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"367f3a342883d292ba44eeb6e5309afa8d2efe36","unresolved":true,"context_lines":[{"line_number":1356,"context_line":"                LOG.error(\u0027Several chassis reported the requested resource \u0027"},{"line_number":1357,"context_line":"                          \u0027provider: %s\u0027, rps)"},{"line_number":1358,"context_line":"                return False"},{"line_number":1359,"context_line":"            return False"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"        return False"},{"line_number":1362,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"c8775514_02e5d49d","line":1359,"range":{"start_line":1359,"start_character":12,"end_line":1359,"end_character":24},"in_reply_to":"8d7c5e75_05281d4f","updated":"2022-08-08 22:46:07.000000000","message":"Do we need another test case? Or we don\u0027t need this line?","commit_id":"4f1e60909b4d1edd7a7a1646698613c76551ac9f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c52f5bd0896a29e341400f9f71c4c9b065180c95","unresolved":false,"context_lines":[{"line_number":1356,"context_line":"                LOG.error(\u0027Several chassis reported the requested resource \u0027"},{"line_number":1357,"context_line":"                          \u0027provider: %s\u0027, rps)"},{"line_number":1358,"context_line":"                return False"},{"line_number":1359,"context_line":"            return False"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"        return False"},{"line_number":1362,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"f397aec9_ac0f44c4","line":1359,"range":{"start_line":1359,"start_character":12,"end_line":1359,"end_character":24},"in_reply_to":"c8775514_02e5d49d","updated":"2022-08-09 08:18:33.000000000","message":"Right, if a \"group\" key is added to \"reported\", \"states\" will have at least 1 item. It is harmless but I\u0027ll remove it.","commit_id":"4f1e60909b4d1edd7a7a1646698613c76551ac9f"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/placement.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6970a9ae6ebc42604f8bef89d12f165a0cf1c4d0","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        return {n_const.RP_BANDWIDTHS: state._rp_bandwidths,"},{"line_number":106,"context_line":"                n_const.RP_INVENTORY_DEFAULTS: state._rp_inventory_defaults,"},{"line_number":107,"context_line":"                ovn_const.RP_HYPERVISORS: state._hypervisor_rps,"},{"line_number":108,"context_line":"                \u0027host\u0027: hostname,  # This cannot match with the name provided"},{"line_number":109,"context_line":"                                   # in \"resource_provider_hypervisors\"."},{"line_number":110,"context_line":"                }"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"e5245878_592c340d","line":108,"range":{"start_line":108,"start_character":16,"end_line":108,"end_character":22},"updated":"2021-11-19 15:12:03.000000000","message":"maybe this should be a constant too","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f1bdf003d39c4bd81d9c61e4926300265c8fc5cc","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        return {n_const.RP_BANDWIDTHS: state._rp_bandwidths,"},{"line_number":106,"context_line":"                n_const.RP_INVENTORY_DEFAULTS: state._rp_inventory_defaults,"},{"line_number":107,"context_line":"                ovn_const.RP_HYPERVISORS: state._hypervisor_rps,"},{"line_number":108,"context_line":"                \u0027host\u0027: hostname,  # This cannot match with the name provided"},{"line_number":109,"context_line":"                                   # in \"resource_provider_hypervisors\"."},{"line_number":110,"context_line":"                }"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9dac0327_388a5819","line":108,"range":{"start_line":108,"start_character":16,"end_line":108,"end_character":22},"in_reply_to":"e5245878_592c340d","updated":"2021-11-22 16:26:31.000000000","message":"Done","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f1bdf003d39c4bd81d9c61e4926300265c8fc5cc","unresolved":true,"context_lines":[{"line_number":126,"context_line":"        name2uuid \u003d self._placement_extension.name2uuid()"},{"line_number":127,"context_line":"        state \u003d self._placement_extension.build_placement_state(row, name2uuid)"},{"line_number":128,"context_line":"        _send_deferred_batch(state)"},{"line_number":129,"context_line":"        self._placement_extension.add_chassis_config("},{"line_number":130,"context_line":"            row.name, _dict_chassis_config(state, row.hostname))"},{"line_number":131,"context_line":"        ch_config \u003d self._placement_extension.get_chassis_config(row.name)"},{"line_number":132,"context_line":"        LOG.debug(\u0027OVN chassis %(chassis)s Placement configuration modified: \u0027"},{"line_number":133,"context_line":"                  \u0027%(config)s\u0027, {\u0027chassis\u0027: row.name, \u0027config\u0027: ch_config})"}],"source_content_type":"text/x-python","patch_set":23,"id":"028223e1_541f4db7","line":130,"range":{"start_line":129,"start_character":8,"end_line":130,"end_character":64},"updated":"2021-11-22 16:26:31.000000000","message":"This is a BIG error. Only one worker will attend to this event. That means if we update only one worker cache, the rest of them will be unsynced.\n\nWe need to provide a mechanism similar to [1].\n\n[1]https://github.com/openstack/neutron/blob/792e2d228b174e40f3a7730af50332c902430a1f/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py#L1264-L1269","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"af9d04486c2cf6fc3e7e268377a4f8e3acb43ef6","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        name2uuid \u003d self._placement_extension.name2uuid()"},{"line_number":127,"context_line":"        state \u003d self._placement_extension.build_placement_state(row, name2uuid)"},{"line_number":128,"context_line":"        _send_deferred_batch(state)"},{"line_number":129,"context_line":"        self._placement_extension.add_chassis_config("},{"line_number":130,"context_line":"            row.name, _dict_chassis_config(state, row.hostname))"},{"line_number":131,"context_line":"        ch_config \u003d self._placement_extension.get_chassis_config(row.name)"},{"line_number":132,"context_line":"        LOG.debug(\u0027OVN chassis %(chassis)s Placement configuration modified: \u0027"},{"line_number":133,"context_line":"                  \u0027%(config)s\u0027, {\u0027chassis\u0027: row.name, \u0027config\u0027: ch_config})"}],"source_content_type":"text/x-python","patch_set":23,"id":"fcebba06_efb437dd","line":130,"range":{"start_line":129,"start_character":8,"end_line":130,"end_character":64},"in_reply_to":"028223e1_541f4db7","updated":"2022-06-13 06:33:52.000000000","message":"Done","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6970a9ae6ebc42604f8bef89d12f165a0cf1c4d0","unresolved":true,"context_lines":[{"line_number":165,"context_line":"            try:"},{"line_number":166,"context_line":"                self._driver._sb_idl.idl.notify_handler.watch_events("},{"line_number":167,"context_line":"                    [self._config_event])"},{"line_number":168,"context_line":"            except (AttributeError, TypeError):"},{"line_number":169,"context_line":"                self._enabled \u003d False"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        if not self._enabled:"}],"source_content_type":"text/x-python","patch_set":23,"id":"c4035bd5_8392a105","line":168,"range":{"start_line":168,"start_character":35,"end_line":168,"end_character":46},"updated":"2021-11-19 15:12:03.000000000","message":"Is this related to this patch?","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f1bdf003d39c4bd81d9c61e4926300265c8fc5cc","unresolved":true,"context_lines":[{"line_number":165,"context_line":"            try:"},{"line_number":166,"context_line":"                self._driver._sb_idl.idl.notify_handler.watch_events("},{"line_number":167,"context_line":"                    [self._config_event])"},{"line_number":168,"context_line":"            except (AttributeError, TypeError):"},{"line_number":169,"context_line":"                self._enabled \u003d False"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        if not self._enabled:"}],"source_content_type":"text/x-python","patch_set":23,"id":"f340919d_778c3149","line":168,"range":{"start_line":168,"start_character":35,"end_line":168,"end_character":46},"in_reply_to":"c4035bd5_8392a105","updated":"2021-11-22 16:26:31.000000000","message":"Maybe from a previous PS. I\u0027ll remove it.","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"af9d04486c2cf6fc3e7e268377a4f8e3acb43ef6","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            try:"},{"line_number":166,"context_line":"                self._driver._sb_idl.idl.notify_handler.watch_events("},{"line_number":167,"context_line":"                    [self._config_event])"},{"line_number":168,"context_line":"            except (AttributeError, TypeError):"},{"line_number":169,"context_line":"                self._enabled \u003d False"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        if not self._enabled:"}],"source_content_type":"text/x-python","patch_set":23,"id":"c99397d8_f6edef93","line":168,"range":{"start_line":168,"start_character":35,"end_line":168,"end_character":46},"in_reply_to":"f340919d_778c3149","updated":"2022-06-13 06:33:52.000000000","message":"Done","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6970a9ae6ebc42604f8bef89d12f165a0cf1c4d0","unresolved":true,"context_lines":[{"line_number":264,"context_line":"        # Placement only stores chassis with RP information."},{"line_number":265,"context_line":"        if config:"},{"line_number":266,"context_line":"            self._chassis[chassis_name] \u003d config"},{"line_number":267,"context_line":"        else:"},{"line_number":268,"context_line":"            self._chassis.pop(chassis_name, None)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def get_chassis_hostname(self, chassis_name, rp_device):"},{"line_number":271,"context_line":"        # chassis \u003d {RP_HYPERVISORS: {device1: {name: name1, uuid: uuid1}"}],"source_content_type":"text/x-python","patch_set":23,"id":"5e23fe9c_1a749ed4","line":268,"range":{"start_line":267,"start_character":0,"end_line":268,"end_character":49},"updated":"2021-11-19 15:12:03.000000000","message":"The behavior of this method becomes weird with this change. As per name of the method, it should add the config to chassis - but in case the config is empty, it removes chassis from the dict - which is opposite of what the method should be doing.","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"af9d04486c2cf6fc3e7e268377a4f8e3acb43ef6","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        # Placement only stores chassis with RP information."},{"line_number":265,"context_line":"        if config:"},{"line_number":266,"context_line":"            self._chassis[chassis_name] \u003d config"},{"line_number":267,"context_line":"        else:"},{"line_number":268,"context_line":"            self._chassis.pop(chassis_name, None)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def get_chassis_hostname(self, chassis_name, rp_device):"},{"line_number":271,"context_line":"        # chassis \u003d {RP_HYPERVISORS: {device1: {name: name1, uuid: uuid1}"}],"source_content_type":"text/x-python","patch_set":23,"id":"e4165a59_d21878c6","line":268,"range":{"start_line":267,"start_character":0,"end_line":268,"end_character":49},"in_reply_to":"45f5b5e3_ae84538f","updated":"2022-06-13 06:33:52.000000000","message":"Done","commit_id":"814720854ca13b254f86709981dea2f57533c79c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f1bdf003d39c4bd81d9c61e4926300265c8fc5cc","unresolved":true,"context_lines":[{"line_number":264,"context_line":"        # Placement only stores chassis with RP information."},{"line_number":265,"context_line":"        if config:"},{"line_number":266,"context_line":"            self._chassis[chassis_name] \u003d config"},{"line_number":267,"context_line":"        else:"},{"line_number":268,"context_line":"            self._chassis.pop(chassis_name, None)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def get_chassis_hostname(self, chassis_name, rp_device):"},{"line_number":271,"context_line":"        # chassis \u003d {RP_HYPERVISORS: {device1: {name: name1, uuid: uuid1}"}],"source_content_type":"text/x-python","patch_set":23,"id":"45f5b5e3_ae84538f","line":268,"range":{"start_line":267,"start_character":0,"end_line":268,"end_character":49},"in_reply_to":"5e23fe9c_1a749ed4","updated":"2021-11-22 16:26:31.000000000","message":"Right, \"add\" always means addition. Maybe \"update\" is a better word (and adding some documentation to the method).","commit_id":"814720854ca13b254f86709981dea2f57533c79c"}],"neutron/plugins/ml2/managers.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"613d237466f5e9592cadca9eebe2133ac7a8c8b7","unresolved":true,"context_lines":[{"line_number":957,"context_line":"                                   \u0027binding_levels\u0027: context.binding_levels})"},{"line_number":958,"context_line":"                        return True"},{"line_number":959,"context_line":"            except Exception as exc:"},{"line_number":960,"context_line":"                LOG.exception(\u0027Mechanism driver %s failed in bind_port, \u0027"},{"line_number":961,"context_line":"                              \u0027reason: %s\u0027, driver.name, exc)"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"    def _infer_driver_from_allocation(self, context):"}],"source_content_type":"text/x-python","patch_set":31,"id":"acd14fe0_feeea902","line":960,"updated":"2022-07-13 20:28:32.000000000","message":"Isn\u0027t this redundant? The exception trace contains at the end the message from the exception, doesn\u0027t it?","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"49db48308dcafc0aa5fd18965d9c38e3d046849e","unresolved":false,"context_lines":[{"line_number":957,"context_line":"                                   \u0027binding_levels\u0027: context.binding_levels})"},{"line_number":958,"context_line":"                        return True"},{"line_number":959,"context_line":"            except Exception as exc:"},{"line_number":960,"context_line":"                LOG.exception(\u0027Mechanism driver %s failed in bind_port, \u0027"},{"line_number":961,"context_line":"                              \u0027reason: %s\u0027, driver.name, exc)"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"    def _infer_driver_from_allocation(self, context):"}],"source_content_type":"text/x-python","patch_set":31,"id":"624a480d_7d22c03e","line":960,"in_reply_to":"3cbdf5ef_635ca3fa","updated":"2022-07-29 10:14:05.000000000","message":"Done","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2482e25c417389b55172505822532dfa100d01cb","unresolved":true,"context_lines":[{"line_number":957,"context_line":"                                   \u0027binding_levels\u0027: context.binding_levels})"},{"line_number":958,"context_line":"                        return True"},{"line_number":959,"context_line":"            except Exception as exc:"},{"line_number":960,"context_line":"                LOG.exception(\u0027Mechanism driver %s failed in bind_port, \u0027"},{"line_number":961,"context_line":"                              \u0027reason: %s\u0027, driver.name, exc)"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"    def _infer_driver_from_allocation(self, context):"}],"source_content_type":"text/x-python","patch_set":31,"id":"3cbdf5ef_635ca3fa","line":960,"in_reply_to":"9958424a_8268cecc","updated":"2022-07-26 13:31:11.000000000","message":"Yeah, I added this during the debugging, to check this variable in a pdb session.\n\nI\u0027ll remove it.","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"29061d906b66ff0ef92f288dce073ee40087def4","unresolved":true,"context_lines":[{"line_number":957,"context_line":"                                   \u0027binding_levels\u0027: context.binding_levels})"},{"line_number":958,"context_line":"                        return True"},{"line_number":959,"context_line":"            except Exception as exc:"},{"line_number":960,"context_line":"                LOG.exception(\u0027Mechanism driver %s failed in bind_port, \u0027"},{"line_number":961,"context_line":"                              \u0027reason: %s\u0027, driver.name, exc)"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"    def _infer_driver_from_allocation(self, context):"}],"source_content_type":"text/x-python","patch_set":31,"id":"9958424a_8268cecc","line":960,"in_reply_to":"acd14fe0_feeea902","updated":"2022-07-18 10:49:55.000000000","message":"+1","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"}],"neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"613d237466f5e9592cadca9eebe2133ac7a8c8b7","unresolved":true,"context_lines":[{"line_number":2534,"context_line":"            self.assertFalse("},{"line_number":2535,"context_line":"                self.mech_driver.responsible_for_ports_allocation(context))"},{"line_number":2536,"context_line":"        mock_log.error.assert_called_once_with("},{"line_number":2537,"context_line":"            \u0027Several chassis reported the requested resource provider: %s\u0027,"},{"line_number":2538,"context_line":"            mock.ANY)"},{"line_number":2539,"context_line":""},{"line_number":2540,"context_line":"    def test_responsible_for_ports_allocation_no_chassis(self):"}],"source_content_type":"text/x-python","patch_set":31,"id":"736a176c_58e42f4d","line":2537,"updated":"2022-07-13 20:28:32.000000000","message":"I don\u0027t like we match on the error string, the fact error was called should be enough to make sure we handle error. If we make a change to the provided string in the prod code, it would require change in unit tests, which doesn\u0027t make much sense.","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2482e25c417389b55172505822532dfa100d01cb","unresolved":true,"context_lines":[{"line_number":2534,"context_line":"            self.assertFalse("},{"line_number":2535,"context_line":"                self.mech_driver.responsible_for_ports_allocation(context))"},{"line_number":2536,"context_line":"        mock_log.error.assert_called_once_with("},{"line_number":2537,"context_line":"            \u0027Several chassis reported the requested resource provider: %s\u0027,"},{"line_number":2538,"context_line":"            mock.ANY)"},{"line_number":2539,"context_line":""},{"line_number":2540,"context_line":"    def test_responsible_for_ports_allocation_no_chassis(self):"}],"source_content_type":"text/x-python","patch_set":31,"id":"9a33d605_caa7fc10","line":2537,"in_reply_to":"736a176c_58e42f4d","updated":"2022-07-26 13:31:11.000000000","message":"Right, actually we only report one error message in this method.\n\nI\u0027ll update that.","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"49db48308dcafc0aa5fd18965d9c38e3d046849e","unresolved":false,"context_lines":[{"line_number":2534,"context_line":"            self.assertFalse("},{"line_number":2535,"context_line":"                self.mech_driver.responsible_for_ports_allocation(context))"},{"line_number":2536,"context_line":"        mock_log.error.assert_called_once_with("},{"line_number":2537,"context_line":"            \u0027Several chassis reported the requested resource provider: %s\u0027,"},{"line_number":2538,"context_line":"            mock.ANY)"},{"line_number":2539,"context_line":""},{"line_number":2540,"context_line":"    def test_responsible_for_ports_allocation_no_chassis(self):"}],"source_content_type":"text/x-python","patch_set":31,"id":"0eedec8e_c3f7e8ec","line":2537,"in_reply_to":"9a33d605_caa7fc10","updated":"2022-07-29 10:14:05.000000000","message":"Done","commit_id":"cab0e566a4deb42910be32b932b1793630eaf016"}]}
