)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bd86e3b1e3e910b4aaffbb48dd3daf102bd6b0a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"29161668_301b57e1","updated":"2026-06-04 10:41:43.000000000","message":"I have yet to review this in depth, but you need to ignore the old modules to ensure we don\u0027t randomly load them. You want to extend `API_EXTENSIONS` in `openstackclient/network/client.py` and `IGNORED_MODULES` in `openstackclient/shell.py`","commit_id":"34b11f6f2e71f7d6d76f9c0e5e21547dde56a13d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"13219064ff4e4ed246f84874ab5748fec288e5e4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"36e55121_effef327","in_reply_to":"29161668_301b57e1","updated":"2026-06-08 15:00:46.000000000","message":"FYI this still needs to be done?","commit_id":"34b11f6f2e71f7d6d76f9c0e5e21547dde56a13d"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"056615d306ebb211c3a6d86640e75a2653fec8d6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a6fb0cd9_3cd56dca","in_reply_to":"36e55121_effef327","updated":"2026-06-09 07:27:28.000000000","message":"ahh thanks, I suppose this is why check-plugins fails....","commit_id":"34b11f6f2e71f7d6d76f9c0e5e21547dde56a13d"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ce381e2106c8dfd949ae4232c1b9329b0451fd3e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"56d7d9b5_7670c21c","in_reply_to":"a6fb0cd9_3cd56dca","updated":"2026-06-09 08:51:19.000000000","message":"Done","commit_id":"34b11f6f2e71f7d6d76f9c0e5e21547dde56a13d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"13219064ff4e4ed246f84874ab5748fec288e5e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f803525c_9611053d","updated":"2026-06-08 15:00:46.000000000","message":"There\u0027s two more things to be done here. Rest of it looks good at first inspection","commit_id":"e8e13f3a55b635561676dc8b4186ef4663072318"}],"openstackclient/network/client.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"87d71135840c7a7c5a4ed4806edeb96ef1b1fe93","unresolved":true,"context_lines":[{"line_number":25,"context_line":"API_VERSION_OPTION \u003d \u0027os_network_api_version\u0027"},{"line_number":26,"context_line":"API_NAME \u003d \u0027network\u0027"},{"line_number":27,"context_line":"API_VERSIONS \u003d (\u00272.0\u0027, \u00272\u0027)"},{"line_number":28,"context_line":"API_EXTENSIONS \u003d (\u0027bgpvpn\u0027, \u0027fwaas\u0027, \u0027taas\u0027, \u0027dynamic_routing\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def make_client(instance: Any) -\u003e Any:"}],"source_content_type":"text/x-python","patch_set":5,"id":"751ae1ce_4fefc853","line":28,"updated":"2026-06-10 11:54:38.000000000","message":"nit: alphabetical ordering\n\n(but we can fix this when we merge the vpnaas changes)","commit_id":"8d6b29e7848e0ca14d7fa6c6f02c22d3fb627273"}],"openstackclient/network/v2/dynamic_routing/bgp_dragent.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"_formatters \u003d {\u0027alive\u0027: _format_alive_state}"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def add_common_args(parser):"},{"line_number":28,"context_line":"    parser.add_argument("},{"line_number":29,"context_line":"        \u0027dragent_id\u0027,"},{"line_number":30,"context_line":"        metavar\u003d\u0027\u003cagent-id\u003e\u0027,"},{"line_number":31,"context_line":"        help\u003d_(\"ID of the dynamic routing agent\"),"},{"line_number":32,"context_line":"    )"},{"line_number":33,"context_line":"    parser.add_argument("},{"line_number":34,"context_line":"        \u0027bgp_speaker\u0027,"},{"line_number":35,"context_line":"        metavar\u003d\u0027\u003cbgp-speaker\u003e\u0027,"},{"line_number":36,"context_line":"        help\u003d_(\"ID or name of the BGP speaker\"),"},{"line_number":37,"context_line":"    )"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class AddBgpSpeakerToDRAgent(command.Command):"},{"line_number":41,"context_line":"    \"\"\"Add a BGP speaker to a dynamic routing agent\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bd784970_eb99af8f","line":38,"range":{"start_line":26,"start_character":1,"end_line":38,"end_character":1},"updated":"2026-06-04 10:54:24.000000000","message":"This has two users. Can we just fold it in the call sites?","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"_formatters \u003d {\u0027alive\u0027: _format_alive_state}"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def add_common_args(parser):"},{"line_number":28,"context_line":"    parser.add_argument("},{"line_number":29,"context_line":"        \u0027dragent_id\u0027,"},{"line_number":30,"context_line":"        metavar\u003d\u0027\u003cagent-id\u003e\u0027,"},{"line_number":31,"context_line":"        help\u003d_(\"ID of the dynamic routing agent\"),"},{"line_number":32,"context_line":"    )"},{"line_number":33,"context_line":"    parser.add_argument("},{"line_number":34,"context_line":"        \u0027bgp_speaker\u0027,"},{"line_number":35,"context_line":"        metavar\u003d\u0027\u003cbgp-speaker\u003e\u0027,"},{"line_number":36,"context_line":"        help\u003d_(\"ID or name of the BGP speaker\"),"},{"line_number":37,"context_line":"    )"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class AddBgpSpeakerToDRAgent(command.Command):"},{"line_number":41,"context_line":"    \"\"\"Add a BGP speaker to a dynamic routing agent\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"c1807e7c_c855c3c2","line":38,"range":{"start_line":26,"start_character":1,"end_line":38,"end_character":1},"in_reply_to":"bd784970_eb99af8f","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":97,"context_line":"                parsed_args.bgp_speaker, ignore_missing\u003dFalse"},{"line_number":98,"context_line":"            ).id"},{"line_number":99,"context_line":"            data \u003d client.get_bgp_dragents_hosting_speaker(speaker_id)"},{"line_number":100,"context_line":"        else:"},{"line_number":101,"context_line":"            attrs \u003d {\u0027agent_type\u0027: \u0027BGP dynamic routing agent\u0027}"},{"line_number":102,"context_line":"            data \u003d client.agents(**attrs)"},{"line_number":103,"context_line":"        columns \u003d ("},{"line_number":104,"context_line":"            \u0027id\u0027,"},{"line_number":105,"context_line":"            \u0027agent_type\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"e079d95c_24cbb21e","line":102,"range":{"start_line":100,"start_character":13,"end_line":102,"end_character":41},"updated":"2026-06-04 10:54:24.000000000","message":"nit: you\u0027ll save yourself some effort later if you just inline this\n\n\n\n```suggestion\n        else:\n            data \u003d client.agents(agent_type\u003d\u0027BGP dynamic routing agent\u0027)\n```","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                parsed_args.bgp_speaker, ignore_missing\u003dFalse"},{"line_number":98,"context_line":"            ).id"},{"line_number":99,"context_line":"            data \u003d client.get_bgp_dragents_hosting_speaker(speaker_id)"},{"line_number":100,"context_line":"        else:"},{"line_number":101,"context_line":"            attrs \u003d {\u0027agent_type\u0027: \u0027BGP dynamic routing agent\u0027}"},{"line_number":102,"context_line":"            data \u003d client.agents(**attrs)"},{"line_number":103,"context_line":"        columns \u003d ("},{"line_number":104,"context_line":"            \u0027id\u0027,"},{"line_number":105,"context_line":"            \u0027agent_type\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3c70352b_6d3117c9","line":102,"range":{"start_line":100,"start_character":13,"end_line":102,"end_character":41},"in_reply_to":"e079d95c_24cbb21e","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"}],"openstackclient/network/v2/dynamic_routing/bgp_peer.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":86,"context_line":"            % {"},{"line_number":87,"context_line":"                \u0027min_val\u0027: constants.MIN_AS_NUM,"},{"line_number":88,"context_line":"                \u0027max_val\u0027: constants.MAX_AS_NUM,"},{"line_number":89,"context_line":"            },"},{"line_number":90,"context_line":"        )"},{"line_number":91,"context_line":"        parser.add_argument("},{"line_number":92,"context_line":"            \u0027--auth-type\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"80f060a9_2941e63d","line":89,"updated":"2026-06-04 10:54:24.000000000","message":"Would be good to do this via a custom type in a follow-up","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            % {"},{"line_number":87,"context_line":"                \u0027min_val\u0027: constants.MIN_AS_NUM,"},{"line_number":88,"context_line":"                \u0027max_val\u0027: constants.MAX_AS_NUM,"},{"line_number":89,"context_line":"            },"},{"line_number":90,"context_line":"        )"},{"line_number":91,"context_line":"        parser.add_argument("},{"line_number":92,"context_line":"            \u0027--auth-type\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"80854ab5_098a5a02","line":89,"in_reply_to":"80f060a9_2941e63d","updated":"2026-06-08 14:48:41.000000000","message":"Now I moved these to this file to get rid of constants.py","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"class SetBgpPeer(command.Command):"},{"line_number":161,"context_line":"    _description \u003d _(\"Update a BGP peer\")"},{"line_number":162,"context_line":"    resource \u003d constants.BGP_PEER"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def get_parser(self, prog_name):"},{"line_number":165,"context_line":"        parser \u003d super().get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"a95c7fa5_63660aa6","line":162,"updated":"2026-06-04 10:54:24.000000000","message":"Dead code?","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"class SetBgpPeer(command.Command):"},{"line_number":161,"context_line":"    _description \u003d _(\"Update a BGP peer\")"},{"line_number":162,"context_line":"    resource \u003d constants.BGP_PEER"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def get_parser(self, prog_name):"},{"line_number":165,"context_line":"        parser \u003d super().get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"91e6e44d_4f9d32ab","line":162,"in_reply_to":"a95c7fa5_63660aa6","updated":"2026-06-08 14:48:41.000000000","message":"thanks","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"}],"openstackclient/network/v2/dynamic_routing/bgp_speaker.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def _get_attrs(client_manager, parsed_args):"},{"line_number":26,"context_line":"    attrs: dict[str, Any] \u003d {}"},{"line_number":27,"context_line":"    if parsed_args.name is not None:"},{"line_number":28,"context_line":"        attrs[\u0027name\u0027] \u003d str(parsed_args.name)"},{"line_number":29,"context_line":"    if \u0027local_as\u0027 in parsed_args:"}],"source_content_type":"text/x-python","patch_set":3,"id":"abb8579b_eaaefeeb","line":26,"updated":"2026-06-04 10:54:24.000000000","message":"nit:\n\n```suggestion\n    attrs: dict[str, object] \u003d {}\n```\n\n?","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def _get_attrs(client_manager, parsed_args):"},{"line_number":26,"context_line":"    attrs: dict[str, Any] \u003d {}"},{"line_number":27,"context_line":"    if parsed_args.name is not None:"},{"line_number":28,"context_line":"        attrs[\u0027name\u0027] \u003d str(parsed_args.name)"},{"line_number":29,"context_line":"    if \u0027local_as\u0027 in parsed_args:"}],"source_content_type":"text/x-python","patch_set":3,"id":"8af46edb_6986ade7","line":26,"in_reply_to":"abb8579b_eaaefeeb","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":318,"context_line":"class SetBgpSpeaker(command.Command):"},{"line_number":319,"context_line":"    _description \u003d _(\"Set BGP speaker properties\")"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    resource \u003d constants.BGP_SPEAKER"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def get_parser(self, prog_name):"},{"line_number":324,"context_line":"        parser \u003d super().get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"04160680_678543c0","line":321,"updated":"2026-06-04 10:54:24.000000000","message":"dead code?","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":318,"context_line":"class SetBgpSpeaker(command.Command):"},{"line_number":319,"context_line":"    _description \u003d _(\"Set BGP speaker properties\")"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    resource \u003d constants.BGP_SPEAKER"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def get_parser(self, prog_name):"},{"line_number":324,"context_line":"        parser \u003d super().get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5279e263_c8c41759","line":321,"in_reply_to":"04160680_678543c0","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":353,"context_line":"        return parser"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    def take_action(self, parsed_args):"},{"line_number":356,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":357,"context_line":"        id \u003d client.find_bgp_speaker("},{"line_number":358,"context_line":"            parsed_args.bgp_speaker, ignore_missing\u003dFalse"},{"line_number":359,"context_line":"        ).id"},{"line_number":360,"context_line":"        obj \u003d client.get_bgp_speaker(id)"},{"line_number":361,"context_line":"        display_columns, columns \u003d utils.get_osc_show_columns_for_sdk_resource("},{"line_number":362,"context_line":"            obj, {}, [\u0027location\u0027, \u0027tenant_id\u0027]"},{"line_number":363,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"6c50835d_c72c1364","line":360,"range":{"start_line":356,"start_character":48,"end_line":360,"end_character":40},"updated":"2026-06-04 10:54:24.000000000","message":"Is there a reason we need the duplicate call? Do these call different APIs?\n\n```suggestion\n        client \u003d self.app.client_manager.network\n        obj \u003d client.find_bgp_speaker(\n            parsed_args.bgp_speaker, ignore_missing\u003dFalse\n        )\n```","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        return parser"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    def take_action(self, parsed_args):"},{"line_number":356,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":357,"context_line":"        id \u003d client.find_bgp_speaker("},{"line_number":358,"context_line":"            parsed_args.bgp_speaker, ignore_missing\u003dFalse"},{"line_number":359,"context_line":"        ).id"},{"line_number":360,"context_line":"        obj \u003d client.get_bgp_speaker(id)"},{"line_number":361,"context_line":"        display_columns, columns \u003d utils.get_osc_show_columns_for_sdk_resource("},{"line_number":362,"context_line":"            obj, {}, [\u0027location\u0027, \u0027tenant_id\u0027]"},{"line_number":363,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af621bf_7f8fe4c6","line":360,"range":{"start_line":356,"start_character":48,"end_line":360,"end_character":40},"in_reply_to":"6c50835d_c72c1364","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"87d71135840c7a7c5a4ed4806edeb96ef1b1fe93","unresolved":true,"context_lines":[{"line_number":8,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":9,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":"#"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from osc_lib.cli import identity as identity_utils"},{"line_number":16,"context_line":"from osc_lib import utils"}],"source_content_type":"text/x-python","patch_set":5,"id":"20fc3e49_56564972","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":1},"updated":"2026-06-10 11:54:38.000000000","message":"nit:\n\n```suggestion\n#    under the License.\n```","commit_id":"8d6b29e7848e0ca14d7fa6c6f02c22d3fb627273"}],"openstackclient/network/v2/dynamic_routing/constants.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":9,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"BGP_SPEAKERS \u003d \u0027bgp_speakers\u0027"},{"line_number":14,"context_line":"BGP_SPEAKER \u003d \u0027bgp_speaker\u0027"},{"line_number":15,"context_line":"BGP_PEERS \u003d \u0027bgp_peers\u0027"},{"line_number":16,"context_line":"BGP_PEER \u003d \u0027bgp_peer\u0027"},{"line_number":17,"context_line":"MIN_AS_NUM \u003d 1"},{"line_number":18,"context_line":"MAX_AS_NUM \u003d 4294967295"}],"source_content_type":"text/x-python","patch_set":3,"id":"f973a599_ab7be0ee","line":16,"range":{"start_line":12,"start_character":1,"end_line":16,"end_character":21},"updated":"2026-06-04 10:54:24.000000000","message":"I think these are unused?","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"BGP_SPEAKERS \u003d \u0027bgp_speakers\u0027"},{"line_number":14,"context_line":"BGP_SPEAKER \u003d \u0027bgp_speaker\u0027"},{"line_number":15,"context_line":"BGP_PEERS \u003d \u0027bgp_peers\u0027"},{"line_number":16,"context_line":"BGP_PEER \u003d \u0027bgp_peer\u0027"},{"line_number":17,"context_line":"MIN_AS_NUM \u003d 1"},{"line_number":18,"context_line":"MAX_AS_NUM \u003d 4294967295"}],"source_content_type":"text/x-python","patch_set":3,"id":"08726991_dde94b0a","line":16,"range":{"start_line":12,"start_character":1,"end_line":16,"end_character":21},"in_reply_to":"f973a599_ab7be0ee","updated":"2026-06-08 14:48:41.000000000","message":"thanks, I removed the whole file","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":14,"context_line":"BGP_SPEAKER \u003d \u0027bgp_speaker\u0027"},{"line_number":15,"context_line":"BGP_PEERS \u003d \u0027bgp_peers\u0027"},{"line_number":16,"context_line":"BGP_PEER \u003d \u0027bgp_peer\u0027"},{"line_number":17,"context_line":"MIN_AS_NUM \u003d 1"},{"line_number":18,"context_line":"MAX_AS_NUM \u003d 4294967295"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fb55179_3c939b4a","line":18,"range":{"start_line":17,"start_character":0,"end_line":18,"end_character":23},"updated":"2026-06-04 10:54:24.000000000","message":"and that these can probably just be inlined (particularly if we end up writing a separate action later)","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":14,"context_line":"BGP_SPEAKER \u003d \u0027bgp_speaker\u0027"},{"line_number":15,"context_line":"BGP_PEERS \u003d \u0027bgp_peers\u0027"},{"line_number":16,"context_line":"BGP_PEER \u003d \u0027bgp_peer\u0027"},{"line_number":17,"context_line":"MIN_AS_NUM \u003d 1"},{"line_number":18,"context_line":"MAX_AS_NUM \u003d 4294967295"}],"source_content_type":"text/x-python","patch_set":3,"id":"72857921_280a0787","line":18,"range":{"start_line":17,"start_character":0,"end_line":18,"end_character":23},"in_reply_to":"3fb55179_3c939b4a","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"}],"openstackclient/tests/unit/network/v2/dynamic_routing/fakes.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":23,"context_line":"class TestNeutronDynamicRoutingOSCV2(test_fakes.TestNetworkV2):"},{"line_number":24,"context_line":"    def setUp(self):"},{"line_number":25,"context_line":"        super().setUp()"},{"line_number":26,"context_line":"        self.namespace \u003d argparse.Namespace()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FakeBgpSpeaker:"}],"source_content_type":"text/x-python","patch_set":3,"id":"05d78d9f_47728ef3","line":26,"updated":"2026-06-04 10:54:24.000000000","message":"You don\u0027t need this, which means you don\u0027t need the entire base class","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class TestNeutronDynamicRoutingOSCV2(test_fakes.TestNetworkV2):"},{"line_number":24,"context_line":"    def setUp(self):"},{"line_number":25,"context_line":"        super().setUp()"},{"line_number":26,"context_line":"        self.namespace \u003d argparse.Namespace()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FakeBgpSpeaker:"}],"source_content_type":"text/x-python","patch_set":3,"id":"2a0fe6b9_7b46d536","line":26,"in_reply_to":"05d78d9f_47728ef3","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"}],"openstackclient/tests/unit/network/v2/dynamic_routing/test_bgp_dragent.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":16,"context_line":"from openstackclient.tests.unit.network.v2.dynamic_routing import fakes"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TestAddBgpSpeakerToDRAgent(fakes.TestNeutronDynamicRoutingOSCV2):"},{"line_number":20,"context_line":"    _bgp_speaker \u003d fakes.FakeBgpSpeaker.create_one_bgp_speaker()"},{"line_number":21,"context_line":"    _bgp_dragent \u003d fakes.FakeDRAgent.create_one_dragent()"},{"line_number":22,"context_line":"    _bgp_speaker_id \u003d _bgp_speaker[\u0027id\u0027]"},{"line_number":23,"context_line":"    _bgp_dragent_id \u003d _bgp_dragent[\u0027id\u0027]"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"98c21c3d_a9c9f148","line":23,"range":{"start_line":19,"start_character":71,"end_line":23,"end_character":40},"updated":"2026-06-04 10:54:24.000000000","message":"Can we do this in `setUp`? It avoids creating shared mutable state which can cause test failures if one test mutates them","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from openstackclient.tests.unit.network.v2.dynamic_routing import fakes"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TestAddBgpSpeakerToDRAgent(fakes.TestNeutronDynamicRoutingOSCV2):"},{"line_number":20,"context_line":"    _bgp_speaker \u003d fakes.FakeBgpSpeaker.create_one_bgp_speaker()"},{"line_number":21,"context_line":"    _bgp_dragent \u003d fakes.FakeDRAgent.create_one_dragent()"},{"line_number":22,"context_line":"    _bgp_speaker_id \u003d _bgp_speaker[\u0027id\u0027]"},{"line_number":23,"context_line":"    _bgp_dragent_id \u003d _bgp_dragent[\u0027id\u0027]"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"8b2bf383_668f1b27","line":23,"range":{"start_line":19,"start_character":71,"end_line":23,"end_character":40},"in_reply_to":"98c21c3d_a9c9f148","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":26,"context_line":"        super().setUp()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        # Get the command object to test"},{"line_number":29,"context_line":"        self.cmd \u003d bgp_dragent.AddBgpSpeakerToDRAgent(self.app, self.namespace)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def test_add_bgp_speaker_to_dragent(self):"},{"line_number":32,"context_line":"        arglist \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"6ec546c6_e9d7b766","line":29,"updated":"2026-06-04 10:54:24.000000000","message":"```suggestion\n        self.cmd \u003d bgp_dragent.AddBgpSpeakerToDRAgent(self.app, None)\n```\n\nSee I135c24d0f6450d5af4e1860218bf3a65c09e36cc","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        super().setUp()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        # Get the command object to test"},{"line_number":29,"context_line":"        self.cmd \u003d bgp_dragent.AddBgpSpeakerToDRAgent(self.app, self.namespace)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def test_add_bgp_speaker_to_dragent(self):"},{"line_number":32,"context_line":"        arglist \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"dee3a66a_e4317de1","line":29,"in_reply_to":"6ec546c6_e9d7b766","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":42,"context_line":"        self.network_client.find_bgp_speaker.return_value \u003d mock.Mock("},{"line_number":43,"context_line":"            id\u003dself._bgp_speaker_id"},{"line_number":44,"context_line":"        )"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        with mock.patch.object("},{"line_number":47,"context_line":"            self.network_client,"},{"line_number":48,"context_line":"            \"add_bgp_speaker_to_dragent\","},{"line_number":49,"context_line":"            return_value\u003dNone,"},{"line_number":50,"context_line":"        ):"},{"line_number":51,"context_line":"            result \u003d self.cmd.take_action(parsed_args)"},{"line_number":52,"context_line":"            self.network_client.add_bgp_speaker_to_dragent.assert_called_once_with("},{"line_number":53,"context_line":"                self._bgp_dragent_id, self._bgp_speaker_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"02d22ae8_66c33168","line":50,"range":{"start_line":45,"start_character":1,"end_line":50,"end_character":10},"updated":"2026-06-04 10:54:24.000000000","message":"This shouldn\u0027t be necessary: the client is already mocked. Just assign the return value directly to the method, like you are doing for `find_bgp_speaker` on the line above","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.network_client.find_bgp_speaker.return_value \u003d mock.Mock("},{"line_number":43,"context_line":"            id\u003dself._bgp_speaker_id"},{"line_number":44,"context_line":"        )"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        with mock.patch.object("},{"line_number":47,"context_line":"            self.network_client,"},{"line_number":48,"context_line":"            \"add_bgp_speaker_to_dragent\","},{"line_number":49,"context_line":"            return_value\u003dNone,"},{"line_number":50,"context_line":"        ):"},{"line_number":51,"context_line":"            result \u003d self.cmd.take_action(parsed_args)"},{"line_number":52,"context_line":"            self.network_client.add_bgp_speaker_to_dragent.assert_called_once_with("},{"line_number":53,"context_line":"                self._bgp_dragent_id, self._bgp_speaker_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"83081d8d_affa4e11","line":50,"range":{"start_line":45,"start_character":1,"end_line":50,"end_character":10},"in_reply_to":"02d22ae8_66c33168","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        self.network_client.find_bgp_speaker.return_value \u003d mock.Mock("},{"line_number":84,"context_line":"            id\u003dself._bgp_speaker_id"},{"line_number":85,"context_line":"        )"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        with mock.patch.object("},{"line_number":88,"context_line":"            self.network_client,"},{"line_number":89,"context_line":"            \"remove_bgp_speaker_from_dragent\","},{"line_number":90,"context_line":"            return_value\u003dNone,"},{"line_number":91,"context_line":"        ):"},{"line_number":92,"context_line":"            result \u003d self.cmd.take_action(parsed_args)"},{"line_number":93,"context_line":"            self.network_client.remove_bgp_speaker_from_dragent.assert_called_once_with("},{"line_number":94,"context_line":"                self._bgp_dragent_id, self._bgp_speaker_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"a80d88f9_2177de1e","line":91,"range":{"start_line":85,"start_character":9,"end_line":91,"end_character":10},"updated":"2026-06-04 10:54:24.000000000","message":"As above: just assign to the method","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        self.network_client.find_bgp_speaker.return_value \u003d mock.Mock("},{"line_number":84,"context_line":"            id\u003dself._bgp_speaker_id"},{"line_number":85,"context_line":"        )"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        with mock.patch.object("},{"line_number":88,"context_line":"            self.network_client,"},{"line_number":89,"context_line":"            \"remove_bgp_speaker_from_dragent\","},{"line_number":90,"context_line":"            return_value\u003dNone,"},{"line_number":91,"context_line":"        ):"},{"line_number":92,"context_line":"            result \u003d self.cmd.take_action(parsed_args)"},{"line_number":93,"context_line":"            self.network_client.remove_bgp_speaker_from_dragent.assert_called_once_with("},{"line_number":94,"context_line":"                self._bgp_dragent_id, self._bgp_speaker_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a3bfcd6_b5c1b718","line":91,"range":{"start_line":85,"start_character":9,"end_line":91,"end_character":10},"in_reply_to":"a80d88f9_2177de1e","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"}],"openstackclient/tests/unit/network/v2/dynamic_routing/test_bgp_peer.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TestListBgpPeer(fakes.TestNeutronDynamicRoutingOSCV2):"},{"line_number":20,"context_line":"    _bgp_peers \u003d fakes.FakeBgpPeer.create_bgp_peers(count\u003d1)"},{"line_number":21,"context_line":"    columns \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027Peer IP\u0027, \u0027Remote AS\u0027)"},{"line_number":22,"context_line":"    data \u003d []"},{"line_number":23,"context_line":"    for _bgp_peer in _bgp_peers:"},{"line_number":24,"context_line":"        data.append("},{"line_number":25,"context_line":"            ("},{"line_number":26,"context_line":"                _bgp_peer[\u0027id\u0027],"},{"line_number":27,"context_line":"                _bgp_peer[\u0027name\u0027],"},{"line_number":28,"context_line":"                _bgp_peer[\u0027peer_ip\u0027],"},{"line_number":29,"context_line":"                _bgp_peer[\u0027remote_as\u0027],"},{"line_number":30,"context_line":"            )"},{"line_number":31,"context_line":"        )"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def setUp(self):"},{"line_number":34,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7449f55c_c65f05b6","line":31,"range":{"start_line":20,"start_character":0,"end_line":31,"end_character":9},"updated":"2026-06-04 10:54:24.000000000","message":"Same comment as the previous file: can we do this in `setUp`\n\nDitto for the other data setup in each class below","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TestListBgpPeer(fakes.TestNeutronDynamicRoutingOSCV2):"},{"line_number":20,"context_line":"    _bgp_peers \u003d fakes.FakeBgpPeer.create_bgp_peers(count\u003d1)"},{"line_number":21,"context_line":"    columns \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027Peer IP\u0027, \u0027Remote AS\u0027)"},{"line_number":22,"context_line":"    data \u003d []"},{"line_number":23,"context_line":"    for _bgp_peer in _bgp_peers:"},{"line_number":24,"context_line":"        data.append("},{"line_number":25,"context_line":"            ("},{"line_number":26,"context_line":"                _bgp_peer[\u0027id\u0027],"},{"line_number":27,"context_line":"                _bgp_peer[\u0027name\u0027],"},{"line_number":28,"context_line":"                _bgp_peer[\u0027peer_ip\u0027],"},{"line_number":29,"context_line":"                _bgp_peer[\u0027remote_as\u0027],"},{"line_number":30,"context_line":"            )"},{"line_number":31,"context_line":"        )"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def setUp(self):"},{"line_number":34,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"577d24f2_e26987e5","line":31,"range":{"start_line":20,"start_character":0,"end_line":31,"end_character":9},"in_reply_to":"7449f55c_c65f05b6","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        self.network_client.bgp_peers.return_value \u003d self._bgp_peers"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        # Get the command object to test"},{"line_number":39,"context_line":"        self.cmd \u003d bgp_peer.ListBgpPeer(self.app, self.namespace)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_bgp_peer_list(self):"},{"line_number":42,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, [], [])"}],"source_content_type":"text/x-python","patch_set":3,"id":"0347e069_b1b29319","line":39,"range":{"start_line":38,"start_character":40,"end_line":39,"end_character":65},"updated":"2026-06-04 10:54:24.000000000","message":"```suggestion\n        # Get the command object to test\n        self.cmd \u003d bgp_peer.ListBgpPeer(self.app, None)\n```\n\nDitto for the other use of self.namespace below.","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        self.network_client.bgp_peers.return_value \u003d self._bgp_peers"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        # Get the command object to test"},{"line_number":39,"context_line":"        self.cmd \u003d bgp_peer.ListBgpPeer(self.app, self.namespace)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_bgp_peer_list(self):"},{"line_number":42,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, [], [])"}],"source_content_type":"text/x-python","patch_set":3,"id":"54ceedcb_7610a385","line":39,"range":{"start_line":38,"start_character":40,"end_line":39,"end_character":65},"in_reply_to":"0347e069_b1b29319","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"}],"openstackclient/tests/unit/network/v2/dynamic_routing/test_bgp_speaker.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":16,"context_line":"from openstackclient.tests.unit.network.v2.dynamic_routing import fakes"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TestListBgpSpeaker(fakes.TestNeutronDynamicRoutingOSCV2):"},{"line_number":20,"context_line":"    _bgp_speakers \u003d fakes.FakeBgpSpeaker.create_bgp_speakers()"},{"line_number":21,"context_line":"    columns \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027Local AS\u0027, \u0027IP Version\u0027)"},{"line_number":22,"context_line":"    data \u003d []"},{"line_number":23,"context_line":"    for _bgp_speaker in _bgp_speakers:"},{"line_number":24,"context_line":"        data.append("},{"line_number":25,"context_line":"            ("},{"line_number":26,"context_line":"                _bgp_speaker[\u0027id\u0027],"},{"line_number":27,"context_line":"                _bgp_speaker[\u0027name\u0027],"},{"line_number":28,"context_line":"                _bgp_speaker[\u0027local_as\u0027],"},{"line_number":29,"context_line":"                _bgp_speaker[\u0027ip_version\u0027],"},{"line_number":30,"context_line":"            )"},{"line_number":31,"context_line":"        )"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def setUp(self):"},{"line_number":34,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"b8c29027_163d8b35","line":31,"range":{"start_line":19,"start_character":63,"end_line":31,"end_character":9},"updated":"2026-06-04 10:54:24.000000000","message":"Same comment","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from openstackclient.tests.unit.network.v2.dynamic_routing import fakes"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TestListBgpSpeaker(fakes.TestNeutronDynamicRoutingOSCV2):"},{"line_number":20,"context_line":"    _bgp_speakers \u003d fakes.FakeBgpSpeaker.create_bgp_speakers()"},{"line_number":21,"context_line":"    columns \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027Local AS\u0027, \u0027IP Version\u0027)"},{"line_number":22,"context_line":"    data \u003d []"},{"line_number":23,"context_line":"    for _bgp_speaker in _bgp_speakers:"},{"line_number":24,"context_line":"        data.append("},{"line_number":25,"context_line":"            ("},{"line_number":26,"context_line":"                _bgp_speaker[\u0027id\u0027],"},{"line_number":27,"context_line":"                _bgp_speaker[\u0027name\u0027],"},{"line_number":28,"context_line":"                _bgp_speaker[\u0027local_as\u0027],"},{"line_number":29,"context_line":"                _bgp_speaker[\u0027ip_version\u0027],"},{"line_number":30,"context_line":"            )"},{"line_number":31,"context_line":"        )"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def setUp(self):"},{"line_number":34,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"97696833_4187b532","line":31,"range":{"start_line":19,"start_character":63,"end_line":31,"end_character":9},"in_reply_to":"b8c29027_163d8b35","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"940ddcb4f1dfd48afd3d5fd425ff532ed6164b5b","unresolved":true,"context_lines":[{"line_number":36,"context_line":"        self.network_client.bgp_speakers.return_value \u003d self._bgp_speakers"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        # Get the command object to test"},{"line_number":39,"context_line":"        self.cmd \u003d bgp_speaker.ListBgpSpeaker(self.app, self.namespace)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_bgp_speaker_list(self):"},{"line_number":42,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, [], [])"}],"source_content_type":"text/x-python","patch_set":3,"id":"29112d31_7f60ca2f","line":39,"updated":"2026-06-04 10:54:24.000000000","message":"Same comment","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1a3a9eefe430f7f8cce221bf11a99a590c906ba1","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.network_client.bgp_speakers.return_value \u003d self._bgp_speakers"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        # Get the command object to test"},{"line_number":39,"context_line":"        self.cmd \u003d bgp_speaker.ListBgpSpeaker(self.app, self.namespace)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_bgp_speaker_list(self):"},{"line_number":42,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, [], [])"}],"source_content_type":"text/x-python","patch_set":3,"id":"dd895f3b_78df7119","line":39,"in_reply_to":"29112d31_7f60ca2f","updated":"2026-06-08 14:48:41.000000000","message":"Done","commit_id":"1f7e21e186852ebb1e1fedb905e9a18ca5e960b4"}]}
