)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30534,"name":"Marcin Wilk","email":"marcin.wilk@canonical.com","username":"wilkmar"},"change_message_id":"7f09b938ca6931b92620f30ec5061bc98de4a843","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"546d2777_6567f6a9","updated":"2026-07-08 15:13:34.000000000","message":"I just tested the current version of the patch and it is working as expected. Thank you!","commit_id":"c0389e0a76cd02c5999cba899e020e4499e9eda1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"579e1251c9c17ab3335102fb21d16700ff3107d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"02cdb6e4_c63b75a5","in_reply_to":"546d2777_6567f6a9","updated":"2026-07-08 15:41:22.000000000","message":"Thanks for testing Marcin!","commit_id":"c0389e0a76cd02c5999cba899e020e4499e9eda1"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py":[{"author":{"_account_id":30534,"name":"Marcin Wilk","email":"marcin.wilk@canonical.com","username":"wilkmar"},"change_message_id":"f8af5891337a20ac345833f373ff3a727499e592","unresolved":true,"context_lines":[{"line_number":875,"context_line":"        if lr:"},{"line_number":876,"context_line":"            for lrp in getattr(lr, \u0027ports\u0027, []):"},{"line_number":877,"context_line":"                if (lrp.external_ids.get("},{"line_number":878,"context_line":"                        ovn_const.OVN_ROUTER_IS_EXT_GW) \u003d\u003d \u0027true\u0027 and"},{"line_number":879,"context_line":"                        getattr(lrp, \u0027ha_chassis_group\u0027, [])):"},{"line_number":880,"context_line":"                    return"},{"line_number":881,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a92239b_cb38cc43","line":878,"updated":"2026-07-06 11:42:27.000000000","message":"Thank you for submitting the patch. I tried to test it but it doesn\u0027t work well for me. The reason is that this check compares the \u0027external_ids\u0027 value to lowercase \u0027true\u0027. Based on my tests, in the NB db-\u003eLogical_Router_Port, it looks like this (\u0027True\u0027):\n\u0027external_ids        : {\"neutron:is_ext_gw\"\u003dTrue, ...\u0027. I checked the code and typically all assignments use \u0027true\u0027 except here [1], where bool-\u003estr conversion results in \u0027True\u0027 and the above condition is never met. Please have a look and verify.\n\nIt works if I change it to:\n\u0027ovn_const.OVN_ROUTER_IS_EXT_GW, \u0027\u0027).lower() \u003d\u003d \u0027true\u0027 and\u0027\n\n[1] https://opendev.org/openstack/neutron/src/branch/master/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py#L1777","commit_id":"8b59d1e47bd507d9ff6048eb2ed206927b19962c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"394182e40aacdc80e4f36f015e2a9e27efdd79ec","unresolved":false,"context_lines":[{"line_number":875,"context_line":"        if lr:"},{"line_number":876,"context_line":"            for lrp in getattr(lr, \u0027ports\u0027, []):"},{"line_number":877,"context_line":"                if (lrp.external_ids.get("},{"line_number":878,"context_line":"                        ovn_const.OVN_ROUTER_IS_EXT_GW) \u003d\u003d \u0027true\u0027 and"},{"line_number":879,"context_line":"                        getattr(lrp, \u0027ha_chassis_group\u0027, [])):"},{"line_number":880,"context_line":"                    return"},{"line_number":881,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"c7b25ddf_23cb7fde","line":878,"in_reply_to":"7a92239b_cb38cc43","updated":"2026-07-06 13:19:30.000000000","message":"Arggg I missed that again. In OVN we must use `strutils.bool_from_string()` for boolean values stored in OVN registers.\n\nGood catch, thanks!","commit_id":"8b59d1e47bd507d9ff6048eb2ed206927b19962c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"37dd3fe87041b8ba4c2291d811262b3deb8162a3","unresolved":false,"context_lines":[{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        # If any gateway LRP uses ha_chassis_group (physnet/VLAN/flat),"},{"line_number":871,"context_line":"        # do NOT set LR.options.chassis. OVN handles HA natively via"},{"line_number":872,"context_line":"        # the chassisredirect port. Setting both is rejected by northd"},{"line_number":873,"context_line":"        # as \"Bad configuration\" (LP#2158987)."},{"line_number":874,"context_line":"        lr \u003d self.driver.nb_ovn.lookup(\u0027Logical_Router\u0027, router_name,"},{"line_number":875,"context_line":"                                       default\u003dNone)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ac741614_05f85527","line":872,"range":{"start_line":872,"start_character":52,"end_line":872,"end_character":70},"updated":"2026-07-07 09:35:55.000000000","message":"nice","commit_id":"c0389e0a76cd02c5999cba899e020e4499e9eda1"}],"neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_ovsdb_monitor.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"740fbc8a800f7394eac37c48700ce9615fd98c12","unresolved":false,"context_lines":[{"line_number":716,"context_line":"        self.assertTrue(gw_lrps[0].ha_chassis_group)"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"        hcg \u003d self.nb_api.lookup(\u0027HA_Chassis_Group\u0027, ovn_r_name)"},{"line_number":719,"context_line":"        self.assertTrue(len(hcg.ha_chassis) \u003e 0)"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"        row_event_lr \u003d test_events.WaitForLogicalRouterUpdate()"},{"line_number":722,"context_line":"        self.mech_driver.nb_ovn.idl.notify_handler.watch_event(row_event_lr)"}],"source_content_type":"text/x-python","patch_set":2,"id":"2c03dbcf_bac69b31","line":719,"updated":"2026-07-06 15:26:50.000000000","message":"pep8: H205: Use assert{Greater,Less}[Equal]","commit_id":"def048b11c4a04c8eeba01f41f4aa1da7ff09680"}]}
