)]}'
{"neutron/services/ovn_l3/ovsdb_monitor.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4983ca21c2fe9861001cbae027a6838f7c8a0157","unresolved":true,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            for lrp in (lrp for lrp in lr.ports if lrp.name !\u003d row.name):"},{"line_number":62,"context_line":"                if (ls_name \u003d\u003d lrp.external_ids.get("},{"line_number":63,"context_line":"                        ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY)):"},{"line_number":64,"context_line":"                    return False"},{"line_number":65,"context_line":"            return True"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"74c6eace_34b10411","line":63,"updated":"2026-06-16 15:33:05.000000000","message":"I have a question on this and don\u0027t know the answer based on reading the bug. If there is no \"neutron:network_name\" key here do we want to return True or False? It seems we only want to return False on a match, but just wanted to be sure.","commit_id":"97215b4fc758a8ca17d7b903f7928b31725e45b7"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ceafbf7c5a0331a2523326c0dc3acd40e3a95181","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            for lrp in (lrp for lrp in lr.ports if lrp.name !\u003d row.name):"},{"line_number":62,"context_line":"                if (ls_name \u003d\u003d lrp.external_ids.get("},{"line_number":63,"context_line":"                        ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY)):"},{"line_number":64,"context_line":"                    return False"},{"line_number":65,"context_line":"            return True"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7e231690_47e85421","line":63,"in_reply_to":"1bbbb579_d35de03e","updated":"2026-06-18 07:31:48.000000000","message":"Done","commit_id":"97215b4fc758a8ca17d7b903f7928b31725e45b7"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"566d4e11bef6a6cc9db42692b6f9e9f66d8d7007","unresolved":true,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            for lrp in (lrp for lrp in lr.ports if lrp.name !\u003d row.name):"},{"line_number":62,"context_line":"                if (ls_name \u003d\u003d lrp.external_ids.get("},{"line_number":63,"context_line":"                        ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY)):"},{"line_number":64,"context_line":"                    return False"},{"line_number":65,"context_line":"            return True"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1bbbb579_d35de03e","line":63,"in_reply_to":"74c6eace_34b10411","updated":"2026-06-17 07:06:25.000000000","message":"Actually your are right: these LRPs without net_name should not match. Very good catch!!","commit_id":"97215b4fc758a8ca17d7b903f7928b31725e45b7"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"74a617b6907903fce7c251546b2b794facc1a853","unresolved":true,"context_lines":[{"line_number":59,"context_line":"                return False"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            for lrp in (lrp for lrp in lr.ports if lrp.name !\u003d row.name):"},{"line_number":62,"context_line":"                net_name \u003d lrp.external_ids.get("},{"line_number":63,"context_line":"                    ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY)"},{"line_number":64,"context_line":"                if net_name is None:"},{"line_number":65,"context_line":"                    continue"},{"line_number":66,"context_line":"                if ls_name \u003d\u003d net_name:"},{"line_number":67,"context_line":"                    return False"},{"line_number":68,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"57d55bee_102c94f7","line":65,"range":{"start_line":62,"start_character":0,"end_line":65,"end_character":28},"updated":"2026-06-18 15:07:16.000000000","message":"nit: I\u0027d prefer EAFP as most of the LRPs in the system do have the ext-id set. We do not need to call the if on all of them.","commit_id":"c38c2ce8f3f35d4f120e10cda5b0e61cf3e70cd0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f332664faba60375f5ec7f5afc419b1b83726e09","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                return False"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            for lrp in (lrp for lrp in lr.ports if lrp.name !\u003d row.name):"},{"line_number":62,"context_line":"                net_name \u003d lrp.external_ids.get("},{"line_number":63,"context_line":"                    ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY)"},{"line_number":64,"context_line":"                if net_name is None:"},{"line_number":65,"context_line":"                    continue"},{"line_number":66,"context_line":"                if ls_name \u003d\u003d net_name:"},{"line_number":67,"context_line":"                    return False"},{"line_number":68,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"756f9900_8f846967","line":65,"range":{"start_line":62,"start_character":0,"end_line":65,"end_character":28},"in_reply_to":"57d55bee_102c94f7","updated":"2026-06-19 06:46:38.000000000","message":"Yes, we need to check all of them. If at least one of the LRPs of this LR is in the same network of the deleted LRP, we should do nothing. But if none of the LRPs are in the same network, we should delete the HCG.\n\nThese LRPs without `OVN_NETWORK_NAME_EXT_ID_KEY` (in this case belonging to EVPN, in a future could belong to other router types), should not be considered in this check but we should continue processing the other LRPs.","commit_id":"c38c2ce8f3f35d4f120e10cda5b0e61cf3e70cd0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1c58fe9f4892db29da4dea30ec60b9e84950d232","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                return False"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            for lrp in (lrp for lrp in lr.ports if lrp.name !\u003d row.name):"},{"line_number":62,"context_line":"                net_name \u003d lrp.external_ids.get("},{"line_number":63,"context_line":"                    ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY)"},{"line_number":64,"context_line":"                if net_name is None:"},{"line_number":65,"context_line":"                    continue"},{"line_number":66,"context_line":"                if ls_name \u003d\u003d net_name:"},{"line_number":67,"context_line":"                    return False"},{"line_number":68,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"46d788bd_2df72d89","line":65,"range":{"start_line":62,"start_character":0,"end_line":65,"end_character":28},"in_reply_to":"73da3405_8423be91","updated":"2026-06-24 08:20:46.000000000","message":"Yeah, I\u0027m not a fan of coding by exceptions as is defined an anti-pattern. But exceptions in Python work different.\n\nI\u0027ll update the patch.","commit_id":"c38c2ce8f3f35d4f120e10cda5b0e61cf3e70cd0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f1bd9fabce2f3130ae7c0e07f912da96b3f36aa1","unresolved":true,"context_lines":[{"line_number":59,"context_line":"                return False"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            for lrp in (lrp for lrp in lr.ports if lrp.name !\u003d row.name):"},{"line_number":62,"context_line":"                net_name \u003d lrp.external_ids.get("},{"line_number":63,"context_line":"                    ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY)"},{"line_number":64,"context_line":"                if net_name is None:"},{"line_number":65,"context_line":"                    continue"},{"line_number":66,"context_line":"                if ls_name \u003d\u003d net_name:"},{"line_number":67,"context_line":"                    return False"},{"line_number":68,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"73da3405_8423be91","line":65,"range":{"start_line":62,"start_character":0,"end_line":65,"end_character":28},"in_reply_to":"756f9900_8f846967","updated":"2026-06-23 16:47:47.000000000","message":"I mean, for every single LRP you find the value and then check if the `get()` returned None - which will be only the case for the EVPN LRPs, so this check is only needed in very small number of cases.\n\nBetter to use try-except in this case as most of the time you get the value and don\u0027t need to call additional `if` statement:\n```\ntry:\n    net_name \u003d lrp.external_ids[ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY]\nexcept KeyError:\n    # not a Neutron managed LRP port\n    continue\n```","commit_id":"c38c2ce8f3f35d4f120e10cda5b0e61cf3e70cd0"}]}
