)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e585421d5ca7832779ab44547005caa38bda6b00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3617d290_df2f7044","updated":"2026-02-17 13:54:55.000000000","message":"recheck neutron-functional","commit_id":"3301651bf05f1711a5f2029a4b9a791313adf53c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"714426003d8de87006435441262dc49799ec2a2d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b350f2ef_f041ea61","updated":"2026-02-17 13:14:59.000000000","message":"recheck unrelated failure","commit_id":"3301651bf05f1711a5f2029a4b9a791313adf53c"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"5a5c1f474f8dd637909b58ef238bfb60cb3718d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"081e2d0d_df39ce00","updated":"2026-02-18 15:48:30.000000000","message":"The first failure before the recheck on patch set 5 looks specifically related to the network_id addition (https://44e7584b88c7076a326a-1e7408434efc5127489aebb82c7dd76e.ssl.cf2.rackcdn.com/openstack/7a70e7fc4c074d8aa50a16a53111f7cc/testr_results.html). The difference between the two runs with the smae code makes me worry about the change in behavior and a possible race condition.\n\nIn general, I feel like if we want to always have network-id added to external_ids, the proper way to do it would be to actually require it when calling `add_dhcp_options()`. Having to go through and verify every call of add_dhcp_options() first calls `_get_ovn_dhcp_options()` and passes that through feels brittle to me.","commit_id":"ba75e06075fe6e4b3d8ceff4edb3a0fd83355ba3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0565bf0ef9fc69067275881bdbe4ee803858c3e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"80fbe2d8_b00d8e83","updated":"2026-02-18 12:28:47.000000000","message":"recheck neutron-functional","commit_id":"ba75e06075fe6e4b3d8ceff4edb3a0fd83355ba3"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"2f54bb2c107479283b28c8a22622ef126c3178ce","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a578e1ed_258c6675","in_reply_to":"0427ec75_cd93b325","updated":"2026-02-19 15:02:52.000000000","message":"It\u0027s more work, but I think if it\u0027s something that we want to ensure is always set, then that\u0027s the best place to do it. You could theoretically handle it all in `add_dhcp_options()` w/o modifying the underlying command, though the only benefit would be not having to mess with the unit tests in `neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_commands.py` which I am prone to think shouldn\u0027t exist anyway. :)","commit_id":"ba75e06075fe6e4b3d8ceff4edb3a0fd83355ba3"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e65d3a8113067a98a14b2f1f7651c88e2830759e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0427ec75_cd93b325","in_reply_to":"081e2d0d_df39ce00","updated":"2026-02-19 13:48:25.000000000","message":"So we should add the network_id to the AddDHCPOptionsCommand? If I do that, I\u0027d do the change for the subnet_id then as well.","commit_id":"ba75e06075fe6e4b3d8ceff4edb3a0fd83355ba3"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"c02f46f72e33426e1024dff0c24f9b5b002853ee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f5dbeb4e_d79203cd","in_reply_to":"9da0dc47_4443f49c","updated":"2026-02-19 18:51:50.000000000","message":"Since the required subnet_id arg actually isn\u0027t used to set the subnet-id (which is insane), I won\u0027t complain too much that you don\u0027t go in and fix all of the sins of the past to add the network_id argument.","commit_id":"ba75e06075fe6e4b3d8ceff4edb3a0fd83355ba3"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"01dc2919abee67d7996c359cef828cba789225f7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9da0dc47_4443f49c","in_reply_to":"a578e1ed_258c6675","updated":"2026-02-19 16:41:48.000000000","message":"I agree would be cleaner but imho it\u0027s not worth the work. I think the functional tests should be those that validate we always set it. We haven\u0027t seen any issues with missing subnet-id in the past, I think it\u0027s safe to do it this way.\n\nGood point about the CI passing. I found out that the tests were not triggered because they are executed later with --concurrency 1 and the previous stestr run failed because of unrelated issue and with the current PS the tests should always fail, if executed.","commit_id":"ba75e06075fe6e4b3d8ceff4edb3a0fd83355ba3"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c33778db6656ffe3ef1e7262e275d57aa6df774","unresolved":true,"context_lines":[{"line_number":1140,"context_line":"            except KeyError:"},{"line_number":1141,"context_line":"                LOG.error(\u0027DHCP_Options %s have no subnet_id\u0027, dhcp_options)"},{"line_number":1142,"context_line":"                continue"},{"line_number":1143,"context_line":"            subnet \u003d self._ovn_client._plugin.get_subnet("},{"line_number":1144,"context_line":"                admin_context, subnet_id)"},{"line_number":1145,"context_line":"            cmds.append(self._nb_idl.db_set("},{"line_number":1146,"context_line":"                \u0027DHCP_Options\u0027,"},{"line_number":1147,"context_line":"                dhcp_options.uuid,"}],"source_content_type":"text/x-python","patch_set":3,"id":"a538dd7c_7a488366","line":1144,"range":{"start_line":1143,"start_character":11,"end_line":1144,"end_character":41},"updated":"2026-02-13 15:34:34.000000000","message":"That\u0027s an slow operation (Neutron DB access). I would suggest to:\n* First collect all subnet IDs needed in a first loop.\n* Retrieve all the subnets using `get_subnets()`.\n\nThe second improvement would be to create a specific classmethod for `neutron.objects.subnet.Subnet` that returns a dictionary with {subnet_id: network_id}, passing a set of subnet IDs (same as `get_subnets()` but lighter).","commit_id":"cbaaa8126a25ce485d04988856eee5e9a3c1465c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"53eae6809eb81adaaa0268575825a51a3eb3d29a","unresolved":false,"context_lines":[{"line_number":1140,"context_line":"            except KeyError:"},{"line_number":1141,"context_line":"                LOG.error(\u0027DHCP_Options %s have no subnet_id\u0027, dhcp_options)"},{"line_number":1142,"context_line":"                continue"},{"line_number":1143,"context_line":"            subnet \u003d self._ovn_client._plugin.get_subnet("},{"line_number":1144,"context_line":"                admin_context, subnet_id)"},{"line_number":1145,"context_line":"            cmds.append(self._nb_idl.db_set("},{"line_number":1146,"context_line":"                \u0027DHCP_Options\u0027,"},{"line_number":1147,"context_line":"                dhcp_options.uuid,"}],"source_content_type":"text/x-python","patch_set":3,"id":"64ec57bf_b1990a3f","line":1144,"range":{"start_line":1143,"start_character":11,"end_line":1144,"end_character":41},"in_reply_to":"a538dd7c_7a488366","updated":"2026-02-13 16:57:45.000000000","message":"Good point. Thanks.","commit_id":"cbaaa8126a25ce485d04988856eee5e9a3c1465c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e585421d5ca7832779ab44547005caa38bda6b00","unresolved":true,"context_lines":[{"line_number":1122,"context_line":""},{"line_number":1123,"context_line":"        raise periodics.NeverAgain()"},{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"    @has_lock_periodic("},{"line_number":1126,"context_line":"        periodic_run_limit\u003dovn_const.MAINTENANCE_TASK_RETRY_LIMIT,"},{"line_number":1127,"context_line":"        spacing\u003dovn_const.MAINTENANCE_ONE_RUN_TASK_SPACING,"},{"line_number":1128,"context_line":"        run_immediately\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"0d0d08d3_f9b87d3d","line":1125,"range":{"start_line":1125,"start_character":4,"end_line":1125,"end_character":23},"updated":"2026-02-17 13:54:55.000000000","message":"nit: We need to specify when the method will be removed. For example, now in G cycle, we can consider removing it in 2028.1:\n```\n# TODO(jlibosvar): to remove in G+4 (2028.1) cycle (2nd next SLURP release)\n```","commit_id":"3301651bf05f1711a5f2029a4b9a791313adf53c"}]}
