)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"5e3878503b31c21832773586ac573ae27bf7fb1d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c4cf9895_ecfa7607","updated":"2026-03-16 20:39:28.000000000","message":"Looks mostly good to me. Just some very small/not super important questions.","commit_id":"911665049f69bc48b1086a35ddb1ffc4deb679bc"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"49af642ae3e02744647a7f20b116de8e24caeb02","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e449cd98_dd67478d","updated":"2026-03-17 13:52:40.000000000","message":"lgtm. one suggestion for a followup patch to move some methods.","commit_id":"dd31a9a2eadb005aa213c1fa68e24b46c2f7d8ef"}],"neutron/services/bgp/commands.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"5e3878503b31c21832773586ac573ae27bf7fb1d","unresolved":true,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def _make_main_router_policy_match(ic_switch_lrp_name, chassis_lrp_name):"},{"line_number":88,"context_line":"    return (f\u0027inport\u003d\u003d\\\"{ic_switch_lrp_name}\\\" \u0026\u0026 \u0027"},{"line_number":89,"context_line":"            f\u0027is_chassis_resident(\\\"cr-{chassis_lrp_name}\\\")\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"0bcae691_f183c858","line":88,"updated":"2026-03-16 20:39:28.000000000","message":"nit: Are the escapes needed for the double quotes since the string itself is enclosed by single quotes?","commit_id":"911665049f69bc48b1086a35ddb1ffc4deb679bc"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"25ca7cf4e68d52681724541ffcd30fec164e60e7","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def _make_main_router_policy_match(ic_switch_lrp_name, chassis_lrp_name):"},{"line_number":88,"context_line":"    return (f\u0027inport\u003d\u003d\\\"{ic_switch_lrp_name}\\\" \u0026\u0026 \u0027"},{"line_number":89,"context_line":"            f\u0027is_chassis_resident(\\\"cr-{chassis_lrp_name}\\\")\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"896109fa_6b681aac","line":88,"in_reply_to":"0bcae691_f183c858","updated":"2026-03-16 22:32:24.000000000","message":"You\u0027re right.","commit_id":"911665049f69bc48b1086a35ddb1ffc4deb679bc"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"5e3878503b31c21832773586ac573ae27bf7fb1d","unresolved":true,"context_lines":[{"line_number":288,"context_line":"            nb_cmd.LrPolicyDelCommand("},{"line_number":289,"context_line":"                self.api,"},{"line_number":290,"context_line":"                self.router_name,"},{"line_number":291,"context_line":"                priority\u003d10,"},{"line_number":292,"context_line":"                match\u003d_make_main_router_policy_match("},{"line_number":293,"context_line":"                    router_to_interconnect_lrp_name, chassis_lrp.name),"},{"line_number":294,"context_line":"            ).run_idl(txn)"}],"source_content_type":"text/x-python","patch_set":5,"id":"f2c52ff6_30bec627","line":291,"range":{"start_line":291,"start_character":25,"end_line":291,"end_character":27},"updated":"2026-03-16 20:39:28.000000000","message":"Do we need some kind of constant for this priority and below in the `ReconcileMainRouterPoliciesCommand` and the tests?","commit_id":"911665049f69bc48b1086a35ddb1ffc4deb679bc"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"25ca7cf4e68d52681724541ffcd30fec164e60e7","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            nb_cmd.LrPolicyDelCommand("},{"line_number":289,"context_line":"                self.api,"},{"line_number":290,"context_line":"                self.router_name,"},{"line_number":291,"context_line":"                priority\u003d10,"},{"line_number":292,"context_line":"                match\u003d_make_main_router_policy_match("},{"line_number":293,"context_line":"                    router_to_interconnect_lrp_name, chassis_lrp.name),"},{"line_number":294,"context_line":"            ).run_idl(txn)"}],"source_content_type":"text/x-python","patch_set":5,"id":"e2c3ce3f_f9b69420","line":291,"range":{"start_line":291,"start_character":25,"end_line":291,"end_character":27},"in_reply_to":"f2c52ff6_30bec627","updated":"2026-03-16 22:32:24.000000000","message":"I did it in a followup https://review.opendev.org/c/openstack/neutron/+/980838 and changed it in the other commands too.","commit_id":"911665049f69bc48b1086a35ddb1ffc4deb679bc"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"49af642ae3e02744647a7f20b116de8e24caeb02","unresolved":true,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        main_router \u003d _get_main_router(self.api)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        for chassis_lrp in helpers.lrps_to_chassis_routers(main_router):"},{"line_number":288,"context_line":"            nb_cmd.LrPolicyDelCommand("},{"line_number":289,"context_line":"                self.api,"},{"line_number":290,"context_line":"                self.router_name,"}],"source_content_type":"text/x-python","patch_set":7,"id":"34f39317_6d4d6810","line":287,"range":{"start_line":287,"start_character":27,"end_line":287,"end_character":71},"updated":"2026-03-17 13:52:40.000000000","message":"I wouldn\u0027t necessarily do it in this patch, but this is another `helpers.py` method that could just go here in `commands.py` since it\u0027s iterating over router.ports which could theoretically change at any time outside of a transaction.","commit_id":"dd31a9a2eadb005aa213c1fa68e24b46c2f7d8ef"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6a98ae0477bd2ba18c7c55cf9c476284703ddcba","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        main_router \u003d _get_main_router(self.api)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        for chassis_lrp in helpers.lrps_to_chassis_routers(main_router):"},{"line_number":288,"context_line":"            nb_cmd.LrPolicyDelCommand("},{"line_number":289,"context_line":"                self.api,"},{"line_number":290,"context_line":"                self.router_name,"}],"source_content_type":"text/x-python","patch_set":7,"id":"39118bfd_6e9341d0","line":287,"range":{"start_line":287,"start_character":27,"end_line":287,"end_character":71},"in_reply_to":"34f39317_6d4d6810","updated":"2026-03-17 14:47:16.000000000","message":"Thanks, addressed at https://review.opendev.org/c/openstack/neutron/+/980962","commit_id":"dd31a9a2eadb005aa213c1fa68e24b46c2f7d8ef"}],"neutron/tests/functional/services/bgp/test_commands.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"5e3878503b31c21832773586ac573ae27bf7fb1d","unresolved":true,"context_lines":[{"line_number":1197,"context_line":"        return ls.result"},{"line_number":1198,"context_line":""},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"class ReconcileNeutronSwitchCommandTestCase(_BaseNeutronSwitchCommandTestCase):"},{"line_number":1201,"context_line":"    def _validate_neutron_switch_dead_connection(self, n_switch):"},{"line_number":1202,"context_line":"        lrp_name \u003d helpers.get_lrp_name(self.main_router_name, n_switch.name)"},{"line_number":1203,"context_line":"        lsp_name \u003d helpers.get_lsp_name(n_switch.name, self.main_router_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"47cbaef8_31893f7a","side":"PARENT","line":1200,"updated":"2026-03-16 20:39:28.000000000","message":"This means that the `_BaseNeutronSwitchCommandTestCase` `test_*` methods run twice, once when it is discovered and again when run as part of the `DeleteNeutronSwitchCommandTestCase` tests. (as shown https://d95ccd5f08dc5cec97c5-667e59a55d2239af414b0984e42f005a.ssl.cf2.rackcdn.com/openstack/c8dc977ede4d4b7297795197912876e9/testr_results.html). Is this intended?","commit_id":"41a2a5ed8aa064a8a54ffaade108d34d9b04ba62"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"25ca7cf4e68d52681724541ffcd30fec164e60e7","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"        return ls.result"},{"line_number":1198,"context_line":""},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"class ReconcileNeutronSwitchCommandTestCase(_BaseNeutronSwitchCommandTestCase):"},{"line_number":1201,"context_line":"    def _validate_neutron_switch_dead_connection(self, n_switch):"},{"line_number":1202,"context_line":"        lrp_name \u003d helpers.get_lrp_name(self.main_router_name, n_switch.name)"},{"line_number":1203,"context_line":"        lsp_name \u003d helpers.get_lsp_name(n_switch.name, self.main_router_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7c10f831_54666e3e","side":"PARENT","line":1200,"in_reply_to":"47cbaef8_31893f7a","updated":"2026-03-16 22:32:24.000000000","message":"Not intended, I think this is an error when doing a rebase and solving conflicts. Thanks for catching this.","commit_id":"41a2a5ed8aa064a8a54ffaade108d34d9b04ba62"}]}
