)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"cb36e7213854c1f9c363a643a8aad6dd40c26b26","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d3129b4b_f8f50c46","updated":"2021-11-19 14:27:52.000000000","message":"https://review.opendev.org/c/openstack/python-neutronclient/+/818386 was merged, if you rebase on top of master there should be no zuul job failure","commit_id":"da166050f5b3912604bfd23bd2666874531a1a72"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"0368ff3900149acbf5db49a8e7b893dc95b728d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"bc8f4205_a3657e12","updated":"2021-11-15 05:36:36.000000000","message":"recheck","commit_id":"da166050f5b3912604bfd23bd2666874531a1a72"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"8b65e2acbecf461d72153967e199c847abb1dcb3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"bd30113c_55fb7967","updated":"2021-10-26 11:46:25.000000000","message":"recheck","commit_id":"da166050f5b3912604bfd23bd2666874531a1a72"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"b97f8b1072b361620a1a6770f00e1c7f5ea8810f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c8e0f568_268e2167","updated":"2021-11-03 04:27:58.000000000","message":"recheck","commit_id":"da166050f5b3912604bfd23bd2666874531a1a72"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"15c9d3fc3aa994c0439f601251c338800ae528dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f0e06238_2789161a","updated":"2021-10-28 06:40:58.000000000","message":"recheck","commit_id":"da166050f5b3912604bfd23bd2666874531a1a72"}],"neutronclient/neutron/v2_0/bgp/router_association.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"bac41c1667af6e920c9c08d5eeee70991b9c28de","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"795216b2_91392d60","updated":"2021-08-11 12:58:29.000000000","message":"FYI: The \u0027neutron\u0027 cli is deprecated in favor of the \u0027openstack\u0027 cli (it will be removed in the Z cycle). It\u0027s not a problem this code is here, but for new subcommands I don\u0027t think we need to support the \u0027neutron\u0027 command anymore.","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"bbb96fdc0a297a8f275f8ded3b44e4e8217bf238","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"523fca0f_05707cc1","in_reply_to":"69199859_b80b782b","updated":"2021-10-11 11:21:46.000000000","message":"Ack","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"090f8e7ecc4525bc308a6ca2dc810398ba9a73b6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"69199859_b80b782b","in_reply_to":"795216b2_91392d60","updated":"2021-09-01 09:54:00.000000000","message":"As Bence commented, there is no need to add new subcommands here.\nneutronclient/neutron/v2_0/*.py are for \"neutron xxxx\" commands.\nThe deprecation of neutron CLI also means we freeze the features of \"neutron CLI\".\nPerhaps it is better to drop this file.","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"}],"neutronclient/osc/v2/dynamic_routing/router_association.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"090f8e7ecc4525bc308a6ca2dc810398ba9a73b6","unresolved":true,"context_lines":[{"line_number":23,"context_line":"def _get_attrs(client_manager, parsed_args):"},{"line_number":24,"context_line":"    attrs \u003d {}"},{"line_number":25,"context_line":"    if \u0027router\u0027 in parsed_args:"},{"line_number":26,"context_line":"        _rtr_id \u003d client_manager.neutronclient\\"},{"line_number":27,"context_line":"                                .find_resource(\u0027router\u0027,"},{"line_number":28,"context_line":"                                               parsed_args.router)[\u0027id\u0027]"},{"line_number":29,"context_line":"        attrs[\u0027router_id\u0027] \u003d _rtr_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"08ca4a14_45c2da3d","line":26,"range":{"start_line":26,"start_character":8,"end_line":26,"end_character":15},"updated":"2021-09-01 09:54:00.000000000","message":"I don\u0027t think \"rtr\" is very common abbrev of \"router\". I would suggest \"router_id\" or \"_router_id\" as they are clearer and there is no need to save only three chars.","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"bbb96fdc0a297a8f275f8ded3b44e4e8217bf238","unresolved":false,"context_lines":[{"line_number":23,"context_line":"def _get_attrs(client_manager, parsed_args):"},{"line_number":24,"context_line":"    attrs \u003d {}"},{"line_number":25,"context_line":"    if \u0027router\u0027 in parsed_args:"},{"line_number":26,"context_line":"        _rtr_id \u003d client_manager.neutronclient\\"},{"line_number":27,"context_line":"                                .find_resource(\u0027router\u0027,"},{"line_number":28,"context_line":"                                               parsed_args.router)[\u0027id\u0027]"},{"line_number":29,"context_line":"        attrs[\u0027router_id\u0027] \u003d _rtr_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"f22558c9_fc1499c2","line":26,"range":{"start_line":26,"start_character":8,"end_line":26,"end_character":15},"in_reply_to":"08ca4a14_45c2da3d","updated":"2021-10-11 11:21:46.000000000","message":"Done","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"090f8e7ecc4525bc308a6ca2dc810398ba9a73b6","unresolved":true,"context_lines":[{"line_number":25,"context_line":"    if \u0027router\u0027 in parsed_args:"},{"line_number":26,"context_line":"        _rtr_id \u003d client_manager.neutronclient\\"},{"line_number":27,"context_line":"                                .find_resource(\u0027router\u0027,"},{"line_number":28,"context_line":"                                               parsed_args.router)[\u0027id\u0027]"},{"line_number":29,"context_line":"        attrs[\u0027router_id\u0027] \u003d _rtr_id"},{"line_number":30,"context_line":"    if parsed_args.advertise_extra_routes:"},{"line_number":31,"context_line":"        attrs[\u0027advertise_extra_routes\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"0ec99036_364a47c1","line":28,"updated":"2021-09-01 09:54:00.000000000","message":"Our coding guideline discourages using backslashes.\nWhen wrapping lines, I would suggest:\n\n  client_manager.neutronclient.find_resource(\n      \u0027router\u0027, parsed_args.router)[\u0027id\u0027]","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"bbb96fdc0a297a8f275f8ded3b44e4e8217bf238","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    if \u0027router\u0027 in parsed_args:"},{"line_number":26,"context_line":"        _rtr_id \u003d client_manager.neutronclient\\"},{"line_number":27,"context_line":"                                .find_resource(\u0027router\u0027,"},{"line_number":28,"context_line":"                                               parsed_args.router)[\u0027id\u0027]"},{"line_number":29,"context_line":"        attrs[\u0027router_id\u0027] \u003d _rtr_id"},{"line_number":30,"context_line":"    if parsed_args.advertise_extra_routes:"},{"line_number":31,"context_line":"        attrs[\u0027advertise_extra_routes\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"d1571af1_8cea99ed","line":28,"in_reply_to":"0ec99036_364a47c1","updated":"2021-10-11 11:21:46.000000000","message":"Done","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"bac41c1667af6e920c9c08d5eeee70991b9c28de","unresolved":true,"context_lines":[{"line_number":26,"context_line":"        _rtr_id \u003d client_manager.neutronclient\\"},{"line_number":27,"context_line":"                                .find_resource(\u0027router\u0027,"},{"line_number":28,"context_line":"                                               parsed_args.router)[\u0027id\u0027]"},{"line_number":29,"context_line":"        attrs[\u0027router_id\u0027] \u003d _rtr_id"},{"line_number":30,"context_line":"    if parsed_args.advertise_extra_routes:"},{"line_number":31,"context_line":"        attrs[\u0027advertise_extra_routes\u0027] \u003d True"},{"line_number":32,"context_line":"    if parsed_args.no_advertise_extra_routes:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bb1706a7_636cf97b","line":29,"updated":"2021-08-11 12:58:29.000000000","message":"Maybe we could have the bgp speaker name-to-id resolution here instead of all take_action() methods.","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"bac41c1667af6e920c9c08d5eeee70991b9c28de","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        return display_columns, data"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class SetSpeakerRouterAssociation(command.Command):"},{"line_number":80,"context_line":"    _description \u003d _(\"Set BGP speaker router association\")"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    resource \u003d constants.BGP_ROUTER_ASSOCIATION"}],"source_content_type":"text/x-python","patch_set":2,"id":"13c60a5e_d67b5886","line":79,"range":{"start_line":79,"start_character":34,"end_line":79,"end_character":49},"updated":"2021-08-11 12:58:29.000000000","message":"I only read the code, did not try, but using command.Command we have no output, right? However the API returns the association object, so we could show that to the user if we had command.ShowOne here and returned the data from take_action. Otherwise we are throwing away information, don\u0027t we?","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"090f8e7ecc4525bc308a6ca2dc810398ba9a73b6","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        return display_columns, data"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class SetSpeakerRouterAssociation(command.Command):"},{"line_number":80,"context_line":"    _description \u003d _(\"Set BGP speaker router association\")"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    resource \u003d constants.BGP_ROUTER_ASSOCIATION"}],"source_content_type":"text/x-python","patch_set":2,"id":"fcad7c8a_e0bce923","line":79,"range":{"start_line":79,"start_character":34,"end_line":79,"end_character":49},"in_reply_to":"13c60a5e_d67b5886","updated":"2021-09-01 09:54:00.000000000","message":"In the OSC convention, set/unset commands do not show any output (unless errors happen), so the proposed implementation follows the convention.","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"bbb96fdc0a297a8f275f8ded3b44e4e8217bf238","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        return display_columns, data"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class SetSpeakerRouterAssociation(command.Command):"},{"line_number":80,"context_line":"    _description \u003d _(\"Set BGP speaker router association\")"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    resource \u003d constants.BGP_ROUTER_ASSOCIATION"}],"source_content_type":"text/x-python","patch_set":2,"id":"e467b440_809bacad","line":79,"range":{"start_line":79,"start_character":34,"end_line":79,"end_character":49},"in_reply_to":"fcad7c8a_e0bce923","updated":"2021-10-11 11:21:46.000000000","message":"Ack","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"090f8e7ecc4525bc308a6ca2dc810398ba9a73b6","unresolved":true,"context_lines":[{"line_number":87,"context_line":"        parser.add_argument("},{"line_number":88,"context_line":"            \u0027router_association_id\u0027,"},{"line_number":89,"context_line":"            metavar\u003d\u0027ROUTER_ASSOCIATION_ID\u0027,"},{"line_number":90,"context_line":"            help\u003d_(\u0027ID of the router association to remove.\u0027))"},{"line_number":91,"context_line":"        parser.add_argument("},{"line_number":92,"context_line":"            \u0027bgp_speaker\u0027,"},{"line_number":93,"context_line":"            metavar\u003d\u0027BGP_SPEAKER\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"cf6bbd58_7036a724","line":90,"range":{"start_line":90,"start_character":19,"end_line":90,"end_character":59},"updated":"2021-09-01 09:54:00.000000000","message":"Why do you accept ID only? \"ID or name\" would be more user-friendly.","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"bbb96fdc0a297a8f275f8ded3b44e4e8217bf238","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        parser.add_argument("},{"line_number":88,"context_line":"            \u0027router_association_id\u0027,"},{"line_number":89,"context_line":"            metavar\u003d\u0027ROUTER_ASSOCIATION_ID\u0027,"},{"line_number":90,"context_line":"            help\u003d_(\u0027ID of the router association to remove.\u0027))"},{"line_number":91,"context_line":"        parser.add_argument("},{"line_number":92,"context_line":"            \u0027bgp_speaker\u0027,"},{"line_number":93,"context_line":"            metavar\u003d\u0027BGP_SPEAKER\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"b852f481_2c99cbe1","line":90,"range":{"start_line":90,"start_character":19,"end_line":90,"end_character":59},"in_reply_to":"cf6bbd58_7036a724","updated":"2021-10-11 11:21:46.000000000","message":"Done","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"090f8e7ecc4525bc308a6ca2dc810398ba9a73b6","unresolved":true,"context_lines":[{"line_number":95,"context_line":"        parser.add_argument("},{"line_number":96,"context_line":"            \u0027--advertise-extra-routes\u0027,"},{"line_number":97,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":98,"context_line":"            help\u003d_(\"Enable redistribution of neutron extra routes address to\""},{"line_number":99,"context_line":"                   \" BGP.\"))"},{"line_number":100,"context_line":"        parser.add_argument("},{"line_number":101,"context_line":"            \u0027--no-advertise-extra-routes\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"b9c14934_0edfe5ef","line":98,"range":{"start_line":98,"start_character":52,"end_line":98,"end_character":73},"updated":"2021-09-01 09:54:00.000000000","message":"\"address\" is needed? I thikn \"extra routes\" is enough.","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"bbb96fdc0a297a8f275f8ded3b44e4e8217bf238","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        parser.add_argument("},{"line_number":96,"context_line":"            \u0027--advertise-extra-routes\u0027,"},{"line_number":97,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":98,"context_line":"            help\u003d_(\"Enable redistribution of neutron extra routes address to\""},{"line_number":99,"context_line":"                   \" BGP.\"))"},{"line_number":100,"context_line":"        parser.add_argument("},{"line_number":101,"context_line":"            \u0027--no-advertise-extra-routes\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"eee40725_90572108","line":98,"range":{"start_line":98,"start_character":52,"end_line":98,"end_character":73},"in_reply_to":"b9c14934_0edfe5ef","updated":"2021-10-11 11:21:46.000000000","message":"Done","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"090f8e7ecc4525bc308a6ca2dc810398ba9a73b6","unresolved":true,"context_lines":[{"line_number":100,"context_line":"        parser.add_argument("},{"line_number":101,"context_line":"            \u0027--no-advertise-extra-routes\u0027,"},{"line_number":102,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":103,"context_line":"            help\u003d_(\"Disable redistribution of neutron extra routes address to\""},{"line_number":104,"context_line":"                   \" BGP.\"))"},{"line_number":105,"context_line":"        return parser"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7b5dce70_d1dd89f5","line":103,"range":{"start_line":103,"start_character":54,"end_line":103,"end_character":74},"updated":"2021-09-01 09:54:00.000000000","message":"ditto","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"bbb96fdc0a297a8f275f8ded3b44e4e8217bf238","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        parser.add_argument("},{"line_number":101,"context_line":"            \u0027--no-advertise-extra-routes\u0027,"},{"line_number":102,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":103,"context_line":"            help\u003d_(\"Disable redistribution of neutron extra routes address to\""},{"line_number":104,"context_line":"                   \" BGP.\"))"},{"line_number":105,"context_line":"        return parser"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"01d85d91_df4163b6","line":103,"range":{"start_line":103,"start_character":54,"end_line":103,"end_character":74},"in_reply_to":"7b5dce70_d1dd89f5","updated":"2021-10-11 11:21:46.000000000","message":"Done","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"7c21fc82933c2e171786fce32ed4ef537b1f707e","unresolved":true,"context_lines":[{"line_number":123,"context_line":"                _router_association_id, _speaker_id, body)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"class DeleteSpeakerRouterAssociation(command.ShowOne):"},{"line_number":127,"context_line":"    _description \u003d _(\"Delete a BGP speaker router association\")"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ac097c37_7e09367f","line":126,"updated":"2021-10-25 14:30:29.000000000","message":"\"delete\" works, but it prints some noise:\n\n$ openstack bgp speaker router association list speaker0\n+--------------------------------------+------------------+----------------------------------+--------------------------------------+------------------------+--------+\n| ID                                   | Name             | Tenant ID                        | Router ID                            | Advertise extra routes | Status |\n+--------------------------------------+------------------+----------------------------------+--------------------------------------+------------------------+--------+\n| 59efc5b4-a4ba-417e-b379-63c126a6aed7 | speaker0-router0 | 39fbe5eb77c448a188a2ca42e9e4ed04 | f4e52bdb-bf5c-436f-baee-e7c30b390fcb | True                   | DOWN   |\n+--------------------------------------+------------------+----------------------------------+--------------------------------------+------------------------+--------+\n$ openstack bgp speaker router association delete speaker0-router0 speaker0\ncannot unpack non-iterable NoneType object","commit_id":"9e2c275c49941ad3642540c48285557d98d6fb5e"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"83c1be663de175e04ca227dde924ff6496854026","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                _router_association_id, _speaker_id, body)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"class DeleteSpeakerRouterAssociation(command.ShowOne):"},{"line_number":127,"context_line":"    _description \u003d _(\"Delete a BGP speaker router association\")"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"204877b2_b8e4f475","line":126,"in_reply_to":"ac097c37_7e09367f","updated":"2021-10-26 06:48:25.000000000","message":"delete started working after changing command.ShowOne to command.Command","commit_id":"9e2c275c49941ad3642540c48285557d98d6fb5e"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"7c21fc82933c2e171786fce32ed4ef537b1f707e","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    def get_parser(self, prog_name):"},{"line_number":43,"context_line":"        parser \u003d super(CreateSpeakerRouterAssociation, self)\\"},{"line_number":44,"context_line":"                .get_parser(prog_name)"},{"line_number":45,"context_line":"        parser.add_argument("},{"line_number":46,"context_line":"            \u0027name\u0027,"},{"line_number":47,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":48,"context_line":"            help\u003d_(\"Name of the BGP speaker router association to create\"))"},{"line_number":49,"context_line":"        parser.add_argument("},{"line_number":50,"context_line":"            \u0027bgp_speaker\u0027,"},{"line_number":51,"context_line":"            metavar\u003d\u0027BGP_SPEAKER\u0027,"},{"line_number":52,"context_line":"            help\u003d_(\u0027ID or name of the BGP speaker.\u0027))"},{"line_number":53,"context_line":"        parser.add_argument("},{"line_number":54,"context_line":"            \u0027router\u0027,"},{"line_number":55,"context_line":"            metavar\u003d\u0027ROUTER\u0027,"},{"line_number":56,"context_line":"            help\u003d_(\u0027ID or name of the router to add.\u0027))"},{"line_number":57,"context_line":"        parser.add_argument("},{"line_number":58,"context_line":"            \u0027--advertise-extra-routes\u0027,"},{"line_number":59,"context_line":"            action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"684a05ae_54c19481","line":56,"range":{"start_line":45,"start_character":0,"end_line":56,"end_character":55},"updated":"2021-10-25 14:30:29.000000000","message":"As commented in the peer association change [1], this may not be the best argument order. Whichever syntax you choose finally, please apply that here too.\n\n[1] https://review.opendev.org/c/openstack/python-neutronclient/+/803458/comment/cf64cb2c_480a9919/","commit_id":"b2d906fbc8782eee55a70dcb6f0d23e971d468ec"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"83c1be663de175e04ca227dde924ff6496854026","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    def get_parser(self, prog_name):"},{"line_number":43,"context_line":"        parser \u003d super(CreateSpeakerRouterAssociation, self)\\"},{"line_number":44,"context_line":"                .get_parser(prog_name)"},{"line_number":45,"context_line":"        parser.add_argument("},{"line_number":46,"context_line":"            \u0027name\u0027,"},{"line_number":47,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":48,"context_line":"            help\u003d_(\"Name of the BGP speaker router association to create\"))"},{"line_number":49,"context_line":"        parser.add_argument("},{"line_number":50,"context_line":"            \u0027bgp_speaker\u0027,"},{"line_number":51,"context_line":"            metavar\u003d\u0027BGP_SPEAKER\u0027,"},{"line_number":52,"context_line":"            help\u003d_(\u0027ID or name of the BGP speaker.\u0027))"},{"line_number":53,"context_line":"        parser.add_argument("},{"line_number":54,"context_line":"            \u0027router\u0027,"},{"line_number":55,"context_line":"            metavar\u003d\u0027ROUTER\u0027,"},{"line_number":56,"context_line":"            help\u003d_(\u0027ID or name of the router to add.\u0027))"},{"line_number":57,"context_line":"        parser.add_argument("},{"line_number":58,"context_line":"            \u0027--advertise-extra-routes\u0027,"},{"line_number":59,"context_line":"            action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9331cd13_90c5fd8e","line":56,"range":{"start_line":45,"start_character":0,"end_line":56,"end_character":55},"in_reply_to":"684a05ae_54c19481","updated":"2021-10-26 06:48:25.000000000","message":"Sure, will address it.\nHave not addressed this in patchset 7. Will update it after finalizing the approach.\n\nAll other comments are addressed in patchset 7.","commit_id":"b2d906fbc8782eee55a70dcb6f0d23e971d468ec"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"7c21fc82933c2e171786fce32ed4ef537b1f707e","unresolved":true,"context_lines":[{"line_number":123,"context_line":"                _router_association_id, _speaker_id, body)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"class DeleteSpeakerRouterAssociation(command.ShowOne):"},{"line_number":127,"context_line":"    _description \u003d _(\"Delete a BGP speaker router association\")"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"e167e414_927a3490","line":126,"range":{"start_line":126,"start_character":45,"end_line":126,"end_character":52},"updated":"2021-10-25 14:30:29.000000000","message":"Is this intentional?","commit_id":"b2d906fbc8782eee55a70dcb6f0d23e971d468ec"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"83c1be663de175e04ca227dde924ff6496854026","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                _router_association_id, _speaker_id, body)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"class DeleteSpeakerRouterAssociation(command.ShowOne):"},{"line_number":127,"context_line":"    _description \u003d _(\"Delete a BGP speaker router association\")"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"6fe2d897_51960f80","line":126,"range":{"start_line":126,"start_character":45,"end_line":126,"end_character":52},"in_reply_to":"e167e414_927a3490","updated":"2021-10-26 06:48:25.000000000","message":"No, will change it to command.Command","commit_id":"b2d906fbc8782eee55a70dcb6f0d23e971d468ec"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"7c21fc82933c2e171786fce32ed4ef537b1f707e","unresolved":true,"context_lines":[{"line_number":170,"context_line":"                                           parsed_args.bgp_speaker)[\u0027id\u0027]"},{"line_number":171,"context_line":"        data \u003d client.list_bgp_speaker_router_associations(_speaker_id)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027Tenant ID\u0027, \u0027Router ID\u0027,"},{"line_number":174,"context_line":"                   \u0027Advertise extra routes\u0027, \u0027Status\u0027)"},{"line_number":175,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027tenant_id\u0027, \u0027router_id\u0027,"},{"line_number":176,"context_line":"                   \u0027advertise_extra_routes\u0027, \u0027status\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"67654933_f613e467","line":173,"range":{"start_line":173,"start_character":34,"end_line":173,"end_character":40},"updated":"2021-10-25 14:30:29.000000000","message":"As commented in the peer association change too, let\u0027s use Project ID instead of Tenant ID.","commit_id":"b2d906fbc8782eee55a70dcb6f0d23e971d468ec"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"83c1be663de175e04ca227dde924ff6496854026","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                                           parsed_args.bgp_speaker)[\u0027id\u0027]"},{"line_number":171,"context_line":"        data \u003d client.list_bgp_speaker_router_associations(_speaker_id)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027Tenant ID\u0027, \u0027Router ID\u0027,"},{"line_number":174,"context_line":"                   \u0027Advertise extra routes\u0027, \u0027Status\u0027)"},{"line_number":175,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027tenant_id\u0027, \u0027router_id\u0027,"},{"line_number":176,"context_line":"                   \u0027advertise_extra_routes\u0027, \u0027status\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"aaac59b3_11af0efd","line":173,"range":{"start_line":173,"start_character":34,"end_line":173,"end_character":40},"in_reply_to":"67654933_f613e467","updated":"2021-10-26 06:48:25.000000000","message":"Done","commit_id":"b2d906fbc8782eee55a70dcb6f0d23e971d468ec"}],"neutronclient/v2_0/client.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"090f8e7ecc4525bc308a6ca2dc810398ba9a73b6","unresolved":true,"context_lines":[{"line_number":2138,"context_line":"    def create_bgp_speaker_router_association(self, speaker_id, body\u003dNone):"},{"line_number":2139,"context_line":"        \"\"\"Creates a new BGP speaker router association.\"\"\""},{"line_number":2140,"context_line":"        return self.post("},{"line_number":2141,"context_line":"                       self.bgp_speaker_router_associations_path % speaker_id,"},{"line_number":2142,"context_line":"                       body\u003dbody)"},{"line_number":2143,"context_line":""},{"line_number":2144,"context_line":"    def update_bgp_speaker_router_association(self, assoc_id, speaker_id,"},{"line_number":2145,"context_line":"                                              body\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"4e807393_fbc8a945","line":2142,"range":{"start_line":2141,"start_character":23,"end_line":2142,"end_character":33},"updated":"2021-09-01 09:54:00.000000000","message":"Could you use 4-char indent?\nI see no reason to use more indent.","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"bbb96fdc0a297a8f275f8ded3b44e4e8217bf238","unresolved":false,"context_lines":[{"line_number":2138,"context_line":"    def create_bgp_speaker_router_association(self, speaker_id, body\u003dNone):"},{"line_number":2139,"context_line":"        \"\"\"Creates a new BGP speaker router association.\"\"\""},{"line_number":2140,"context_line":"        return self.post("},{"line_number":2141,"context_line":"                       self.bgp_speaker_router_associations_path % speaker_id,"},{"line_number":2142,"context_line":"                       body\u003dbody)"},{"line_number":2143,"context_line":""},{"line_number":2144,"context_line":"    def update_bgp_speaker_router_association(self, assoc_id, speaker_id,"},{"line_number":2145,"context_line":"                                              body\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"81a13dcb_719abc2a","line":2142,"range":{"start_line":2141,"start_character":23,"end_line":2142,"end_character":33},"in_reply_to":"4e807393_fbc8a945","updated":"2021-10-11 11:21:46.000000000","message":"Done","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"090f8e7ecc4525bc308a6ca2dc810398ba9a73b6","unresolved":true,"context_lines":[{"line_number":2159,"context_line":"        return self.list("},{"line_number":2160,"context_line":"                       \u0027router_associations\u0027,"},{"line_number":2161,"context_line":"                       self.bgp_speaker_router_associations_path % speaker_id,"},{"line_number":2162,"context_line":"                       retrieve_all, **_params)"},{"line_number":2163,"context_line":""},{"line_number":2164,"context_line":"    def show_bgp_speaker_router_association(self, assoc_id, speaker_id,"},{"line_number":2165,"context_line":"                                            **_params):"}],"source_content_type":"text/x-python","patch_set":2,"id":"616f61ff_1e31fbc0","line":2162,"updated":"2021-09-01 09:54:00.000000000","message":"Could you 4-char indent?","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"bbb96fdc0a297a8f275f8ded3b44e4e8217bf238","unresolved":false,"context_lines":[{"line_number":2159,"context_line":"        return self.list("},{"line_number":2160,"context_line":"                       \u0027router_associations\u0027,"},{"line_number":2161,"context_line":"                       self.bgp_speaker_router_associations_path % speaker_id,"},{"line_number":2162,"context_line":"                       retrieve_all, **_params)"},{"line_number":2163,"context_line":""},{"line_number":2164,"context_line":"    def show_bgp_speaker_router_association(self, assoc_id, speaker_id,"},{"line_number":2165,"context_line":"                                            **_params):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ce69b4a6_46183c45","line":2162,"in_reply_to":"616f61ff_1e31fbc0","updated":"2021-10-11 11:21:46.000000000","message":"Done","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"}],"setup.cfg":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"090f8e7ecc4525bc308a6ca2dc810398ba9a73b6","unresolved":true,"context_lines":[{"line_number":92,"context_line":"    bgp_speaker_router_association_set \u003d neutronclient.osc.v2.dynamic_routing.router_association:SetSpeakerRouterAssociation"},{"line_number":93,"context_line":"    bgp_speaker_router_association_delete \u003d neutronclient.osc.v2.dynamic_routing.router_association:DeleteSpeakerRouterAssociation"},{"line_number":94,"context_line":"    bgp_speaker_router_association_show \u003d neutronclient.osc.v2.dynamic_routing.router_association:ShowSpeakerRouterAssociation"},{"line_number":95,"context_line":"    bgp_speaker_router_association_list \u003d neutronclient.osc.v2.dynamic_routing.router_association:ListSpeakerRouterAssociations"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    firewall_group_create \u003d neutronclient.osc.v2.fwaas.firewallgroup:CreateFirewallGroup"},{"line_number":98,"context_line":"    firewall_group_delete \u003d neutronclient.osc.v2.fwaas.firewallgroup:DeleteFirewallGroup"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"372c7580_40e7c5d6","line":95,"updated":"2021-09-01 09:54:00.000000000","message":"Could you sort entries in the alphabetical order?\nThis is the convention.\n\ncreate -\u003e delete -\u003e list -\u003e set -\u003e show","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"bbb96fdc0a297a8f275f8ded3b44e4e8217bf238","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    bgp_speaker_router_association_set \u003d neutronclient.osc.v2.dynamic_routing.router_association:SetSpeakerRouterAssociation"},{"line_number":93,"context_line":"    bgp_speaker_router_association_delete \u003d neutronclient.osc.v2.dynamic_routing.router_association:DeleteSpeakerRouterAssociation"},{"line_number":94,"context_line":"    bgp_speaker_router_association_show \u003d neutronclient.osc.v2.dynamic_routing.router_association:ShowSpeakerRouterAssociation"},{"line_number":95,"context_line":"    bgp_speaker_router_association_list \u003d neutronclient.osc.v2.dynamic_routing.router_association:ListSpeakerRouterAssociations"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    firewall_group_create \u003d neutronclient.osc.v2.fwaas.firewallgroup:CreateFirewallGroup"},{"line_number":98,"context_line":"    firewall_group_delete \u003d neutronclient.osc.v2.fwaas.firewallgroup:DeleteFirewallGroup"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"881b66b3_a66e81f9","line":95,"in_reply_to":"372c7580_40e7c5d6","updated":"2021-10-11 11:21:46.000000000","message":"Done","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"090f8e7ecc4525bc308a6ca2dc810398ba9a73b6","unresolved":true,"context_lines":[{"line_number":371,"context_line":"    bgp-speaker-router-association-update \u003d neutronclient.neutron.v2_0.bgp.router_association:UpdateSpeakerRouterAssociation"},{"line_number":372,"context_line":"    bgp-speaker-router-association-delete \u003d neutronclient.neutron.v2_0.bgp.router_association:DeleteSpeakerRouterAssociation"},{"line_number":373,"context_line":"    bgp-speaker-router-association-list \u003d neutronclient.neutron.v2_0.bgp.router_association:ListSpeakerRouterAssociations"},{"line_number":374,"context_line":"    bgp-speaker-router-association-show \u003d neutronclient.neutron.v2_0.bgp.router_association:ShowSpeakerRouterAssociation"},{"line_number":375,"context_line":"    bgp-peer-list \u003d neutronclient.neutron.v2_0.bgp.peer:ListPeers"},{"line_number":376,"context_line":"    bgp-peer-show \u003d neutronclient.neutron.v2_0.bgp.peer:ShowPeer"},{"line_number":377,"context_line":"    bgp-peer-create \u003d neutronclient.neutron.v2_0.bgp.peer:CreatePeer"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"a6ed309d_c85c073c","line":374,"updated":"2021-09-01 09:54:00.000000000","message":"Could you avoid adding new commands to this namespace (neutron.cli.v2)?\n\"neutron CLI\" is deprecated and it means we don\u0027t have more features in \"neutron CLI\".","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"bbb96fdc0a297a8f275f8ded3b44e4e8217bf238","unresolved":false,"context_lines":[{"line_number":371,"context_line":"    bgp-speaker-router-association-update \u003d neutronclient.neutron.v2_0.bgp.router_association:UpdateSpeakerRouterAssociation"},{"line_number":372,"context_line":"    bgp-speaker-router-association-delete \u003d neutronclient.neutron.v2_0.bgp.router_association:DeleteSpeakerRouterAssociation"},{"line_number":373,"context_line":"    bgp-speaker-router-association-list \u003d neutronclient.neutron.v2_0.bgp.router_association:ListSpeakerRouterAssociations"},{"line_number":374,"context_line":"    bgp-speaker-router-association-show \u003d neutronclient.neutron.v2_0.bgp.router_association:ShowSpeakerRouterAssociation"},{"line_number":375,"context_line":"    bgp-peer-list \u003d neutronclient.neutron.v2_0.bgp.peer:ListPeers"},{"line_number":376,"context_line":"    bgp-peer-show \u003d neutronclient.neutron.v2_0.bgp.peer:ShowPeer"},{"line_number":377,"context_line":"    bgp-peer-create \u003d neutronclient.neutron.v2_0.bgp.peer:CreatePeer"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"f824ef90_16f5f4ef","line":374,"in_reply_to":"a6ed309d_c85c073c","updated":"2021-10-11 11:21:46.000000000","message":"Done","commit_id":"dd3e22d29cc820ca20928cb91a8117bed976eea3"}]}
