)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6cdf7f1e111ca5a1b485c8585a08391588c3b71e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ee584b79_f42c9b0e","updated":"2026-10-16 14:44:48.000000000","message":"Just an incorrect comment","commit_id":"94376de900440659ebc4989dbcf35b1b1d4bc40c"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"6bea1e0be7be1c647fbec3c669325001eee5d458","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ce81d4b0_debf262f","updated":"2026-10-21 17:24:07.000000000","message":"LGTM","commit_id":"9a13dfbc9c536142bea61a6f12abdf0bb91d6344"},{"author":{"_account_id":35133,"name":"Jan Jasek","email":"jjasek@redhat.com","username":"janjasek"},"change_message_id":"02bdad22e0273bd3aa3978e5903f5d5226da2fa8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3ba73afa_2c2f5ed3","updated":"2026-10-19 12:37:17.000000000","message":"Looks good to me, thanks!","commit_id":"9a13dfbc9c536142bea61a6f12abdf0bb91d6344"}],"openstack_dashboard/api/neutron.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b5a2ce87cf89a247254d14cc997d8b1b3c0c4410","unresolved":true,"context_lines":[{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"def _subnet_list_for_networks(request, networks):"},{"line_number":1227,"context_line":"    net_ids \u003d sorted(n[\u0027id\u0027] for n in networks if n.get(\u0027subnet_ids\u0027))"},{"line_number":1228,"context_line":"    if len(net_ids) \u003e _SUBNET_FILTER_MAX_NETWORKS:"},{"line_number":1229,"context_line":"        return subnet_list(request)"},{"line_number":1230,"context_line":"    subnets \u003d []"},{"line_number":1231,"context_line":"    for i in range(0, len(net_ids), _SUBNET_FILTER_CHUNK):"}],"source_content_type":"text/x-python","patch_set":2,"id":"91a64794_ef111942","line":1228,"range":{"start_line":1228,"start_character":20,"end_line":1228,"end_character":21},"updated":"2026-10-14 21:09:03.000000000","message":"is this supposed to be \u003c ? Maybe I\u0027m mis-understanding","commit_id":"6b19277d0042f1e86c0902a3377e6c3de8b77f82"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"34abbe0f633abe546b615579c4f973a9f36a634a","unresolved":true,"context_lines":[{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"def _subnet_list_for_networks(request, networks):"},{"line_number":1227,"context_line":"    net_ids \u003d sorted(n[\u0027id\u0027] for n in networks if n.get(\u0027subnet_ids\u0027))"},{"line_number":1228,"context_line":"    if len(net_ids) \u003e _SUBNET_FILTER_MAX_NETWORKS:"},{"line_number":1229,"context_line":"        return subnet_list(request)"},{"line_number":1230,"context_line":"    subnets \u003d []"},{"line_number":1231,"context_line":"    for i in range(0, len(net_ids), _SUBNET_FILTER_CHUNK):"}],"source_content_type":"text/x-python","patch_set":2,"id":"511a4a73_55a4157c","line":1228,"range":{"start_line":1228,"start_character":20,"end_line":1228,"end_character":21},"in_reply_to":"2e2c4c1f_65da10a5","updated":"2026-10-15 17:50:58.000000000","message":"Ok, I guess it\u0027s just the wording in the comment that threw me off.\n\nBut I guess that raises the question - if we are making one request for 500 subnets, why are we making multiple for 90? The caller can handle either.","commit_id":"6b19277d0042f1e86c0902a3377e6c3de8b77f82"},{"author":{"_account_id":37170,"name":"Enrico Kern","email":"enrico.kern@stackxperts.com","username":"flyersa","status":"Uponu GmbH"},"change_message_id":"d1db3b84e521e7467f1fc13920265454d6bb97e5","unresolved":true,"context_lines":[{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"def _subnet_list_for_networks(request, networks):"},{"line_number":1227,"context_line":"    net_ids \u003d sorted(n[\u0027id\u0027] for n in networks if n.get(\u0027subnet_ids\u0027))"},{"line_number":1228,"context_line":"    if len(net_ids) \u003e _SUBNET_FILTER_MAX_NETWORKS:"},{"line_number":1229,"context_line":"        return subnet_list(request)"},{"line_number":1230,"context_line":"    subnets \u003d []"},{"line_number":1231,"context_line":"    for i in range(0, len(net_ids), _SUBNET_FILTER_CHUNK):"}],"source_content_type":"text/x-python","patch_set":2,"id":"8ba046ee_5450824b","line":1228,"in_reply_to":"511a4a73_55a4157c","updated":"2026-10-16 09:22:31.000000000","message":"Hello Brian,\n\nyou are right, the split into chunks of 40 is not needed. Relevant is that the subnet call only returns the subnets of the visible networks, as this has the performance impact the patch fixes. Example for our environment, admin networks page:\n\n- current: Horizon asks neutron for every subnet of all 571 networks, then displays the subnets of the 20 on the page and throws the rest away.\n- with 1010155: Horizon asks only for the subnets of those 20 networks visible on the current page.\n\nI adjusted the patch accordingly, patch set 3 now does a single request.","commit_id":"6b19277d0042f1e86c0902a3377e6c3de8b77f82"},{"author":{"_account_id":37170,"name":"Enrico Kern","email":"enrico.kern@stackxperts.com","username":"flyersa","status":"Uponu GmbH"},"change_message_id":"61c7211f94ca37ebd5e49b2c2a87bf678c18343a","unresolved":true,"context_lines":[{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"def _subnet_list_for_networks(request, networks):"},{"line_number":1227,"context_line":"    net_ids \u003d sorted(n[\u0027id\u0027] for n in networks if n.get(\u0027subnet_ids\u0027))"},{"line_number":1228,"context_line":"    if len(net_ids) \u003e _SUBNET_FILTER_MAX_NETWORKS:"},{"line_number":1229,"context_line":"        return subnet_list(request)"},{"line_number":1230,"context_line":"    subnets \u003d []"},{"line_number":1231,"context_line":"    for i in range(0, len(net_ids), _SUBNET_FILTER_CHUNK):"}],"source_content_type":"text/x-python","patch_set":2,"id":"2e2c4c1f_65da10a5","line":1228,"range":{"start_line":1228,"start_character":20,"end_line":1228,"end_character":21},"in_reply_to":"91a64794_ef111942","updated":"2026-10-15 06:46:01.000000000","message":"no it doing what was specified in the comment for the patch, \"Above 100 networks\" (_SUBNET_FILTER_MAX_NETWORKS) it returns the unfiltered request as this is faster","commit_id":"6b19277d0042f1e86c0902a3377e6c3de8b77f82"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6cdf7f1e111ca5a1b485c8585a08391588c3b71e","unresolved":true,"context_lines":[{"line_number":1216,"context_line":"    return update_pagination(nets, page_data)"},{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"# Up to this many networks, network_list() asks Neutron only for the"},{"line_number":1220,"context_line":"# subnets of the networks it returns, in one request. For more networks"},{"line_number":1221,"context_line":"# it lists all subnets like before, so the URL stays short."},{"line_number":1222,"context_line":"_SUBNET_FILTER_MAX_NETWORKS \u003d 100"}],"source_content_type":"text/x-python","patch_set":3,"id":"4ebff8bb_5d51eeb1","line":1219,"range":{"start_line":1219,"start_character":28,"end_line":1219,"end_character":40},"updated":"2026-10-16 14:44:48.000000000","message":"s/subnet_list","commit_id":"94376de900440659ebc4989dbcf35b1b1d4bc40c"},{"author":{"_account_id":37170,"name":"Enrico Kern","email":"enrico.kern@stackxperts.com","username":"flyersa","status":"Uponu GmbH"},"change_message_id":"d0ef462661a0b81160d6cc422113dc76375612fa","unresolved":false,"context_lines":[{"line_number":1216,"context_line":"    return update_pagination(nets, page_data)"},{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"# Up to this many networks, network_list() asks Neutron only for the"},{"line_number":1220,"context_line":"# subnets of the networks it returns, in one request. For more networks"},{"line_number":1221,"context_line":"# it lists all subnets like before, so the URL stays short."},{"line_number":1222,"context_line":"_SUBNET_FILTER_MAX_NETWORKS \u003d 100"}],"source_content_type":"text/x-python","patch_set":3,"id":"060469c0_b607b556","line":1219,"in_reply_to":"4ebff8bb_5d51eeb1","updated":"2026-10-16 17:22:41.000000000","message":"Thanks Brian, fixed in patch set 4, the comment now names subnet_list().","commit_id":"94376de900440659ebc4989dbcf35b1b1d4bc40c"}]}
