)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"4b23e7ba099caba6f17da2ddcb9df68f3d5bf1e3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"CLIs to align with OSC plugin."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ic1a633ca103d9e97e28ddf23e0f528e0261ce497"},{"line_number":13,"context_line":"Partially-Implements: blueprint bgp-spinout"},{"line_number":14,"context_line":"Partial-Bug: #156000"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1a6eadb0_00710c76","line":13,"updated":"2016-12-16 02:12:08.000000000","message":"please, make this dependent on [1]\n\n[1] https://review.openstack.org/#/c/404488/","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"9e2312a803e1fe2622a5ad358a61c241e7e3007e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Change-Id: Ic1a633ca103d9e97e28ddf23e0f528e0261ce497"},{"line_number":13,"context_line":"Partially-Implements: blueprint bgp-spinout"},{"line_number":14,"context_line":"Partial-Bug: #156000"},{"line_number":15,"context_line":"Depends-On: I864c89d2b91834e5ba0b082da883b3234b522d5c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"3a461143_1cbd0cb7","line":15,"updated":"2017-01-30 20:45:56.000000000","message":"we should not forget to update [1]. I also see no inline doc, like [2].\n\n[1] http://docs.openstack.org/newton/networking-guide/config-bgp-dynamic-routing.html\n[2] http://docs.openstack.org/developer/python-neutronclient/usage/osc_cli_plugins.html","commit_id":"75dd70999d5ced15ee8dbd31558076fc3888d041"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"6a0c74ed6ed4eb6f51a388307bfd6956e1ac217d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Change-Id: Ic1a633ca103d9e97e28ddf23e0f528e0261ce497"},{"line_number":13,"context_line":"Partially-Implements: blueprint bgp-spinout"},{"line_number":14,"context_line":"Partial-Bug: #156000"},{"line_number":15,"context_line":"Depends-On: I864c89d2b91834e5ba0b082da883b3234b522d5c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"3a461143_4c825bc9","line":15,"in_reply_to":"3a461143_1cbd0cb7","updated":"2017-01-31 19:33:44.000000000","message":"Done","commit_id":"75dd70999d5ced15ee8dbd31558076fc3888d041"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"b40893c27856ffd59188306f750dfbcde07e6291","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Change-Id: Ic1a633ca103d9e97e28ddf23e0f528e0261ce497"},{"line_number":13,"context_line":"Co-Authored-By: Ryan Tidwell \u003cryan@6tidwells.com\u003e"},{"line_number":14,"context_line":"Partially-Implements: blueprint bgp-spinout"},{"line_number":15,"context_line":"Partial-Bug: #156000"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"9a30ddce_8f475e4a","line":15,"updated":"2017-03-08 16:35:55.000000000","message":"That bug id seems wrong, 1560003 maybe?","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Change-Id: Ic1a633ca103d9e97e28ddf23e0f528e0261ce497"},{"line_number":13,"context_line":"Co-Authored-By: Ryan Tidwell \u003cryan@6tidwells.com\u003e"},{"line_number":14,"context_line":"Partially-Implements: blueprint bgp-spinout"},{"line_number":15,"context_line":"Partial-Bug: #156000"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"df140735_22978f93","line":15,"in_reply_to":"9a30ddce_8f475e4a","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"}],"doc/source/cli/osc/v2/bgp-dynamic-routing.rst":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":38,"context_line":"   :command: bgp speaker add peer"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":".. autoprogram-cliff:: openstack.neutronclient.v2"},{"line_number":41,"context_line":"   :command: bgp speaker remove peer"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":".. autoprogram-cliff:: openstack.neutronclient.v2"},{"line_number":44,"context_line":"   :command: bgp peer *"}],"source_content_type":"text/x-rst","patch_set":32,"id":"ff346bd7_fa12a161","line":41,"updated":"2017-07-28 00:49:07.000000000","message":"\u0027bgp speaker list advertiseroute\u0027 is missing?\n\nIn addition, \u0027advertised routes\u0027 looks better.\n(two words looks natural, advertise -\u003e advertised, route -\u003e routes)","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"   :command: bgp speaker add peer"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":".. autoprogram-cliff:: openstack.neutronclient.v2"},{"line_number":41,"context_line":"   :command: bgp speaker remove peer"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":".. autoprogram-cliff:: openstack.neutronclient.v2"},{"line_number":44,"context_line":"   :command: bgp peer *"}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf3e73b7_8193dd4f","line":41,"in_reply_to":"ff346bd7_fa12a161","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":43,"context_line":".. autoprogram-cliff:: openstack.neutronclient.v2"},{"line_number":44,"context_line":"   :command: bgp peer *"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. autoprogram-cliff:: openstack.neutronclient.v2"},{"line_number":47,"context_line":"   :command: bgp dragent show speakers"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":".. autoprogram-cliff:: openstack.neutronclient.v2"},{"line_number":50,"context_line":"   :command: bgp dragent add speaker"}],"source_content_type":"text/x-rst","patch_set":32,"id":"ff346bd7_fa44e175","line":50,"range":{"start_line":46,"start_character":0,"end_line":50,"end_character":36},"updated":"2017-07-28 00:49:07.000000000","message":"remove speaker is missing. How about using \"bgp dragent *\" instead?","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":43,"context_line":".. autoprogram-cliff:: openstack.neutronclient.v2"},{"line_number":44,"context_line":"   :command: bgp peer *"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. autoprogram-cliff:: openstack.neutronclient.v2"},{"line_number":47,"context_line":"   :command: bgp dragent show speakers"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":".. autoprogram-cliff:: openstack.neutronclient.v2"},{"line_number":50,"context_line":"   :command: bgp dragent add speaker"}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf3e73b7_41a3b550","line":50,"range":{"start_line":46,"start_character":0,"end_line":50,"end_character":36},"in_reply_to":"ff346bd7_fa44e175","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"}],"doc/source/usage/osc/v2/bgp-dynamic-routing.rst":[{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"f03b59f11e104199fddc296f997c923d058299ea","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    openstack bgp peer create"},{"line_number":32,"context_line":"        --remote_as \u003cremote_as\u003e"},{"line_number":33,"context_line":"        --name \u003cname\u003e"},{"line_number":34,"context_line":"        --peer_ip \u003cpeer_ip\u003e"},{"line_number":35,"context_line":"        [--auth_type \u003cnone | md5\u003e]"},{"line_number":36,"context_line":"        [--password \u003cpassword\u003e]"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa31d9ce_866b3084","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":17},"updated":"2017-02-16 03:01:31.000000000","message":"peer-ip","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"034a3adc055665613a4613fb8f45fb64474a0b22","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    openstack bgp peer create"},{"line_number":32,"context_line":"        --remote_as \u003cremote_as\u003e"},{"line_number":33,"context_line":"        --name \u003cname\u003e"},{"line_number":34,"context_line":"        --peer_ip \u003cpeer_ip\u003e"},{"line_number":35,"context_line":"        [--auth_type \u003cnone | md5\u003e]"},{"line_number":36,"context_line":"        [--password \u003cpassword\u003e]"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"da36d5c6_14658744","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":17},"in_reply_to":"fa31d9ce_866b3084","updated":"2017-02-20 09:01:46.000000000","message":"+1, we already use \u0027peer-ip\u0027 https://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/bgp/peer.py#L70","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    openstack bgp peer create"},{"line_number":32,"context_line":"        --remote_as \u003cremote_as\u003e"},{"line_number":33,"context_line":"        --name \u003cname\u003e"},{"line_number":34,"context_line":"        --peer_ip \u003cpeer_ip\u003e"},{"line_number":35,"context_line":"        [--auth_type \u003cnone | md5\u003e]"},{"line_number":36,"context_line":"        [--password \u003cpassword\u003e]"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"df140735_ee686322","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":17},"in_reply_to":"fa31d9ce_866b3084","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"f03b59f11e104199fddc296f997c923d058299ea","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        [--auth_type \u003cnone | md5\u003e]"},{"line_number":36,"context_line":"        [--password \u003cpassword\u003e]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":".. option:: --remote_as \u003cremote_as\u003e"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    The autonomous system number of the BGP peer"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa31d9ce_06dca044","line":38,"range":{"start_line":38,"start_character":14,"end_line":38,"end_character":23},"updated":"2017-02-16 03:01:31.000000000","message":"remote-as\ngeneral comment .. match the option name in py modules to this file","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"034a3adc055665613a4613fb8f45fb64474a0b22","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        [--auth_type \u003cnone | md5\u003e]"},{"line_number":36,"context_line":"        [--password \u003cpassword\u003e]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":".. option:: --remote_as \u003cremote_as\u003e"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    The autonomous system number of the BGP peer"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"da36d5c6_345a8b84","line":38,"range":{"start_line":38,"start_character":14,"end_line":38,"end_character":23},"in_reply_to":"fa31d9ce_06dca044","updated":"2017-02-20 09:01:46.000000000","message":"+1","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        [--auth_type \u003cnone | md5\u003e]"},{"line_number":36,"context_line":"        [--password \u003cpassword\u003e]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":".. option:: --remote_as \u003cremote_as\u003e"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    The autonomous system number of the BGP peer"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"df140735_ce759ffc","line":38,"range":{"start_line":38,"start_character":14,"end_line":38,"end_character":23},"in_reply_to":"fa31d9ce_06dca044","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"b40893c27856ffd59188306f750dfbcde07e6291","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    openstack bgp speaker create"},{"line_number":121,"context_line":"        --local_as \u003clocal_as\u003e"},{"line_number":122,"context_line":"        --name \u003cname\u003e"},{"line_number":123,"context_line":"        --ip_version \u003cip_version\u003e"},{"line_number":124,"context_line":"        [--advertise_tenant_networks \u003cTrue | False\u003e]"},{"line_number":125,"context_line":"        [--advertise_floating_ip_host_routes \u003cTrue | False\u003e]"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a30ddce_2fc5928d","line":123,"updated":"2017-03-08 16:35:55.000000000","message":"Shouldn\u0027t this also be --ip-version like e.g. for subnet create?","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    openstack bgp speaker create"},{"line_number":121,"context_line":"        --local_as \u003clocal_as\u003e"},{"line_number":122,"context_line":"        --name \u003cname\u003e"},{"line_number":123,"context_line":"        --ip_version \u003cip_version\u003e"},{"line_number":124,"context_line":"        [--advertise_tenant_networks \u003cTrue | False\u003e]"},{"line_number":125,"context_line":"        [--advertise_floating_ip_host_routes \u003cTrue | False\u003e]"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"df140735_ae726b10","line":123,"in_reply_to":"9a30ddce_2fc5928d","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"b40893c27856ffd59188306f750dfbcde07e6291","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. option:: --ip_version"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    The address family (4 or 6) of the prefixes advertised by"},{"line_number":138,"context_line":"    the BGP speaker."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":".. option:: --advertise_tenant_networks \u003cTrue | False\u003e"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a30ddce_6fbf8afb","line":137,"updated":"2017-03-08 16:35:55.000000000","message":"Have a default of 4 here?","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. option:: --ip_version"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    The address family (4 or 6) of the prefixes advertised by"},{"line_number":138,"context_line":"    the BGP speaker."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":".. option:: --advertise_tenant_networks \u003cTrue | False\u003e"}],"source_content_type":"text/x-rst","patch_set":17,"id":"df140735_ae4b8bae","line":137,"in_reply_to":"9a30ddce_6fbf8afb","updated":"2017-05-28 11:33:38.000000000","message":"Given a default 4, as in neutronclient.","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"b40893c27856ffd59188306f750dfbcde07e6291","unresolved":false,"context_lines":[{"line_number":145,"context_line":".. option:: --advertise_floating_ip_host_routes \u003cTrue | False\u003e"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    Specify whether to announce host routes for floating IP"},{"line_number":148,"context_line":"    addresses. Defaults to True."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"bgp speaker delete"},{"line_number":151,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a30ddce_4f6e4697","line":148,"updated":"2017-03-08 16:35:55.000000000","message":"Would it be possible to have a default of False here for IPv6 where we do not have floating IPs anyway?","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"f03b59f11e104199fddc296f997c923d058299ea","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    Specify whether to announce host routes for floating IP"},{"line_number":148,"context_line":"    addresses. Defaults to True."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"bgp speaker delete"},{"line_number":151,"context_line":"------------------"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Delete a given network trunk"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. program:: bgp speaker delete"},{"line_number":156,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa31d9ce_46a698ae","line":153,"range":{"start_line":150,"start_character":0,"end_line":153,"end_character":28},"updated":"2017-02-16 03:01:31.000000000","message":":)","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"034a3adc055665613a4613fb8f45fb64474a0b22","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    Specify whether to announce host routes for floating IP"},{"line_number":148,"context_line":"    addresses. Defaults to True."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"bgp speaker delete"},{"line_number":151,"context_line":"------------------"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Delete a given network trunk"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. program:: bgp speaker delete"},{"line_number":156,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":17,"id":"da36d5c6_147e67e4","line":153,"range":{"start_line":150,"start_character":0,"end_line":153,"end_character":28},"in_reply_to":"fa31d9ce_46a698ae","updated":"2017-02-20 09:01:46.000000000","message":"+1","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    Specify whether to announce host routes for floating IP"},{"line_number":148,"context_line":"    addresses. Defaults to True."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"bgp speaker delete"},{"line_number":151,"context_line":"------------------"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Delete a given network trunk"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. program:: bgp speaker delete"},{"line_number":156,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":17,"id":"df140735_6ecb331e","line":153,"range":{"start_line":150,"start_character":0,"end_line":153,"end_character":28},"in_reply_to":"fa31d9ce_46a698ae","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"ae9fe8e4c3f097aa0b0697ed9348b335dd4db0c7","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    openstack bgp peer create"},{"line_number":32,"context_line":"        --remote-as \u003cremote_as\u003e"},{"line_number":33,"context_line":"        --name \u003cname\u003e"},{"line_number":34,"context_line":"        --peer-ip \u003cpeer_ip\u003e"},{"line_number":35,"context_line":"        [--auth-type \u003cnone | md5\u003e]"},{"line_number":36,"context_line":"        [--password \u003cpassword\u003e]"}],"source_content_type":"text/x-rst","patch_set":23,"id":"df140735_5c52e4df","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":21},"updated":"2017-06-02 03:07:15.000000000","message":"This is position argument.\nConsider for other create case if i missed.","commit_id":"aab4509a5ecf1001bbc5ec507a1bbd21125e02ab"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"e24e3e5787028f310b729bbb2b25d785ad33283d","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    openstack bgp peer create"},{"line_number":32,"context_line":"        --remote-as \u003cremote_as\u003e"},{"line_number":33,"context_line":"        --name \u003cname\u003e"},{"line_number":34,"context_line":"        --peer-ip \u003cpeer_ip\u003e"},{"line_number":35,"context_line":"        [--auth-type \u003cnone | md5\u003e]"},{"line_number":36,"context_line":"        [--password \u003cpassword\u003e]"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7f231b9d_9e3b4f9b","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":21},"in_reply_to":"df140735_5c52e4df","updated":"2017-06-11 11:24:51.000000000","message":"Done","commit_id":"aab4509a5ecf1001bbc5ec507a1bbd21125e02ab"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"ae9fe8e4c3f097aa0b0697ed9348b335dd4db0c7","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        --peer-ip \u003cpeer_ip\u003e"},{"line_number":35,"context_line":"        [--auth-type \u003cnone | md5\u003e]"},{"line_number":36,"context_line":"        [--password \u003cpassword\u003e]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":".. option:: --remote-as \u003cremote_as\u003e"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    The autonomous system number of the BGP peer"}],"source_content_type":"text/x-rst","patch_set":23,"id":"df140735_bc5c60ed","line":37,"updated":"2017-06-02 03:07:15.000000000","message":"I see \"--project\" option in the code but don\u0027t see it mentioned here?\nConsider to update for all other cases if i missed.","commit_id":"aab4509a5ecf1001bbc5ec507a1bbd21125e02ab"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"e24e3e5787028f310b729bbb2b25d785ad33283d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        --peer-ip \u003cpeer_ip\u003e"},{"line_number":35,"context_line":"        [--auth-type \u003cnone | md5\u003e]"},{"line_number":36,"context_line":"        [--password \u003cpassword\u003e]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":".. option:: --remote-as \u003cremote_as\u003e"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    The autonomous system number of the BGP peer"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7f231b9d_5e45b716","line":37,"in_reply_to":"df140735_bc5c60ed","updated":"2017-06-11 11:24:51.000000000","message":"Done","commit_id":"aab4509a5ecf1001bbc5ec507a1bbd21125e02ab"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eb3e1d0130972ce5c866b8cde5515c368c4c4815","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        \u003cbgp-speaker\u003e"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"bgp speaker network add"},{"line_number":220,"context_line":"-----------------------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Associate a BGP speaker with a network"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f231b9d_234f026c","line":219,"updated":"2017-06-18 13:18:29.000000000","message":"According to OSC command name convention, it will be:\n\n bgp speaker add network\n\nAnother idea is to use \u0027bgp speaker set\u0027 like:\n\n  bgp speaker set \u003cspeaker\u003e --network \u003cnet1\u003e\n\nand to remove a network from a speaker:\n\n  bgp speaker unset \u003cspeaker\u003e --network \u003cnet1\u003e\n\nYou can specify multiple networks in a single command:\n\n  bgp speaker set \u003cspeaker\u003e --network \u003cnet1\u003e --network \u003cnet2\u003e\n\nThought?","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"848009be14590d1c9506acdc0b774e05caf6c500","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        \u003cbgp-speaker\u003e"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"bgp speaker network add"},{"line_number":220,"context_line":"-----------------------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Associate a BGP speaker with a network"}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f1d235d_64e77de6","line":219,"in_reply_to":"3f1d235d_5d1d7d71","updated":"2017-07-03 09:14:53.000000000","message":"Perhaps, let\u0027s stick with the current version.","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"89715eb4e621b342c90f450d52d0c16388bacef0","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        \u003cbgp-speaker\u003e"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"bgp speaker network add"},{"line_number":220,"context_line":"-----------------------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Associate a BGP speaker with a network"}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f1d235d_5d1d7d71","line":219,"in_reply_to":"5f201791_8e91cb55","updated":"2017-07-03 04:00:24.000000000","message":"having two ways to do the same thing sounds like a bad idea.","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"22f366a131922b91432589fd1068f9c296c0cf31","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        \u003cbgp-speaker\u003e"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"bgp speaker network add"},{"line_number":220,"context_line":"-----------------------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Associate a BGP speaker with a network"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f231b9d_2e2d26a8","line":219,"in_reply_to":"7f231b9d_234f026c","updated":"2017-06-20 11:28:11.000000000","message":"I think that the original authors for this change were aware of the two notions, but decided to follow the current one, please see comment on AddPeerToSpeaker in patchset 17 (https://review.openstack.org/#/c/340763/17/neutronclient/osc/v2/dynamic_routing/bgp_speaker.py).\n\nPersonally, I\u0027m not sure why it\u0027s a good idea - the BGP API has specific actions for add network and peers, which require different request then an update on bgp-speaker (for example - when modifying name).\n\nAlso, I\u0027m not sure I understand your argument regarding the convention - What about \u0027openstack router add subnet\u0027 ?","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e6186b8000434e15f1c98084fa3fab79b1b8d54c","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        \u003cbgp-speaker\u003e"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"bgp speaker network add"},{"line_number":220,"context_line":"-----------------------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Associate a BGP speaker with a network"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f231b9d_64cfbd57","line":219,"in_reply_to":"7f231b9d_2e2d26a8","updated":"2017-06-20 12:11:24.000000000","message":"My comment has two parts: the first two line says the minimum change.  The rest discusses another idea.\n\nI am okay with the former one. \"\u003cobj1\u003e \u003caction\u003e \u003cobj2\u003e\" is one of the common pattern in OSC. At least, \u0027bpg speaker network add\u0027 is odd in the OSC convention.\n\nOne important thing is that there is no need to implement CLI in the same way as the API is implemented. One CLI command can call multiple calls. One CLI command can call some API calls selectively/conditionally. So it is not important how API is implemented.\nImportant point is how it is easy to understand from end-users (not developers familiar with the implementations).\n\nIn this case, \"bgp speaker add network\" looks good.\n\nMy last comment is to think what is better more deeply.\nIf it confused you, sorry for that.","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"45ab2d7e880ef7ecbbca7801560e1b38ade527a2","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        \u003cbgp-speaker\u003e"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"bgp speaker network add"},{"line_number":220,"context_line":"-----------------------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Associate a BGP speaker with a network"}],"source_content_type":"text/x-rst","patch_set":25,"id":"5f201791_8e91cb55","line":219,"in_reply_to":"7f231b9d_64cfbd57","updated":"2017-06-21 13:57:35.000000000","message":"Ok, no worries. \nI think we should keep the current \"bgp speaker add network/peer\" , in the future, we could also add \"bgp speaker set --network \u003cnet\u003e --peer \u003cpeer\u003e\"","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eb3e1d0130972ce5c866b8cde5515c368c4c4815","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        \u003cbgp-speaker\u003e"},{"line_number":229,"context_line":"        \u003cnetwork\u003e"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"bgp speaker network remove"},{"line_number":232,"context_line":"--------------------------"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"Remove the association between a BGP speaker and a network"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f231b9d_035406fe","line":231,"updated":"2017-06-18 13:18:29.000000000","message":"same as the above\n\nbgp speaker remove network","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eb3e1d0130972ce5c866b8cde5515c368c4c4815","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        \u003cbgp-speaker\u003e"},{"line_number":241,"context_line":"        \u003cnetwork\u003e"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"bgp speaker peer add"},{"line_number":244,"context_line":"--------------------"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Associate a BGP speaker with a BGP peer"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f231b9d_2e912948","line":243,"range":{"start_line":243,"start_character":0,"end_line":243,"end_character":20},"updated":"2017-06-18 13:18:29.000000000","message":"same as the above\n\nbgp speaker add peer","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eb3e1d0130972ce5c866b8cde5515c368c4c4815","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        \u003cbgp-speaker\u003e"},{"line_number":253,"context_line":"        \u003cbgp-peer\u003e"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"bgp speaker peer remove"},{"line_number":256,"context_line":"-----------------------"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"Remove the association between a BGP speaker and a BGP peer"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f231b9d_0e966d40","line":255,"updated":"2017-06-18 13:18:29.000000000","message":"same as the above\n\nbgp speaker remove peer","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"e950e3ea5b50eeec742dfa4435497fdd158aa45d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"BGP Dynamic Routing"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"BGP dynamic routing enables announcement of project subnet prefixes"},{"line_number":6,"context_line":"via BGP. Admins create BGP speakers and BGP peers. BGP peers can be"}],"source_content_type":"text/x-rst","patch_set":28,"id":"3f1d235d_52166ef3","line":3,"updated":"2017-07-12 01:36:57.000000000","message":"please see this patch for cli reference docs\n\nhttps://review.openstack.org/#/c/466585/\n\nAnd this patch for the new loaction for doc\nhttps://review.openstack.org/#/c/475154/","commit_id":"fa56f83416b1842e6695d3d029f1301dafaa3f9b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"9cd6baea44d0b5fdb23c2036a385f0963c8b9ead","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"BGP Dynamic Routing"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"BGP dynamic routing enables announcement of project subnet prefixes"},{"line_number":6,"context_line":"via BGP. Admins create BGP speakers and BGP peers. BGP peers can be"}],"source_content_type":"text/x-rst","patch_set":28,"id":"1f1a1f67_a94c00c8","line":3,"in_reply_to":"3f1d235d_52166ef3","updated":"2017-07-18 03:18:27.000000000","message":"+1","commit_id":"fa56f83416b1842e6695d3d029f1301dafaa3f9b"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"48ec493f2de8ec3084f0599846f8c56a1d8e4a5a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"BGP Dynamic Routing"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"BGP dynamic routing enables announcement of project subnet prefixes"},{"line_number":6,"context_line":"via BGP. Admins create BGP speakers and BGP peers. BGP peers can be"}],"source_content_type":"text/x-rst","patch_set":28,"id":"1f1a1f67_c1ba1109","line":3,"in_reply_to":"3f1d235d_52166ef3","updated":"2017-07-20 12:51:09.000000000","message":"Done","commit_id":"fa56f83416b1842e6695d3d029f1301dafaa3f9b"}],"neutronclient/osc/v2/dynamic_routing/bgp_dragent.py":[{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"bf9d6f03e09487c051ab94071de028e74e6b5ac5","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def _format_alive_state(item):"},{"line_number":24,"context_line":"    return \u0027:-)\u0027 if item else \u0027xxx\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"_formatters \u003d {"}],"source_content_type":"text/x-python","patch_set":34,"id":"bf3e73b7_47fde938","line":24,"range":{"start_line":24,"start_character":31,"end_line":24,"end_character":34},"updated":"2017-08-07 19:20:28.000000000","message":"XXX (caps) is what i see in osc code base\n\n\nsee network_agent.py in osc repo for example","commit_id":"5167f758850bc9b4446d9687ba4ed4b5cd15f739"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"36f51887853df482d2b5b556be4b8e23e863f68f","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def _format_alive_state(item):"},{"line_number":24,"context_line":"    return \u0027:-)\u0027 if item else \u0027xxx\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"_formatters \u003d {"}],"source_content_type":"text/x-python","patch_set":34,"id":"9f436f4f_79ba446e","line":24,"range":{"start_line":24,"start_character":31,"end_line":24,"end_character":34},"in_reply_to":"bf3e73b7_47fde938","updated":"2017-08-15 06:24:53.000000000","message":"Done","commit_id":"5167f758850bc9b4446d9687ba4ed4b5cd15f739"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"2ac85ece88df179e6c18b205eaa26661e5944975","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                                          parsed_args.bgp_speaker)[\u0027id\u0027]"},{"line_number":53,"context_line":"        client.add_bgp_speaker_to_dragent("},{"line_number":54,"context_line":"            parsed_args.dragent_id, {\u0027bgp_speaker_id\u0027: speaker_id})"},{"line_number":55,"context_line":"        print(_(\u0027Associated BGP speaker %s to the Dynamic Routing agent\u0027)"},{"line_number":56,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_e9c1fce5","line":55,"updated":"2017-10-23 14:47:34.000000000","message":"Sorry for coming in with a late comment, but can we drop this print, too? Other similar output was also removed when compared to the previous CLI. I think it is find to assume that the command performs the action that is it told to do without having to say so explicitly.  \n\nFine with doing this in a follow-up, though.","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f7985e5582fcf42b56338bcc9979860c4c925f0a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                                          parsed_args.bgp_speaker)[\u0027id\u0027]"},{"line_number":53,"context_line":"        client.add_bgp_speaker_to_dragent("},{"line_number":54,"context_line":"            parsed_args.dragent_id, {\u0027bgp_speaker_id\u0027: speaker_id})"},{"line_number":55,"context_line":"        print(_(\u0027Associated BGP speaker %s to the Dynamic Routing agent\u0027)"},{"line_number":56,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_aea05143","line":55,"in_reply_to":"3f4b6375_ac5f9270","updated":"2017-10-26 05:11:26.000000000","message":"Done","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a883cd36755aa0b4b0fe6f071178d3a45129a4a5","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                                          parsed_args.bgp_speaker)[\u0027id\u0027]"},{"line_number":53,"context_line":"        client.add_bgp_speaker_to_dragent("},{"line_number":54,"context_line":"            parsed_args.dragent_id, {\u0027bgp_speaker_id\u0027: speaker_id})"},{"line_number":55,"context_line":"        print(_(\u0027Associated BGP speaker %s to the Dynamic Routing agent\u0027)"},{"line_number":56,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_ac5f9270","line":55,"in_reply_to":"3f4b6375_e9c1fce5","updated":"2017-10-23 15:25:16.000000000","message":"You are right. In the OSC convention, update operation outputs nothing. You can send a follow-up patch later.","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"2ac85ece88df179e6c18b205eaa26661e5944975","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                                          parsed_args.bgp_speaker)[\u0027id\u0027]"},{"line_number":72,"context_line":"        client.remove_bgp_speaker_from_dragent(parsed_args.dragent_id,"},{"line_number":73,"context_line":"                                               speaker_id)"},{"line_number":74,"context_line":"        print(_(\u0027Disassociated BGP speaker %s from the Dynamic Routing agent\u0027)"},{"line_number":75,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_a9bb0470","line":74,"updated":"2017-10-23 14:47:34.000000000","message":"Dito","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f7985e5582fcf42b56338bcc9979860c4c925f0a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                                          parsed_args.bgp_speaker)[\u0027id\u0027]"},{"line_number":72,"context_line":"        client.remove_bgp_speaker_from_dragent(parsed_args.dragent_id,"},{"line_number":73,"context_line":"                                               speaker_id)"},{"line_number":74,"context_line":"        print(_(\u0027Disassociated BGP speaker %s from the Dynamic Routing agent\u0027)"},{"line_number":75,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_8e8b55c1","line":74,"in_reply_to":"3f4b6375_a9bb0470","updated":"2017-10-26 05:11:26.000000000","message":"Done","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"effe19038bc085301204a8296c1dcd7177971c16","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        parser \u003d super(ListDRAgentsHostingBgpSpeaker,"},{"line_number":87,"context_line":"                       self).get_parser(prog_name)"},{"line_number":88,"context_line":"        parser.add_argument(\u0027bgp_speaker\u0027,"},{"line_number":89,"context_line":"                            metavar\u003d\u0027\u003cbgp-peaker\u003e\u0027,"},{"line_number":90,"context_line":"                            help\u003d_(\"ID or name of the BGP Speaker\"))"},{"line_number":91,"context_line":"        return parser"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_8a7ca41f","line":89,"updated":"2017-10-24 08:46:29.000000000","message":"bgp-speaker","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f7985e5582fcf42b56338bcc9979860c4c925f0a","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        parser \u003d super(ListDRAgentsHostingBgpSpeaker,"},{"line_number":87,"context_line":"                       self).get_parser(prog_name)"},{"line_number":88,"context_line":"        parser.add_argument(\u0027bgp_speaker\u0027,"},{"line_number":89,"context_line":"                            metavar\u003d\u0027\u003cbgp-peaker\u003e\u0027,"},{"line_number":90,"context_line":"                            help\u003d_(\"ID or name of the BGP Speaker\"))"},{"line_number":91,"context_line":"        return parser"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_6e013938","line":89,"in_reply_to":"3f4b6375_8a7ca41f","updated":"2017-10-26 05:11:26.000000000","message":"Done","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"}],"neutronclient/osc/v2/dynamic_routing/bgp_peer.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"22ba50f7a25ed484e8169785366d68c17d90c788","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":21,"context_line":"from osc_lib.command import command"},{"line_number":22,"context_line":"from osc_lib import utils"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"BGP_PEERS \u003d \"bgp_peers\""},{"line_number":26,"context_line":"BGP_PEER \u003d \"bgp_peer\""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_14ec628e","line":23,"updated":"2016-07-19 03:24:38.000000000","message":"Can you please rearrange the third-part \u0026 sub-project import orders as per the guideline..\nhttp://docs.openstack.org/developer/hacking/#imports","commit_id":"482eff61ed23b16bd54aa284505dea8038e57217"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"884c48f7471a12f54775d705b6fb334170153385","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class ListPeers(command.Lister):"},{"line_number":90,"context_line":"    \"\"\"List BGP peers.\"\"\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def take_action(self, parsed_args):"},{"line_number":93,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_peers()"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_824599b4","line":90,"range":{"start_line":90,"start_character":21,"end_line":90,"end_character":22},"updated":"2016-07-28 23:50:42.000000000","message":"docstring transform into help text for OSC and they do not prefer a period. General comment","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class ListPeers(command.Lister):"},{"line_number":90,"context_line":"    \"\"\"List BGP peers.\"\"\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def take_action(self, parsed_args):"},{"line_number":93,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_peers()"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_8cda99e6","line":90,"range":{"start_line":90,"start_character":21,"end_line":90,"end_character":22},"in_reply_to":"bacf61ea_824599b4","updated":"2016-08-01 09:04:37.000000000","message":"ok, will update in next patch, thanks.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"884c48f7471a12f54775d705b6fb334170153385","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        parser \u003d super(ShowPeer, self).get_parser(prog_name)"},{"line_number":107,"context_line":"        parser.add_argument("},{"line_number":108,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":109,"context_line":"            metavar\u003d\"BGP_PEER\","},{"line_number":110,"context_line":"            help\u003d_(\"BGP Peer to display (name or ID)\")"},{"line_number":111,"context_line":"        )"},{"line_number":112,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_626ea530","line":109,"range":{"start_line":109,"start_character":21,"end_line":109,"end_character":29},"updated":"2016-07-28 23:50:42.000000000","message":"use - instead of _","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        parser \u003d super(ShowPeer, self).get_parser(prog_name)"},{"line_number":107,"context_line":"        parser.add_argument("},{"line_number":108,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":109,"context_line":"            metavar\u003d\"BGP_PEER\","},{"line_number":110,"context_line":"            help\u003d_(\"BGP Peer to display (name or ID)\")"},{"line_number":111,"context_line":"        )"},{"line_number":112,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_ac04bd49","line":109,"range":{"start_line":109,"start_character":21,"end_line":109,"end_character":29},"in_reply_to":"bacf61ea_626ea530","updated":"2016-08-01 09:04:37.000000000","message":"ok, will update in next patch, thanks.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"c86278de86d9a4bf3b87666fe5f3cba1b3878369","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        parser \u003d super(CreatePeer, self).get_parser(prog_name)"},{"line_number":126,"context_line":"        parser.add_argument("},{"line_number":127,"context_line":"            \u0027name\u0027,"},{"line_number":128,"context_line":"            metavar\u003d\u0027NAME\u0027,"},{"line_number":129,"context_line":"            help\u003d_(\u0027Name of the BGP peer to create.\u0027))"},{"line_number":130,"context_line":"        parser.add_argument("},{"line_number":131,"context_line":"            \u0027--peer-ip\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_292780b7","line":128,"range":{"start_line":128,"start_character":21,"end_line":128,"end_character":25},"updated":"2016-07-19 09:12:35.000000000","message":"Just for the consistency, the metavars should be all capital or non-capital.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        parser \u003d super(CreatePeer, self).get_parser(prog_name)"},{"line_number":126,"context_line":"        parser.add_argument("},{"line_number":127,"context_line":"            \u0027name\u0027,"},{"line_number":128,"context_line":"            metavar\u003d\u0027NAME\u0027,"},{"line_number":129,"context_line":"            help\u003d_(\u0027Name of the BGP peer to create.\u0027))"},{"line_number":130,"context_line":"        parser.add_argument("},{"line_number":131,"context_line":"            \u0027--peer-ip\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_2c972ded","line":128,"range":{"start_line":128,"start_character":21,"end_line":128,"end_character":25},"in_reply_to":"dada55a8_292780b7","updated":"2016-08-01 09:04:37.000000000","message":"ok, will update in next patch, thanks.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"884c48f7471a12f54775d705b6fb334170153385","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            required\u003dTrue,"},{"line_number":138,"context_line":"            metavar\u003d\u0027PEER_REMOTE_AS\u0027,"},{"line_number":139,"context_line":"            help\u003d_(\u0027Peer AS number. (Integer in [%(min_val)s, %(max_val)s] \u0027"},{"line_number":140,"context_line":"                   \u0027is allowed.)\u0027) %"},{"line_number":141,"context_line":"            {\u0027min_val\u0027: MIN_AS_NUM,"},{"line_number":142,"context_line":"             \u0027max_val\u0027: MAX_AS_NUM})"},{"line_number":143,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_02ec098e","line":140,"range":{"start_line":140,"start_character":30,"end_line":140,"end_character":31},"updated":"2016-07-28 23:50:42.000000000","message":"remove trailing period. general comment","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            required\u003dTrue,"},{"line_number":138,"context_line":"            metavar\u003d\u0027PEER_REMOTE_AS\u0027,"},{"line_number":139,"context_line":"            help\u003d_(\u0027Peer AS number. (Integer in [%(min_val)s, %(max_val)s] \u0027"},{"line_number":140,"context_line":"                   \u0027is allowed.)\u0027) %"},{"line_number":141,"context_line":"            {\u0027min_val\u0027: MIN_AS_NUM,"},{"line_number":142,"context_line":"             \u0027max_val\u0027: MAX_AS_NUM})"},{"line_number":143,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_6c9da509","line":140,"range":{"start_line":140,"start_character":30,"end_line":140,"end_character":31},"in_reply_to":"bacf61ea_02ec098e","updated":"2016-08-01 09:04:37.000000000","message":"ok, will update in next patch, thanks.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"884c48f7471a12f54775d705b6fb334170153385","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        body \u003d {}"},{"line_number":166,"context_line":"        body[BGP_PEER] \u003d attrs"},{"line_number":167,"context_line":"        obj \u003d client.create_bgp_peer(body)"},{"line_number":168,"context_line":"        return zip(*sorted(six.iteritems(obj[BGP_PEER])))"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class UpdatePeer(command.Command):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_428561ab","line":168,"range":{"start_line":168,"start_character":15,"end_line":168,"end_character":57},"updated":"2016-07-28 23:50:42.000000000","message":"refer to https://review.openstack.org/#/c/340624/ or https://review.openstack.org/#/c/348098/ to see how returns are handled","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        body \u003d {}"},{"line_number":166,"context_line":"        body[BGP_PEER] \u003d attrs"},{"line_number":167,"context_line":"        obj \u003d client.create_bgp_peer(body)"},{"line_number":168,"context_line":"        return zip(*sorted(six.iteritems(obj[BGP_PEER])))"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class UpdatePeer(command.Command):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_ec9195f2","line":168,"range":{"start_line":168,"start_character":15,"end_line":168,"end_character":57},"in_reply_to":"bacf61ea_428561ab","updated":"2016-08-01 09:04:37.000000000","message":"ok, thanks.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"884c48f7471a12f54775d705b6fb334170153385","unresolved":false,"context_lines":[{"line_number":171,"context_line":"class UpdatePeer(command.Command):"},{"line_number":172,"context_line":"    \"\"\"Update BGP Peer\u0027s information.\"\"\""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    resource \u003d \u0027bgp_peer\u0027"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def get_parser(self, prog_name):"},{"line_number":177,"context_line":"        parser \u003d super(UpdatePeer, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_62b1858f","line":174,"range":{"start_line":174,"start_character":4,"end_line":174,"end_character":25},"updated":"2016-07-28 23:50:42.000000000","message":"use previously defined BGP_PEER constant","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":171,"context_line":"class UpdatePeer(command.Command):"},{"line_number":172,"context_line":"    \"\"\"Update BGP Peer\u0027s information.\"\"\""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    resource \u003d \u0027bgp_peer\u0027"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def get_parser(self, prog_name):"},{"line_number":177,"context_line":"        parser \u003d super(UpdatePeer, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_cc8e51cf","line":174,"range":{"start_line":174,"start_character":4,"end_line":174,"end_character":25},"in_reply_to":"bacf61ea_62b1858f","updated":"2016-08-01 09:04:37.000000000","message":"ok, thanks.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"c86278de86d9a4bf3b87666fe5f3cba1b3878369","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        parser.add_argument("},{"line_number":207,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":208,"context_line":"            metavar\u003d\"BGP_PEER\","},{"line_number":209,"context_line":"            help\u003d_(\"BGP Peer to display (name or ID)\")"},{"line_number":210,"context_line":"        )"},{"line_number":211,"context_line":"        return parser"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_893dccbd","line":209,"range":{"start_line":209,"start_character":32,"end_line":209,"end_character":39},"updated":"2016-07-19 09:12:35.000000000","message":"nit: delete","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        parser.add_argument("},{"line_number":207,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":208,"context_line":"            metavar\u003d\"BGP_PEER\","},{"line_number":209,"context_line":"            help\u003d_(\"BGP Peer to display (name or ID)\")"},{"line_number":210,"context_line":"        )"},{"line_number":211,"context_line":"        return parser"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_2cbe0d65","line":209,"range":{"start_line":209,"start_character":32,"end_line":209,"end_character":39},"in_reply_to":"dada55a8_893dccbd","updated":"2016-08-01 09:04:37.000000000","message":"thanks, will update in next patch.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"735b1c9cf4e4fe0993ccb58f997b1809b6c584a0","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    peer_cmd \u003d BGPPeerCommand(client)"},{"line_number":33,"context_line":"    id \u003d nc_utils.find_resourceid_by_name_or_id(peer_cmd,"},{"line_number":34,"context_line":"                                                id_or_name)"},{"line_number":35,"context_line":"    return id"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def _get_columns(item):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba5201f7_cf919d54","line":35,"range":{"start_line":35,"start_character":11,"end_line":35,"end_character":13},"updated":"2017-01-09 22:31:06.000000000","message":"lets not try to use the reserved keyword id as variable name.. might as well return on L33","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"c0cc528e464fd7760488925f3731430ca8ec4f32","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    if \u0027peer_ip\u0027 in parsed_args:"},{"line_number":63,"context_line":"        attrs[\u0027peer_ip\u0027] \u003d parsed_args.peer_ip"},{"line_number":64,"context_line":"    if \u0027auth_type\u0027 in parsed_args:"},{"line_number":65,"context_line":"        attrs[\u0027auth_type\u0027] \u003d parsed_args.auth_type"},{"line_number":66,"context_line":"    if \u0027password\u0027 in parsed_args:"},{"line_number":67,"context_line":"        attrs[\u0027password\u0027] \u003d parsed_args.password"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_de2cd94c","line":65,"updated":"2016-12-13 17:46:57.000000000","message":"Can we move this line inside the if block at line 46 instead of having another if here for auth_type. Also update the comment at line 45 accordingly","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0063866ebceba543873ec76ed56d7ebb17c0230b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    if \u0027peer_ip\u0027 in parsed_args:"},{"line_number":63,"context_line":"        attrs[\u0027peer_ip\u0027] \u003d parsed_args.peer_ip"},{"line_number":64,"context_line":"    if \u0027auth_type\u0027 in parsed_args:"},{"line_number":65,"context_line":"        attrs[\u0027auth_type\u0027] \u003d parsed_args.auth_type"},{"line_number":66,"context_line":"    if \u0027password\u0027 in parsed_args:"},{"line_number":67,"context_line":"        attrs[\u0027password\u0027] \u003d parsed_args.password"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_342ace90","line":65,"in_reply_to":"1a6eadb0_b9c4805f","updated":"2016-12-16 00:18:18.000000000","message":"I can refactor this. I agree that it could benefit from some cleanup.","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"422da8f5fcbc46f05bd0f542ac01f9f0a7dd591d","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    if \u0027peer_ip\u0027 in parsed_args:"},{"line_number":63,"context_line":"        attrs[\u0027peer_ip\u0027] \u003d parsed_args.peer_ip"},{"line_number":64,"context_line":"    if \u0027auth_type\u0027 in parsed_args:"},{"line_number":65,"context_line":"        attrs[\u0027auth_type\u0027] \u003d parsed_args.auth_type"},{"line_number":66,"context_line":"    if \u0027password\u0027 in parsed_args:"},{"line_number":67,"context_line":"        attrs[\u0027password\u0027] \u003d parsed_args.password"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_b9c4805f","line":65,"in_reply_to":"1a6eadb0_de2cd94c","updated":"2016-12-14 06:22:38.000000000","message":"IMO, lets keep validation and assignment separate for easy readability.","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"2a9470ead7af032f5a6f8428a0a808bb059c01c1","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class ListPeers(command.Lister):"},{"line_number":93,"context_line":"    \"\"\"List BGP Peers\"\"\""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def take_action(self, parsed_args):"},{"line_number":96,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_peers()"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_5b261bcf","line":93,"updated":"2016-12-13 17:36:24.000000000","message":"_description \u003d _(\"Retrieve a list of BGP Peers\")\n\nExample usage: [1]. Can be changed in other classes as well.\n\n[1] - https://review.openstack.org/#/c/391331/12/openstackclient/network/v2/auto_allocated_topology.py@62","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"422da8f5fcbc46f05bd0f542ac01f9f0a7dd591d","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class ListPeers(command.Lister):"},{"line_number":93,"context_line":"    \"\"\"List BGP Peers\"\"\""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def take_action(self, parsed_args):"},{"line_number":96,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_peers()"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_f98b581c","line":93,"in_reply_to":"1a6eadb0_5b261bcf","updated":"2016-12-14 06:22:38.000000000","message":"Why this is required? Is there is some issue with the existing code?","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0063866ebceba543873ec76ed56d7ebb17c0230b","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class ListPeers(command.Lister):"},{"line_number":93,"context_line":"    \"\"\"List BGP Peers\"\"\""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def take_action(self, parsed_args):"},{"line_number":96,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_peers()"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_347c8eb4","line":93,"in_reply_to":"1a6eadb0_ea029808","updated":"2016-12-16 00:18:18.000000000","message":"Done. Will clean this up.","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"9929eaf76a4d74766b2d9b51a779452a05bc743e","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class ListPeers(command.Lister):"},{"line_number":93,"context_line":"    \"\"\"List BGP Peers\"\"\""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def take_action(self, parsed_args):"},{"line_number":96,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_peers()"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_ea029808","line":93,"in_reply_to":"1a6eadb0_f98b581c","updated":"2016-12-14 07:49:48.000000000","message":"Vikram. It is for translations. for OSC to support translations the docstring need to be formatted.\n\nInstead of \n\"\"\"\u003cdescription\u003e\"\"\"\n\nit needs to be _description \u003d _(\"\u003cdescription\u003e\")","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"9929eaf76a4d74766b2d9b51a779452a05bc743e","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class ShowPeer(command.ShowOne):"},{"line_number":106,"context_line":"    \"\"\"Show information of a given BGP Peer\"\"\""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def get_parser(self, prog_name):"},{"line_number":109,"context_line":"        parser \u003d super(ShowPeer, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_2a0d7037","line":106,"updated":"2016-12-14 07:49:48.000000000","message":"Ditto from above docstring message","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0063866ebceba543873ec76ed56d7ebb17c0230b","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class ShowPeer(command.ShowOne):"},{"line_number":106,"context_line":"    \"\"\"Show information of a given BGP Peer\"\"\""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def get_parser(self, prog_name):"},{"line_number":109,"context_line":"        parser \u003d super(ShowPeer, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_9443a26b","line":106,"in_reply_to":"1a6eadb0_2a0d7037","updated":"2016-12-16 00:18:18.000000000","message":"Done","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"735b1c9cf4e4fe0993ccb58f997b1809b6c584a0","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    def get_parser(self, prog_name):"},{"line_number":109,"context_line":"        parser \u003d super(ShowPeer, self).get_parser(prog_name)"},{"line_number":110,"context_line":"        parser.add_argument("},{"line_number":111,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":112,"context_line":"            metavar\u003d\"BGP-PEER\","},{"line_number":113,"context_line":"            help\u003d_(\"ID or name of the BGP Peer to display\")"},{"line_number":114,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba5201f7_0f1d65bd","line":111,"range":{"start_line":111,"start_character":13,"end_line":111,"end_character":21},"updated":"2017-01-09 22:31:06.000000000","message":"this should perhaps be bgp-peer","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"9929eaf76a4d74766b2d9b51a779452a05bc743e","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"class CreatePeer(command.ShowOne):"},{"line_number":127,"context_line":"    \"\"\"Create a BGP Peer\"\"\""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def get_parser(self, prog_name):"},{"line_number":130,"context_line":"        parser \u003d super(CreatePeer, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_8a1e8461","line":127,"updated":"2016-12-14 07:49:48.000000000","message":"ditto above","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0063866ebceba543873ec76ed56d7ebb17c0230b","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"class CreatePeer(command.ShowOne):"},{"line_number":127,"context_line":"    \"\"\"Create a BGP Peer\"\"\""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def get_parser(self, prog_name):"},{"line_number":130,"context_line":"        parser \u003d super(CreatePeer, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_d4619a06","line":127,"in_reply_to":"1a6eadb0_8a1e8461","updated":"2016-12-16 00:18:18.000000000","message":"Done","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"c0cc528e464fd7760488925f3731430ca8ec4f32","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"class UpdatePeer(command.Command):"},{"line_number":179,"context_line":"    \"\"\"Update BGP Peer\u0027s information\"\"\""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    resource \u003d BGP_PEER"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_5ecfe97e","line":179,"updated":"2016-12-13 17:46:57.000000000","message":"Can you please rename UpdatePeer with SetPeer as in [1]:\n\n[1]https://github.com/openstack/python-openstackclient/blob/master/openstackclient/network/v2/address_scope.py#L172","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"9929eaf76a4d74766b2d9b51a779452a05bc743e","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"class UpdatePeer(command.Command):"},{"line_number":179,"context_line":"    \"\"\"Update BGP Peer\u0027s information\"\"\""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    resource \u003d BGP_PEER"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_6a3688e8","line":179,"in_reply_to":"1a6eadb0_399dd059","updated":"2016-12-14 07:49:48.000000000","message":"Yes.","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"422da8f5fcbc46f05bd0f542ac01f9f0a7dd591d","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"class UpdatePeer(command.Command):"},{"line_number":179,"context_line":"    \"\"\"Update BGP Peer\u0027s information\"\"\""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    resource \u003d BGP_PEER"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_399dd059","line":179,"in_reply_to":"1a6eadb0_5ecfe97e","updated":"2016-12-14 06:22:38.000000000","message":"Is this is the naming protocol we are going to use for OSC code?","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0063866ebceba543873ec76ed56d7ebb17c0230b","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"class UpdatePeer(command.Command):"},{"line_number":179,"context_line":"    \"\"\"Update BGP Peer\u0027s information\"\"\""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    resource \u003d BGP_PEER"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_3453ae3a","line":179,"in_reply_to":"1a6eadb0_6a3688e8","updated":"2016-12-16 00:18:18.000000000","message":"Done. Will rename.","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"735b1c9cf4e4fe0993ccb58f997b1809b6c584a0","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            metavar\u003d\u0027AUTH_PASSWORD\u0027,"},{"line_number":191,"context_line":"            help\u003d_(\u0027Updated authentication password\u0027))"},{"line_number":192,"context_line":"        parser.add_argument("},{"line_number":193,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":194,"context_line":"            metavar\u003d\"BGP_PEER\","},{"line_number":195,"context_line":"            help\u003d_(\"ID or name of the BGP Peer to update\")"},{"line_number":196,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba5201f7_ef4d81c5","line":193,"range":{"start_line":193,"start_character":13,"end_line":193,"end_character":21},"updated":"2017-01-09 22:31:06.000000000","message":"ditto","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"735b1c9cf4e4fe0993ccb58f997b1809b6c584a0","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    def get_parser(self, prog_name):"},{"line_number":212,"context_line":"        parser \u003d super(DeletePeer, self).get_parser(prog_name)"},{"line_number":213,"context_line":"        parser.add_argument("},{"line_number":214,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":215,"context_line":"            metavar\u003d\"BGP_PEER\","},{"line_number":216,"context_line":"            help\u003d_(\"ID or name of the BGP Peer to delete\")"},{"line_number":217,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba5201f7_5530da9e","line":214,"range":{"start_line":214,"start_character":13,"end_line":214,"end_character":21},"updated":"2017-01-09 22:31:06.000000000","message":"ditto","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"034a3adc055665613a4613fb8f45fb64474a0b22","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":17,"id":"da36d5c6_94517765","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2017-02-20 09:01:46.000000000","message":"2017 :)","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"21e885a2b6520c7b82ae10a41c32ec84e2a3884b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    return attrs"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class BGPPeerCommand(object):"},{"line_number":80,"context_line":"    def __init__(self, client):"},{"line_number":81,"context_line":"        self.client \u003d client"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def list(self):"},{"line_number":84,"context_line":"        \"\"\"Retrieve a list of BGP Peers\"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        response \u003d self.client.get(self.client.bgp_peers_path)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        return response[BGP_PEERS]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class ListPeers(command.Lister):"}],"source_content_type":"text/x-python","patch_set":17,"id":"bff0334d_d377443a","line":88,"range":{"start_line":79,"start_character":0,"end_line":88,"end_character":34},"updated":"2017-04-07 06:04:21.000000000","message":"The value of this class looks small. Can you merge the logic into get_bgp_peer_id() above?","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"aad486585560e98e8db909e08bbcbacc6d8b22dd","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    return attrs"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class BGPPeerCommand(object):"},{"line_number":80,"context_line":"    def __init__(self, client):"},{"line_number":81,"context_line":"        self.client \u003d client"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def list(self):"},{"line_number":84,"context_line":"        \"\"\"Retrieve a list of BGP Peers\"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        response \u003d self.client.get(self.client.bgp_peers_path)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        return response[BGP_PEERS]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class ListPeers(command.Lister):"}],"source_content_type":"text/x-python","patch_set":17,"id":"df140735_822f7bf5","line":88,"range":{"start_line":79,"start_character":0,"end_line":88,"end_character":34},"in_reply_to":"bff0334d_d377443a","updated":"2017-05-28 13:38:08.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"034a3adc055665613a4613fb8f45fb64474a0b22","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        return response[BGP_PEERS]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class ListPeers(command.Lister):"},{"line_number":92,"context_line":"    \"\"\"List BGP Peers\"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    _description \u003d _(\"Retrieve a list of BGP Peers\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"da36d5c6_14cca734","line":91,"range":{"start_line":91,"start_character":6,"end_line":91,"end_character":15},"updated":"2017-02-20 09:01:46.000000000","message":"How about ListBgpPeers? IMO, we can add Bgp prefix everywhere.","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        return response[BGP_PEERS]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class ListPeers(command.Lister):"},{"line_number":92,"context_line":"    \"\"\"List BGP Peers\"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    _description \u003d _(\"Retrieve a list of BGP Peers\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"df140735_425ba32d","line":91,"range":{"start_line":91,"start_character":6,"end_line":91,"end_character":15},"in_reply_to":"9a30ddce_23757831","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"9919b5bcbd455aa3d116c43ad4bc9c95a34d5c80","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        return response[BGP_PEERS]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class ListPeers(command.Lister):"},{"line_number":92,"context_line":"    \"\"\"List BGP Peers\"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    _description \u003d _(\"Retrieve a list of BGP Peers\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a30ddce_23757831","line":91,"range":{"start_line":91,"start_character":6,"end_line":91,"end_character":15},"in_reply_to":"da36d5c6_14cca734","updated":"2017-03-09 19:48:58.000000000","message":"yes please match with module name for all classes","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"21e885a2b6520c7b82ae10a41c32ec84e2a3884b","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"class ShowPeer(command.ShowOne):"},{"line_number":107,"context_line":"    \"\"\"Show information of a given BGP Peer\"\"\""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    _description \u003d _(\"Show information for a BGP Peer\")"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"bff0334d_13a36ca0","line":107,"range":{"start_line":107,"start_character":4,"end_line":107,"end_character":46},"updated":"2017-04-07 06:04:21.000000000","message":"Do we need duplicated information? It is same as _description below.","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"class ShowPeer(command.ShowOne):"},{"line_number":107,"context_line":"    \"\"\"Show information of a given BGP Peer\"\"\""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    _description \u003d _(\"Show information for a BGP Peer\")"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"df140735_023dabba","line":107,"range":{"start_line":107,"start_character":4,"end_line":107,"end_character":46},"in_reply_to":"bff0334d_13a36ca0","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"21e885a2b6520c7b82ae10a41c32ec84e2a3884b","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        parser \u003d super(ShowPeer, self).get_parser(prog_name)"},{"line_number":113,"context_line":"        parser.add_argument("},{"line_number":114,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":115,"context_line":"            metavar\u003d\"BGP-PEER\","},{"line_number":116,"context_line":"            help\u003d_(\"ID or name of the BGP Peer to display\")"},{"line_number":117,"context_line":"        )"},{"line_number":118,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":17,"id":"bff0334d_d3c5043e","line":115,"range":{"start_line":115,"start_character":21,"end_line":115,"end_character":29},"updated":"2017-04-07 06:04:21.000000000","message":"In OSC convention, \n- a parameter is enclosed by \u003c\u003e\n- \u0027-\u0027 is used as a delimiter\n- parameter name is lower case\n\nThis would be \u0027\u003cbgp-peer\u003e\u0027.","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        parser \u003d super(ShowPeer, self).get_parser(prog_name)"},{"line_number":113,"context_line":"        parser.add_argument("},{"line_number":114,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":115,"context_line":"            metavar\u003d\"BGP-PEER\","},{"line_number":116,"context_line":"            help\u003d_(\"ID or name of the BGP Peer to display\")"},{"line_number":117,"context_line":"        )"},{"line_number":118,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":17,"id":"df140735_c2469350","line":115,"range":{"start_line":115,"start_character":21,"end_line":115,"end_character":29},"in_reply_to":"bff0334d_d3c5043e","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"034a3adc055665613a4613fb8f45fb64474a0b22","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            help\u003d_(\u0027Name of the BGP Peer to create\u0027))"},{"line_number":140,"context_line":"        parser.add_argument("},{"line_number":141,"context_line":"            \u0027--peer-ip\u0027,"},{"line_number":142,"context_line":"            metavar\u003d\u0027PEER_IP_ADDRESS\u0027,"},{"line_number":143,"context_line":"            required\u003dTrue,"},{"line_number":144,"context_line":"            help\u003d_(\u0027Peer IP address\u0027))"},{"line_number":145,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":17,"id":"da36d5c6_94d897f1","line":142,"range":{"start_line":142,"start_character":21,"end_line":142,"end_character":36},"updated":"2017-02-20 09:01:46.000000000","message":"I am not sure whether we should use \u0027_\u0027 or \u0027-\u0027. Do we have any guideline for this?","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            help\u003d_(\u0027Name of the BGP Peer to create\u0027))"},{"line_number":140,"context_line":"        parser.add_argument("},{"line_number":141,"context_line":"            \u0027--peer-ip\u0027,"},{"line_number":142,"context_line":"            metavar\u003d\u0027PEER_IP_ADDRESS\u0027,"},{"line_number":143,"context_line":"            required\u003dTrue,"},{"line_number":144,"context_line":"            help\u003d_(\u0027Peer IP address\u0027))"},{"line_number":145,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":17,"id":"df140735_827adb85","line":142,"range":{"start_line":142,"start_character":21,"end_line":142,"end_character":36},"in_reply_to":"da36d5c6_94d897f1","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"29d174de294f67635cc49d39708bc0c09389463a","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            required\u003dTrue,"},{"line_number":117,"context_line":"            metavar\u003d\u0027\u003cpeer-remote-as\u003e\u0027,"},{"line_number":118,"context_line":"            help\u003d_(\u0027Peer AS number. (Integer in [%(min_val)s, %(max_val)s] \u0027"},{"line_number":119,"context_line":"                   \u0027is allowed)\u0027) %"},{"line_number":120,"context_line":"            {\u0027min_val\u0027: constants.MIN_AS_NUM,"},{"line_number":121,"context_line":"             \u0027max_val\u0027: constants.MAX_AS_NUM})"},{"line_number":122,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_de03f00c","line":119,"range":{"start_line":119,"start_character":30,"end_line":119,"end_character":31},"updated":"2017-05-30 08:28:41.000000000","message":"missing period","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"23f218f263cfd5b32a17dd586d7132ec89747c02","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            required\u003dTrue,"},{"line_number":117,"context_line":"            metavar\u003d\u0027\u003cpeer-remote-as\u003e\u0027,"},{"line_number":118,"context_line":"            help\u003d_(\u0027Peer AS number. (Integer in [%(min_val)s, %(max_val)s] \u0027"},{"line_number":119,"context_line":"                   \u0027is allowed)\u0027) %"},{"line_number":120,"context_line":"            {\u0027min_val\u0027: constants.MIN_AS_NUM,"},{"line_number":121,"context_line":"             \u0027max_val\u0027: constants.MAX_AS_NUM})"},{"line_number":122,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_5e7360e8","line":119,"range":{"start_line":119,"start_character":30,"end_line":119,"end_character":31},"in_reply_to":"df140735_de03f00c","updated":"2017-06-01 16:12:20.000000000","message":"Done","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"29d174de294f67635cc49d39708bc0c09389463a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        parser.add_argument("},{"line_number":123,"context_line":"            \u0027--auth-type\u0027,"},{"line_number":124,"context_line":"            metavar\u003d\u0027\u003cpeer-auth-type\u003e\u0027,"},{"line_number":125,"context_line":"            choices\u003d[\u0027none\u0027, \u0027md5\u0027],"},{"line_number":126,"context_line":"            default\u003d\u0027none\u0027,"},{"line_number":127,"context_line":"            help\u003d_(\u0027Authentication algorithm. Supported algorithms: \u0027"},{"line_number":128,"context_line":"                   \u0027none(default), md5\u0027))"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_be215ca2","line":125,"range":{"start_line":125,"start_character":12,"end_line":125,"end_character":36},"updated":"2017-05-30 08:28:41.000000000","message":"It would be better if we could support more flexible for user by allowing input MD5 or NONE.\nJust convert input to lowercase.","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"23f218f263cfd5b32a17dd586d7132ec89747c02","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        parser.add_argument("},{"line_number":123,"context_line":"            \u0027--auth-type\u0027,"},{"line_number":124,"context_line":"            metavar\u003d\u0027\u003cpeer-auth-type\u003e\u0027,"},{"line_number":125,"context_line":"            choices\u003d[\u0027none\u0027, \u0027md5\u0027],"},{"line_number":126,"context_line":"            default\u003d\u0027none\u0027,"},{"line_number":127,"context_line":"            help\u003d_(\u0027Authentication algorithm. Supported algorithms: \u0027"},{"line_number":128,"context_line":"                   \u0027none(default), md5\u0027))"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_23bb9f0e","line":125,"range":{"start_line":125,"start_character":12,"end_line":125,"end_character":36},"in_reply_to":"df140735_be215ca2","updated":"2017-06-01 16:12:20.000000000","message":"Done","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eb3e1d0130972ce5c866b8cde5515c368c4c4815","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from neutronclient.common import utils as nc_utils"},{"line_number":20,"context_line":"from neutronclient.osc import utils as nc_osc_utils"},{"line_number":21,"context_line":"from neutronclient.osc.v2.dynamic_routing import constants"},{"line_number":22,"context_line":"from osc_lib.command import command"},{"line_number":23,"context_line":"from osc_lib import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# Allowed BGP Autonomous number range"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7f231b9d_68bdd900","line":23,"range":{"start_line":22,"start_character":0,"end_line":23,"end_character":25},"updated":"2017-06-18 13:18:29.000000000","message":"There are third party modules, so it needs to be a separate import group.","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"22f366a131922b91432589fd1068f9c296c0cf31","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from neutronclient.common import utils as nc_utils"},{"line_number":20,"context_line":"from neutronclient.osc import utils as nc_osc_utils"},{"line_number":21,"context_line":"from neutronclient.osc.v2.dynamic_routing import constants"},{"line_number":22,"context_line":"from osc_lib.command import command"},{"line_number":23,"context_line":"from osc_lib import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# Allowed BGP Autonomous number range"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7f231b9d_d94321af","line":23,"range":{"start_line":22,"start_character":0,"end_line":23,"end_character":25},"in_reply_to":"7f231b9d_68bdd900","updated":"2017-06-20 11:28:11.000000000","message":"Done","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eb3e1d0130972ce5c866b8cde5515c368c4c4815","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            metavar\u003d\u0027\u003cpeer-remote-as\u003e\u0027,"},{"line_number":83,"context_line":"            help\u003d_(\u0027Peer AS number. (Integer in [%(min_val)s, %(max_val)s] \u0027"},{"line_number":84,"context_line":"                   \u0027is allowed)\u0027) %"},{"line_number":85,"context_line":"            {\u0027min_val\u0027: constants.MIN_AS_NUM,"},{"line_number":86,"context_line":"             \u0027max_val\u0027: constants.MAX_AS_NUM})"},{"line_number":87,"context_line":"        parser.add_argument("},{"line_number":88,"context_line":"            \u0027--auth-type\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"7f231b9d_c843cd12","line":85,"updated":"2017-06-18 13:18:29.000000000","message":"The indent level looks wrong.","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"22f366a131922b91432589fd1068f9c296c0cf31","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            metavar\u003d\u0027\u003cpeer-remote-as\u003e\u0027,"},{"line_number":83,"context_line":"            help\u003d_(\u0027Peer AS number. (Integer in [%(min_val)s, %(max_val)s] \u0027"},{"line_number":84,"context_line":"                   \u0027is allowed)\u0027) %"},{"line_number":85,"context_line":"            {\u0027min_val\u0027: constants.MIN_AS_NUM,"},{"line_number":86,"context_line":"             \u0027max_val\u0027: constants.MAX_AS_NUM})"},{"line_number":87,"context_line":"        parser.add_argument("},{"line_number":88,"context_line":"            \u0027--auth-type\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"7f231b9d_a1070719","line":85,"in_reply_to":"7f231b9d_c843cd12","updated":"2017-06-20 11:28:11.000000000","message":"Done","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        attrs[\u0027auth_type\u0027] \u003d parsed_args.auth_type"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    if parsed_args.name is not None:"},{"line_number":47,"context_line":"        attrs[\u0027name\u0027] \u003d str(parsed_args.name)"},{"line_number":48,"context_line":"    if \u0027remote_as\u0027 in parsed_args:"},{"line_number":49,"context_line":"        attrs[\u0027remote_as\u0027] \u003d parsed_args.remote_as"},{"line_number":50,"context_line":"    if \u0027peer_ip\u0027 in parsed_args:"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_7ad91120","line":47,"range":{"start_line":47,"start_character":24,"end_line":47,"end_character":28},"updated":"2017-07-28 00:49:07.000000000","message":"str() is unnecessary.","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        attrs[\u0027auth_type\u0027] \u003d parsed_args.auth_type"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    if parsed_args.name is not None:"},{"line_number":47,"context_line":"        attrs[\u0027name\u0027] \u003d str(parsed_args.name)"},{"line_number":48,"context_line":"    if \u0027remote_as\u0027 in parsed_args:"},{"line_number":49,"context_line":"        attrs[\u0027remote_as\u0027] \u003d parsed_args.remote_as"},{"line_number":50,"context_line":"    if \u0027peer_ip\u0027 in parsed_args:"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_6198f969","line":47,"range":{"start_line":47,"start_character":24,"end_line":47,"end_character":28},"in_reply_to":"ff346bd7_7ad91120","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class CreateBgpPeer(command.ShowOne):"},{"line_number":67,"context_line":"    _description \u003d _(\"Create a BGP Peer\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def get_parser(self, prog_name):"},{"line_number":70,"context_line":"        parser \u003d super(CreateBgpPeer, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_9da02f92","line":67,"range":{"start_line":67,"start_character":35,"end_line":67,"end_character":39},"updated":"2017-07-28 00:49:07.000000000","message":"no need to capitalize this","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class CreateBgpPeer(command.ShowOne):"},{"line_number":67,"context_line":"    _description \u003d _(\"Create a BGP Peer\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def get_parser(self, prog_name):"},{"line_number":70,"context_line":"        parser \u003d super(CreateBgpPeer, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_419df557","line":67,"range":{"start_line":67,"start_character":35,"end_line":67,"end_character":39},"in_reply_to":"ff346bd7_9da02f92","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            type\u003dnc_utils.convert_to_lowercase,"},{"line_number":92,"context_line":"            default\u003d\u0027none\u0027,"},{"line_number":93,"context_line":"            help\u003d_(\u0027Authentication algorithm. Supported algorithms: \u0027"},{"line_number":94,"context_line":"                   \u0027none(default), md5\u0027))"},{"line_number":95,"context_line":"        parser.add_argument("},{"line_number":96,"context_line":"            \u0027--password\u0027,"},{"line_number":97,"context_line":"            metavar\u003d\u0027\u003cauth-password\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_3a2ee9fa","line":94,"range":{"start_line":94,"start_character":24,"end_line":94,"end_character":26},"updated":"2017-07-28 00:49:07.000000000","message":"a space before opening parenthesis.","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            type\u003dnc_utils.convert_to_lowercase,"},{"line_number":92,"context_line":"            default\u003d\u0027none\u0027,"},{"line_number":93,"context_line":"            help\u003d_(\u0027Authentication algorithm. Supported algorithms: \u0027"},{"line_number":94,"context_line":"                   \u0027none(default), md5\u0027))"},{"line_number":95,"context_line":"        parser.add_argument("},{"line_number":96,"context_line":"            \u0027--password\u0027,"},{"line_number":97,"context_line":"            metavar\u003d\u0027\u003cauth-password\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_21a2f19b","line":94,"range":{"start_line":94,"start_character":24,"end_line":94,"end_character":26},"in_reply_to":"ff346bd7_3a2ee9fa","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    def take_action(self, parsed_args):"},{"line_number":103,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":104,"context_line":"        attrs \u003d _get_attrs(self.app.client_manager, parsed_args)"},{"line_number":105,"context_line":"        body \u003d {}"},{"line_number":106,"context_line":"        body[constants.BGP_PEER] \u003d attrs"},{"line_number":107,"context_line":"        obj \u003d client.create_bgp_peer(body)[constants.BGP_PEER]"},{"line_number":108,"context_line":"        columns, display_columns \u003d nc_osc_utils.get_columns(obj)"},{"line_number":109,"context_line":"        data \u003d utils.get_dict_properties(obj, columns)"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_3a1709a7","line":106,"range":{"start_line":105,"start_character":8,"end_line":106,"end_character":40},"updated":"2017-07-28 00:49:07.000000000","message":"This can be:\n\n  body \u003d {constants:BGP_PEER: attrs}","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    def take_action(self, parsed_args):"},{"line_number":103,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":104,"context_line":"        attrs \u003d _get_attrs(self.app.client_manager, parsed_args)"},{"line_number":105,"context_line":"        body \u003d {}"},{"line_number":106,"context_line":"        body[constants.BGP_PEER] \u003d attrs"},{"line_number":107,"context_line":"        obj \u003d client.create_bgp_peer(body)[constants.BGP_PEER]"},{"line_number":108,"context_line":"        columns, display_columns \u003d nc_osc_utils.get_columns(obj)"},{"line_number":109,"context_line":"        data \u003d utils.get_dict_properties(obj, columns)"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_019fed50","line":106,"range":{"start_line":105,"start_character":8,"end_line":106,"end_character":40},"in_reply_to":"ff346bd7_3a1709a7","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class ListBgpPeers(command.Lister):"},{"line_number":133,"context_line":"    _description \u003d _(\"Retrieve a list of BGP Peers\")"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def take_action(self, parsed_args):"},{"line_number":136,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_peers()"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_fdfe1b69","line":133,"range":{"start_line":133,"start_character":22,"end_line":133,"end_character":51},"updated":"2017-07-28 00:49:07.000000000","message":"List BPG peers","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class ListBgpPeers(command.Lister):"},{"line_number":133,"context_line":"    _description \u003d _(\"Retrieve a list of BGP Peers\")"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def take_action(self, parsed_args):"},{"line_number":136,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_peers()"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_e1abc972","line":133,"range":{"start_line":133,"start_character":22,"end_line":133,"end_character":51},"in_reply_to":"ff346bd7_fdfe1b69","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"bf9d6f03e09487c051ab94071de028e74e6b5ac5","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutronclient.osc import utils as nc_osc_utils"},{"line_number":21,"context_line":"from neutronclient.osc.v2.dynamic_routing import constants"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Allowed BGP Autonomous number range"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def _get_attrs(client_manager, parsed_args):"}],"source_content_type":"text/x-python","patch_set":34,"id":"bf3e73b7_a74a557d","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":37},"updated":"2017-08-07 19:20:28.000000000","message":"comment no longer needed imo as there is a constants.py","commit_id":"5167f758850bc9b4446d9687ba4ed4b5cd15f739"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"36f51887853df482d2b5b556be4b8e23e863f68f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutronclient.osc import utils as nc_osc_utils"},{"line_number":21,"context_line":"from neutronclient.osc.v2.dynamic_routing import constants"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Allowed BGP Autonomous number range"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def _get_attrs(client_manager, parsed_args):"}],"source_content_type":"text/x-python","patch_set":34,"id":"9f436f4f_feacf1ed","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":37},"in_reply_to":"bf3e73b7_a74a557d","updated":"2017-08-15 06:24:53.000000000","message":"Done","commit_id":"5167f758850bc9b4446d9687ba4ed4b5cd15f739"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"bf9d6f03e09487c051ab94071de028e74e6b5ac5","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        client.delete_bgp_peer(id)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class ListBgpPeers(command.Lister):"},{"line_number":129,"context_line":"    _description \u003d _(\"List BGP peers\")"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":34,"id":"bf3e73b7_27042517","line":128,"range":{"start_line":128,"start_character":6,"end_line":128,"end_character":18},"updated":"2017-08-07 19:20:28.000000000","message":"nit: ListBgpPeer","commit_id":"5167f758850bc9b4446d9687ba4ed4b5cd15f739"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"36f51887853df482d2b5b556be4b8e23e863f68f","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        client.delete_bgp_peer(id)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class ListBgpPeers(command.Lister):"},{"line_number":129,"context_line":"    _description \u003d _(\"List BGP peers\")"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":34,"id":"9f436f4f_debc8d07","line":128,"range":{"start_line":128,"start_character":6,"end_line":128,"end_character":18},"in_reply_to":"bf3e73b7_27042517","updated":"2017-08-15 06:24:53.000000000","message":"Done","commit_id":"5167f758850bc9b4446d9687ba4ed4b5cd15f739"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"bf9d6f03e09487c051ab94071de028e74e6b5ac5","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        parser.add_argument("},{"line_number":155,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":156,"context_line":"            metavar\u003d\"\u003cbgp-peer\u003e\","},{"line_number":157,"context_line":"            help\u003d_(\"ID or name of the BGP peer to update\")"},{"line_number":158,"context_line":"        )"},{"line_number":159,"context_line":"        return parser"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"bf3e73b7_c26f87c3","line":157,"range":{"start_line":157,"start_character":20,"end_line":157,"end_character":55},"updated":"2017-08-07 19:20:28.000000000","message":"[General comment]: Typically these messages are like this \n\n\"BGP peer to update (name or ID)\"","commit_id":"5167f758850bc9b4446d9687ba4ed4b5cd15f739"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"36f51887853df482d2b5b556be4b8e23e863f68f","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        parser.add_argument("},{"line_number":155,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":156,"context_line":"            metavar\u003d\"\u003cbgp-peer\u003e\","},{"line_number":157,"context_line":"            help\u003d_(\"ID or name of the BGP peer to update\")"},{"line_number":158,"context_line":"        )"},{"line_number":159,"context_line":"        return parser"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"9f436f4f_3ecef9b3","line":157,"range":{"start_line":157,"start_character":20,"end_line":157,"end_character":55},"in_reply_to":"bf3e73b7_c26f87c3","updated":"2017-08-15 06:24:53.000000000","message":"Done","commit_id":"5167f758850bc9b4446d9687ba4ed4b5cd15f739"}],"neutronclient/osc/v2/dynamic_routing/bgp_speaker.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"10c5607dc5fdb6f0493341f4bebf850a86188c8a","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def take_action(self, parsed_args):"},{"line_number":24,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_speakers()"},{"line_number":25,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027Local_AS\u0027, \u0027IP_Version\u0027)"},{"line_number":26,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027local_as\u0027, \u0027ip_version\u0027)"},{"line_number":27,"context_line":"        return (headers,"},{"line_number":28,"context_line":"                (utils.get_item_properties("}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_05bcb8b9","line":25,"range":{"start_line":25,"start_character":34,"end_line":25,"end_character":42},"updated":"2016-07-12 15:19:36.000000000","message":"do we need an underscore? I think \"Local AS\" is better.\nSame for \"IP version\".","commit_id":"13d8af4f81db64cc8be415e6b4d2e25a0519a701"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"c85f32410cd99feb8bb1145eede08cc53763cb75","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def take_action(self, parsed_args):"},{"line_number":24,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_speakers()"},{"line_number":25,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Name\u0027, \u0027Local_AS\u0027, \u0027IP_Version\u0027)"},{"line_number":26,"context_line":"        columns \u003d (\u0027id\u0027, \u0027name\u0027, \u0027local_as\u0027, \u0027ip_version\u0027)"},{"line_number":27,"context_line":"        return (headers,"},{"line_number":28,"context_line":"                (utils.get_item_properties("}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_8b81bbc5","line":25,"range":{"start_line":25,"start_character":34,"end_line":25,"end_character":42},"in_reply_to":"1aa78d24_05bcb8b9","updated":"2016-07-13 01:09:10.000000000","message":"Thanks your comment, will update in next patch.","commit_id":"13d8af4f81db64cc8be415e6b4d2e25a0519a701"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"22ba50f7a25ed484e8169785366d68c17d90c788","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"from __future__ import print_function"},{"line_number":17,"context_line":"from neutronclient._i18n import _"},{"line_number":18,"context_line":"from neutronclient.osc.v2.dynamic_routing import bgp_peer"},{"line_number":19,"context_line":"from neutronclient.osc.v2 import utils as nc_utils"},{"line_number":20,"context_line":"from openstackclient.identity import common as identity_common"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_f4c70e10","line":17,"updated":"2016-07-19 03:24:38.000000000","message":"let\u0027s add a new line before this for making the imports clear..","commit_id":"482eff61ed23b16bd54aa284505dea8038e57217"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"22ba50f7a25ed484e8169785366d68c17d90c788","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutronclient._i18n import _"},{"line_number":18,"context_line":"from neutronclient.osc.v2.dynamic_routing import bgp_peer"},{"line_number":19,"context_line":"from neutronclient.osc.v2 import utils as nc_utils"},{"line_number":20,"context_line":"from openstackclient.identity import common as identity_common"},{"line_number":21,"context_line":"from osc_lib.command import command"},{"line_number":22,"context_line":"from osc_lib import utils"},{"line_number":23,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_f4eeee89","line":20,"updated":"2016-07-19 03:24:38.000000000","message":"Can you please rearrange the third-part \u0026 sub-project import orders as per the guideline..\nhttp://docs.openstack.org/developer/hacking/#imports","commit_id":"482eff61ed23b16bd54aa284505dea8038e57217"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"884c48f7471a12f54775d705b6fb334170153385","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"class ListSpeakers(command.Lister):"},{"line_number":96,"context_line":"    \"\"\"List BGP speakers.\"\"\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def take_action(self, parsed_args):"},{"line_number":99,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_speakers()"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_a2825d92","line":96,"range":{"start_line":96,"start_character":24,"end_line":96,"end_character":25},"updated":"2016-07-28 23:50:42.000000000","message":"ditto","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"class ListSpeakers(command.Lister):"},{"line_number":96,"context_line":"    \"\"\"List BGP speakers.\"\"\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def take_action(self, parsed_args):"},{"line_number":99,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_speakers()"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_2c656d1d","line":96,"range":{"start_line":96,"start_character":24,"end_line":96,"end_character":25},"in_reply_to":"bacf61ea_a2825d92","updated":"2016-08-01 09:04:37.000000000","message":"thanks, will update in next patch.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"884c48f7471a12f54775d705b6fb334170153385","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":122,"context_line":"        id \u003d get_bgp_speaker_id(client, parsed_args.bgp_speaker)"},{"line_number":123,"context_line":"        obj \u003d client.show_bgp_speaker(id)"},{"line_number":124,"context_line":"        return zip(*sorted(six.iteritems(obj[BGP_SPEAKER])))"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"class DeleteSpeaker(command.Command):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_02488986","line":124,"range":{"start_line":124,"start_character":15,"end_line":124,"end_character":27},"updated":"2016-07-28 23:50:42.000000000","message":"ditto","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        client \u003d self.app.client_manager.neutronclient"},{"line_number":122,"context_line":"        id \u003d get_bgp_speaker_id(client, parsed_args.bgp_speaker)"},{"line_number":123,"context_line":"        obj \u003d client.show_bgp_speaker(id)"},{"line_number":124,"context_line":"        return zip(*sorted(six.iteritems(obj[BGP_SPEAKER])))"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"class DeleteSpeaker(command.Command):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_4c70a1dc","line":124,"range":{"start_line":124,"start_character":15,"end_line":124,"end_character":27},"in_reply_to":"bacf61ea_02488986","updated":"2016-08-01 09:04:37.000000000","message":"thanks, will update in next patch.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"884c48f7471a12f54775d705b6fb334170153385","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        parser.add_argument("},{"line_number":133,"context_line":"            \u0027bgp_speaker\u0027,"},{"line_number":134,"context_line":"            metavar\u003d\"BGP_SPEAKER\","},{"line_number":135,"context_line":"            help\u003d_(\"BGP Speaker to display (name or ID)\")"},{"line_number":136,"context_line":"        )"},{"line_number":137,"context_line":"        return parser"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_c21b117f","line":135,"range":{"start_line":135,"start_character":35,"end_line":135,"end_character":42},"updated":"2016-07-28 23:50:42.000000000","message":"delete","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        parser.add_argument("},{"line_number":133,"context_line":"            \u0027bgp_speaker\u0027,"},{"line_number":134,"context_line":"            metavar\u003d\"BGP_SPEAKER\","},{"line_number":135,"context_line":"            help\u003d_(\"BGP Speaker to display (name or ID)\")"},{"line_number":136,"context_line":"        )"},{"line_number":137,"context_line":"        return parser"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_8c7619d5","line":135,"range":{"start_line":135,"start_character":35,"end_line":135,"end_character":42},"in_reply_to":"bacf61ea_c21b117f","updated":"2016-08-01 09:04:37.000000000","message":"thanks, will update in next patch.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"884c48f7471a12f54775d705b6fb334170153385","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        parser.add_argument("},{"line_number":151,"context_line":"            \u0027name\u0027,"},{"line_number":152,"context_line":"            metavar\u003d\u0027NAME\u0027,"},{"line_number":153,"context_line":"            help\u003d_(\u0027Name of the BGP speaker to create.\u0027))"},{"line_number":154,"context_line":"        parser.add_argument("},{"line_number":155,"context_line":"            \u0027--local-as\u0027,"},{"line_number":156,"context_line":"            metavar\u003d\u0027LOCAL_AS\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_8202b909","line":153,"range":{"start_line":153,"start_character":53,"end_line":153,"end_character":54},"updated":"2016-07-28 23:50:42.000000000","message":"ditto","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        parser.add_argument("},{"line_number":151,"context_line":"            \u0027name\u0027,"},{"line_number":152,"context_line":"            metavar\u003d\u0027NAME\u0027,"},{"line_number":153,"context_line":"            help\u003d_(\u0027Name of the BGP speaker to create.\u0027))"},{"line_number":154,"context_line":"        parser.add_argument("},{"line_number":155,"context_line":"            \u0027--local-as\u0027,"},{"line_number":156,"context_line":"            metavar\u003d\u0027LOCAL_AS\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_cc7c91b7","line":153,"range":{"start_line":153,"start_character":53,"end_line":153,"end_character":54},"in_reply_to":"bacf61ea_8202b909","updated":"2016-08-01 09:04:37.000000000","message":"thanks, will update in next patch.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"884c48f7471a12f54775d705b6fb334170153385","unresolved":false,"context_lines":[{"line_number":184,"context_line":"class UpdateSpeaker(command.Command):"},{"line_number":185,"context_line":"    \"\"\"Update BGP Speaker\u0027s information.\"\"\""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    resource \u003d \u0027bgp_speaker\u0027"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def get_parser(self, prog_name):"},{"line_number":190,"context_line":"        parser \u003d super(UpdateSpeaker, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_9d1e9a61","line":187,"range":{"start_line":187,"start_character":4,"end_line":187,"end_character":28},"updated":"2016-07-28 23:50:42.000000000","message":"use constant BGP_SPEAKER","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":184,"context_line":"class UpdateSpeaker(command.Command):"},{"line_number":185,"context_line":"    \"\"\"Update BGP Speaker\u0027s information.\"\"\""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    resource \u003d \u0027bgp_speaker\u0027"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def get_parser(self, prog_name):"},{"line_number":190,"context_line":"        parser \u003d super(UpdateSpeaker, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_0c518936","line":187,"range":{"start_line":187,"start_character":4,"end_line":187,"end_character":28},"in_reply_to":"bacf61ea_9d1e9a61","updated":"2016-08-01 09:04:37.000000000","message":"thanks, will update in next patch.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"c0cc528e464fd7760488925f3731430ca8ec4f32","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        return columns, data"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"class UpdateSpeaker(command.Command):"},{"line_number":192,"context_line":"    \"\"\"Update BGP Speaker\u0027s information\"\"\""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    resource \u003d BGP_SPEAKER"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_3eb4edcf","line":191,"range":{"start_line":191,"start_character":6,"end_line":191,"end_character":19},"updated":"2016-12-13 17:46:57.000000000","message":"Can you please rename UpdateSpeaker with SetSpeaker as in [1]:\n\n\n[1]https://github.com/openstack/python-openstackclient/blob/master/openstackclient/network/v2/address_scope.py#L172","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0063866ebceba543873ec76ed56d7ebb17c0230b","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        return columns, data"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"class UpdateSpeaker(command.Command):"},{"line_number":192,"context_line":"    \"\"\"Update BGP Speaker\u0027s information\"\"\""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    resource \u003d BGP_SPEAKER"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_d40fda34","line":191,"range":{"start_line":191,"start_character":6,"end_line":191,"end_character":19},"in_reply_to":"1a6eadb0_3eb4edcf","updated":"2016-12-16 00:18:18.000000000","message":"Done","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"422da8f5fcbc46f05bd0f542ac01f9f0a7dd591d","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        return columns, data"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"class UpdateSpeaker(command.Command):"},{"line_number":192,"context_line":"    \"\"\"Update BGP Speaker\u0027s information\"\"\""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    resource \u003d BGP_SPEAKER"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_99c5043e","line":191,"range":{"start_line":191,"start_character":6,"end_line":191,"end_character":19},"in_reply_to":"1a6eadb0_3eb4edcf","updated":"2016-12-14 06:22:38.000000000","message":"ditto..","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"2a9470ead7af032f5a6f8428a0a808bb059c01c1","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                                            parsed_args.bgp_peer)"},{"line_number":239,"context_line":"        client.add_peer_to_bgp_speaker(_speaker_id,"},{"line_number":240,"context_line":"                                       {\u0027bgp_peer_id\u0027: _peer_id})"},{"line_number":241,"context_line":"        print(_(\u0027Added BGP Peer %(peer)s to the BGP Speaker %(speaker)s.\u0027) %"},{"line_number":242,"context_line":"              {\u0027peer\u0027: parsed_args.bgp_peer,"},{"line_number":243,"context_line":"               \u0027speaker\u0027: parsed_args.bgp_speaker},"},{"line_number":244,"context_line":"              file\u003dself.app.stdout)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_7e0f452e","line":241,"updated":"2016-12-13 17:36:24.000000000","message":"The client shouldn\u0027t use print to display.","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0063866ebceba543873ec76ed56d7ebb17c0230b","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                                            parsed_args.bgp_peer)"},{"line_number":239,"context_line":"        client.add_peer_to_bgp_speaker(_speaker_id,"},{"line_number":240,"context_line":"                                       {\u0027bgp_peer_id\u0027: _peer_id})"},{"line_number":241,"context_line":"        print(_(\u0027Added BGP Peer %(peer)s to the BGP Speaker %(speaker)s.\u0027) %"},{"line_number":242,"context_line":"              {\u0027peer\u0027: parsed_args.bgp_peer,"},{"line_number":243,"context_line":"               \u0027speaker\u0027: parsed_args.bgp_speaker},"},{"line_number":244,"context_line":"              file\u003dself.app.stdout)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_7f05ff0e","line":241,"in_reply_to":"1a6eadb0_4a69ccbd","updated":"2016-12-16 00:18:18.000000000","message":"OK, so no output then? Easy enough! Done.","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"9929eaf76a4d74766b2d9b51a779452a05bc743e","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                                            parsed_args.bgp_peer)"},{"line_number":239,"context_line":"        client.add_peer_to_bgp_speaker(_speaker_id,"},{"line_number":240,"context_line":"                                       {\u0027bgp_peer_id\u0027: _peer_id})"},{"line_number":241,"context_line":"        print(_(\u0027Added BGP Peer %(peer)s to the BGP Speaker %(speaker)s.\u0027) %"},{"line_number":242,"context_line":"              {\u0027peer\u0027: parsed_args.bgp_peer,"},{"line_number":243,"context_line":"               \u0027speaker\u0027: parsed_args.bgp_speaker},"},{"line_number":244,"context_line":"              file\u003dself.app.stdout)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_4a69ccbd","line":241,"in_reply_to":"1a6eadb0_59cb6c53","updated":"2016-12-14 07:49:48.000000000","message":"There is none in OSC.","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"422da8f5fcbc46f05bd0f542ac01f9f0a7dd591d","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                                            parsed_args.bgp_peer)"},{"line_number":239,"context_line":"        client.add_peer_to_bgp_speaker(_speaker_id,"},{"line_number":240,"context_line":"                                       {\u0027bgp_peer_id\u0027: _peer_id})"},{"line_number":241,"context_line":"        print(_(\u0027Added BGP Peer %(peer)s to the BGP Speaker %(speaker)s.\u0027) %"},{"line_number":242,"context_line":"              {\u0027peer\u0027: parsed_args.bgp_peer,"},{"line_number":243,"context_line":"               \u0027speaker\u0027: parsed_args.bgp_speaker},"},{"line_number":244,"context_line":"              file\u003dself.app.stdout)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_59cb6c53","line":241,"in_reply_to":"1a6eadb0_7e0f452e","updated":"2016-12-14 06:22:38.000000000","message":"What one should use then to display any msg?","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"f03b59f11e104199fddc296f997c923d058299ea","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return response[BGP_SPEAKERS]"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class ListSpeakers(command.Lister):"},{"line_number":99,"context_line":"    \"\"\"List BGP Speakers\"\"\""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    _description \u003d _(\"Retrieve a list of BGP speakers\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa31d9ce_01e64ae7","line":98,"range":{"start_line":98,"start_character":6,"end_line":98,"end_character":18},"updated":"2017-02-16 03:01:31.000000000","message":"nit [GeneralComment]: ListBgpSpeakers to match the module name","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return response[BGP_SPEAKERS]"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class ListSpeakers(command.Lister):"},{"line_number":99,"context_line":"    \"\"\"List BGP Speakers\"\"\""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    _description \u003d _(\"Retrieve a list of BGP speakers\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"df140735_626fc7c5","line":98,"range":{"start_line":98,"start_character":6,"end_line":98,"end_character":18},"in_reply_to":"fa31d9ce_01e64ae7","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"f03b59f11e104199fddc296f997c923d058299ea","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"class ShowSpeaker(command.ShowOne):"},{"line_number":114,"context_line":"    \"\"\"Show information of a given BGP Speaker\"\"\""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    _description \u003d _(\"Show a BGP speaker\")"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"fa31d9ce_e1bf76cd","line":114,"range":{"start_line":114,"start_character":4,"end_line":114,"end_character":49},"updated":"2017-02-16 03:01:31.000000000","message":"[General comment] you can get rid of this docstring once you have _description","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"class ShowSpeaker(command.ShowOne):"},{"line_number":114,"context_line":"    \"\"\"Show information of a given BGP Speaker\"\"\""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    _description \u003d _(\"Show a BGP speaker\")"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"df140735_4274c399","line":114,"range":{"start_line":114,"start_character":4,"end_line":114,"end_character":49},"in_reply_to":"fa31d9ce_e1bf76cd","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"f03b59f11e104199fddc296f997c923d058299ea","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        client.update_bgp_speaker(id, body)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"class AddPeerToSpeaker(command.Command):"},{"line_number":229,"context_line":"    \"\"\"Add a peer to the BGP Speaker\"\"\""},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    _description \u003d _(\"Add a peer to a BGP Speaker\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa31d9ce_81e4faab","line":228,"range":{"start_line":228,"start_character":6,"end_line":228,"end_character":22},"updated":"2017-02-16 03:01:31.000000000","message":"Have you considered using SetSpeaker to add peers ?\nSomething similar is done with network trunks where subports are added to trunk ports under SetTrunk and internally we call the client.add_sub_port \n\nsimilarly Unset for remove peer","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"034a3adc055665613a4613fb8f45fb64474a0b22","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        client.update_bgp_speaker(id, body)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"class AddPeerToSpeaker(command.Command):"},{"line_number":229,"context_line":"    \"\"\"Add a peer to the BGP Speaker\"\"\""},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    _description \u003d _(\"Add a peer to a BGP Speaker\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"da36d5c6_b493dbf9","line":228,"range":{"start_line":228,"start_character":6,"end_line":228,"end_character":22},"in_reply_to":"fa31d9ce_81e4faab","updated":"2017-02-20 09:01:46.000000000","message":"Functionality of SetSpeaker is just to create BGP speaker. It\u0027s nothing to do with the association of BGP Speaker and Peer.","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"29d174de294f67635cc49d39708bc0c09389463a","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        help\u003d_(\u0027Whether to enable or disable the advertisement \u0027"},{"line_number":59,"context_line":"               \u0027of floating-ip host routes by the BGP speaker. \u0027"},{"line_number":60,"context_line":"               \u0027By default floating ip host routes will be \u0027"},{"line_number":61,"context_line":"               \u0027advertised by the BGP speaker\u0027))"},{"line_number":62,"context_line":"    parser.add_argument("},{"line_number":63,"context_line":"        \u0027--advertise-tenant-networks\u0027,"},{"line_number":64,"context_line":"        metavar\u003d\u0027{True,False}\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_8acd335f","line":61,"range":{"start_line":61,"start_character":45,"end_line":61,"end_character":46},"updated":"2017-05-30 08:28:41.000000000","message":"Missing period.","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"23f218f263cfd5b32a17dd586d7132ec89747c02","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        help\u003d_(\u0027Whether to enable or disable the advertisement \u0027"},{"line_number":59,"context_line":"               \u0027of floating-ip host routes by the BGP speaker. \u0027"},{"line_number":60,"context_line":"               \u0027By default floating ip host routes will be \u0027"},{"line_number":61,"context_line":"               \u0027advertised by the BGP speaker\u0027))"},{"line_number":62,"context_line":"    parser.add_argument("},{"line_number":63,"context_line":"        \u0027--advertise-tenant-networks\u0027,"},{"line_number":64,"context_line":"        metavar\u003d\u0027{True,False}\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_4d9fe25e","line":61,"range":{"start_line":61,"start_character":45,"end_line":61,"end_character":46},"in_reply_to":"df140735_8acd335f","updated":"2017-06-01 16:12:20.000000000","message":"Done","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"29d174de294f67635cc49d39708bc0c09389463a","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        help\u003d_(\u0027Whether to enable or disable the advertisement \u0027"},{"line_number":68,"context_line":"               \u0027of tenant network routes by the BGP speaker. \u0027"},{"line_number":69,"context_line":"               \u0027By default tenant network routes will be \u0027"},{"line_number":70,"context_line":"               \u0027advertised by the BGP speaker\u0027))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class ListBgpSpeakers(command.Lister):"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_6adadf17","line":70,"range":{"start_line":70,"start_character":45,"end_line":70,"end_character":46},"updated":"2017-05-30 08:28:41.000000000","message":"Missing period","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"23f218f263cfd5b32a17dd586d7132ec89747c02","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        help\u003d_(\u0027Whether to enable or disable the advertisement \u0027"},{"line_number":68,"context_line":"               \u0027of tenant network routes by the BGP speaker. \u0027"},{"line_number":69,"context_line":"               \u0027By default tenant network routes will be \u0027"},{"line_number":70,"context_line":"               \u0027advertised by the BGP speaker\u0027))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class ListBgpSpeakers(command.Lister):"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_2d9a6e6d","line":70,"range":{"start_line":70,"start_character":45,"end_line":70,"end_character":46},"in_reply_to":"df140735_6adadf17","updated":"2017-06-01 16:12:20.000000000","message":"Done","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"29d174de294f67635cc49d39708bc0c09389463a","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        parser.add_argument("},{"line_number":133,"context_line":"            \u0027name\u0027,"},{"line_number":134,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":135,"context_line":"            help\u003d_(\u0027Name of the BGP Speaker to create.\u0027))"},{"line_number":136,"context_line":"        parser.add_argument("},{"line_number":137,"context_line":"            \u0027--local-as\u0027,"},{"line_number":138,"context_line":"            metavar\u003d\u0027\u003clocal-as\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_cabc4b6b","line":135,"range":{"start_line":135,"start_character":53,"end_line":135,"end_character":54},"updated":"2017-05-30 08:28:41.000000000","message":"delete this period as it is only one line in help message","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"23f218f263cfd5b32a17dd586d7132ec89747c02","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        parser.add_argument("},{"line_number":133,"context_line":"            \u0027name\u0027,"},{"line_number":134,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":135,"context_line":"            help\u003d_(\u0027Name of the BGP Speaker to create.\u0027))"},{"line_number":136,"context_line":"        parser.add_argument("},{"line_number":137,"context_line":"            \u0027--local-as\u0027,"},{"line_number":138,"context_line":"            metavar\u003d\u0027\u003clocal-as\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_cdb2d2e6","line":135,"range":{"start_line":135,"start_character":53,"end_line":135,"end_character":54},"in_reply_to":"df140735_cabc4b6b","updated":"2017-06-01 16:12:20.000000000","message":"Done","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"29d174de294f67635cc49d39708bc0c09389463a","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        parser.add_argument("},{"line_number":202,"context_line":"            \u0027bgp_speaker\u0027,"},{"line_number":203,"context_line":"            metavar\u003d\u0027\u003cbgp-speaker\u003e\u0027,"},{"line_number":204,"context_line":"            help\u003d_(\u0027ID or name of the BGP Speaker.\u0027))"},{"line_number":205,"context_line":"        parser.add_argument("},{"line_number":206,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":207,"context_line":"            metavar\u003d\u0027\u003cbgp-peer\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_8a21b3b7","line":204,"range":{"start_line":204,"start_character":49,"end_line":204,"end_character":50},"updated":"2017-05-30 08:28:41.000000000","message":"ditto","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"23f218f263cfd5b32a17dd586d7132ec89747c02","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        parser.add_argument("},{"line_number":202,"context_line":"            \u0027bgp_speaker\u0027,"},{"line_number":203,"context_line":"            metavar\u003d\u0027\u003cbgp-speaker\u003e\u0027,"},{"line_number":204,"context_line":"            help\u003d_(\u0027ID or name of the BGP Speaker.\u0027))"},{"line_number":205,"context_line":"        parser.add_argument("},{"line_number":206,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":207,"context_line":"            metavar\u003d\u0027\u003cbgp-peer\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_6dc74647","line":204,"range":{"start_line":204,"start_character":49,"end_line":204,"end_character":50},"in_reply_to":"df140735_8a21b3b7","updated":"2017-06-01 16:12:20.000000000","message":"Done","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"29d174de294f67635cc49d39708bc0c09389463a","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        parser.add_argument("},{"line_number":206,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":207,"context_line":"            metavar\u003d\u0027\u003cbgp-peer\u003e\u0027,"},{"line_number":208,"context_line":"            help\u003d_(\u0027ID or name of the BGP Peer to add.\u0027))"},{"line_number":209,"context_line":"        return parser"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_6a2e5fa6","line":208,"range":{"start_line":208,"start_character":53,"end_line":208,"end_character":54},"updated":"2017-05-30 08:28:41.000000000","message":"ditto","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"23f218f263cfd5b32a17dd586d7132ec89747c02","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        parser.add_argument("},{"line_number":206,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":207,"context_line":"            metavar\u003d\u0027\u003cbgp-peer\u003e\u0027,"},{"line_number":208,"context_line":"            help\u003d_(\u0027ID or name of the BGP Peer to add.\u0027))"},{"line_number":209,"context_line":"        return parser"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_0dde8a10","line":208,"range":{"start_line":208,"start_character":53,"end_line":208,"end_character":54},"in_reply_to":"df140735_6a2e5fa6","updated":"2017-06-01 16:12:20.000000000","message":"Done","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"29d174de294f67635cc49d39708bc0c09389463a","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        parser.add_argument("},{"line_number":226,"context_line":"            \u0027bgp_speaker\u0027,"},{"line_number":227,"context_line":"            metavar\u003d\u0027\u003cbgp-speaker\u003e\u0027,"},{"line_number":228,"context_line":"            help\u003d_(\u0027ID or name of the BGP Speaker.\u0027))"},{"line_number":229,"context_line":"        parser.add_argument("},{"line_number":230,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":231,"context_line":"            metavar\u003d\u0027\u003cbgp-peer\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_0a1fe36c","line":228,"range":{"start_line":228,"start_character":49,"end_line":228,"end_character":50},"updated":"2017-05-30 08:28:41.000000000","message":"ditto","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"23f218f263cfd5b32a17dd586d7132ec89747c02","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        parser.add_argument("},{"line_number":226,"context_line":"            \u0027bgp_speaker\u0027,"},{"line_number":227,"context_line":"            metavar\u003d\u0027\u003cbgp-speaker\u003e\u0027,"},{"line_number":228,"context_line":"            help\u003d_(\u0027ID or name of the BGP Speaker.\u0027))"},{"line_number":229,"context_line":"        parser.add_argument("},{"line_number":230,"context_line":"            \u0027bgp_peer\u0027,"},{"line_number":231,"context_line":"            metavar\u003d\u0027\u003cbgp-peer\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_ede0f6ce","line":228,"range":{"start_line":228,"start_character":49,"end_line":228,"end_character":50},"in_reply_to":"df140735_0a1fe36c","updated":"2017-06-01 16:12:20.000000000","message":"Done","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"e950e3ea5b50eeec742dfa4435497fdd158aa45d","unresolved":false,"context_lines":[{"line_number":59,"context_line":"               \u0027By default floating ip host routes will be \u0027"},{"line_number":60,"context_line":"               \u0027advertised by the BGP speaker.\u0027))"},{"line_number":61,"context_line":"    parser.add_argument("},{"line_number":62,"context_line":"        \u0027--advertise-tenant-networks\u0027,"},{"line_number":63,"context_line":"        metavar\u003d\u0027{True,False}\u0027,"},{"line_number":64,"context_line":"        choices\u003d[\u0027True\u0027, \u0027true\u0027, \u0027False\u0027, \u0027false\u0027],"},{"line_number":65,"context_line":"        default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":28,"id":"3f1d235d_b2d022f9","line":62,"range":{"start_line":62,"start_character":21,"end_line":62,"end_character":27},"updated":"2017-07-12 01:36:57.000000000","message":"should this be replaced with project?","commit_id":"fa56f83416b1842e6695d3d029f1301dafaa3f9b"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"48ec493f2de8ec3084f0599846f8c56a1d8e4a5a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"               \u0027By default floating ip host routes will be \u0027"},{"line_number":60,"context_line":"               \u0027advertised by the BGP speaker.\u0027))"},{"line_number":61,"context_line":"    parser.add_argument("},{"line_number":62,"context_line":"        \u0027--advertise-tenant-networks\u0027,"},{"line_number":63,"context_line":"        metavar\u003d\u0027{True,False}\u0027,"},{"line_number":64,"context_line":"        choices\u003d[\u0027True\u0027, \u0027true\u0027, \u0027False\u0027, \u0027false\u0027],"},{"line_number":65,"context_line":"        default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":28,"id":"1f1a1f67_81653948","line":62,"range":{"start_line":62,"start_character":21,"end_line":62,"end_character":27},"in_reply_to":"1f1a1f67_c9017c3a","updated":"2017-07-20 12:51:09.000000000","message":"I reckon this should take place in a different change.\nit\u0027s at least worth mentioning that the actual attribute name is \u0027advertise_tenant_networks\u0027 (http://git.openstack.org/cgit/openstack/neutron-dynamic-routing/tree/neutron_dynamic_routing/extensions/bgp.py#n75)","commit_id":"fa56f83416b1842e6695d3d029f1301dafaa3f9b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"9cd6baea44d0b5fdb23c2036a385f0963c8b9ead","unresolved":false,"context_lines":[{"line_number":59,"context_line":"               \u0027By default floating ip host routes will be \u0027"},{"line_number":60,"context_line":"               \u0027advertised by the BGP speaker.\u0027))"},{"line_number":61,"context_line":"    parser.add_argument("},{"line_number":62,"context_line":"        \u0027--advertise-tenant-networks\u0027,"},{"line_number":63,"context_line":"        metavar\u003d\u0027{True,False}\u0027,"},{"line_number":64,"context_line":"        choices\u003d[\u0027True\u0027, \u0027true\u0027, \u0027False\u0027, \u0027false\u0027],"},{"line_number":65,"context_line":"        default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":28,"id":"1f1a1f67_c9017c3a","line":62,"range":{"start_line":62,"start_character":21,"end_line":62,"end_character":27},"in_reply_to":"3f1d235d_b2d022f9","updated":"2017-07-18 03:18:27.000000000","message":"If we decide to change, then put this in release-notes. This will impact backward compatibility.","commit_id":"fa56f83416b1842e6695d3d029f1301dafaa3f9b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"e950e3ea5b50eeec742dfa4435497fdd158aa45d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        choices\u003d[\u0027True\u0027, \u0027true\u0027, \u0027False\u0027, \u0027false\u0027],"},{"line_number":65,"context_line":"        default\u003dTrue,"},{"line_number":66,"context_line":"        help\u003d_(\u0027Whether to enable or disable the advertisement \u0027"},{"line_number":67,"context_line":"               \u0027of tenant network routes by the BGP speaker. \u0027"},{"line_number":68,"context_line":"               \u0027By default tenant network routes will be \u0027"},{"line_number":69,"context_line":"               \u0027advertised by the BGP speaker.\u0027))"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"3f1d235d_52d54ee4","line":67,"range":{"start_line":67,"start_character":19,"end_line":67,"end_character":25},"updated":"2017-07-12 01:36:57.000000000","message":"project?","commit_id":"fa56f83416b1842e6695d3d029f1301dafaa3f9b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"class AddPeerToSpeaker(command.Command):"},{"line_number":98,"context_line":"    _description \u003d _(\"Add a peer to a BGP Speaker\")"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def get_parser(self, prog_name):"},{"line_number":101,"context_line":"        parser \u003d super(AddPeerToSpeaker, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_9d482f2d","line":98,"range":{"start_line":98,"start_character":42,"end_line":98,"end_character":50},"updated":"2017-07-28 00:49:07.000000000","message":"No need to capitalize it. I see the same case in other places too.","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"class AddPeerToSpeaker(command.Command):"},{"line_number":98,"context_line":"    _description \u003d _(\"Add a peer to a BGP Speaker\")"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def get_parser(self, prog_name):"},{"line_number":101,"context_line":"        parser \u003d super(AddPeerToSpeaker, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_c1a8c578","line":98,"range":{"start_line":98,"start_character":42,"end_line":98,"end_character":50},"in_reply_to":"ff346bd7_9d482f2d","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class ListBgpSpeakers(command.Lister):"},{"line_number":177,"context_line":"    _description \u003d _(\"Retrieve a list of BGP speakers\")"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def take_action(self, parsed_args):"},{"line_number":180,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_speakers()"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_7d6c6b9b","line":177,"range":{"start_line":177,"start_character":22,"end_line":177,"end_character":53},"updated":"2017-07-28 00:49:07.000000000","message":"List BGP speakers","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"class ListBgpSpeakers(command.Lister):"},{"line_number":177,"context_line":"    _description \u003d _(\"Retrieve a list of BGP speakers\")"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def take_action(self, parsed_args):"},{"line_number":180,"context_line":"        data \u003d self.app.client_manager.neutronclient.list_bgp_speakers()"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_e1c4e942","line":177,"range":{"start_line":177,"start_character":22,"end_line":177,"end_character":53},"in_reply_to":"ff346bd7_7d6c6b9b","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"class ListRoutesAdvertisedBySpeaker(command.Lister):"},{"line_number":190,"context_line":"    _description \u003d _(\"Obtain a list of routes advertised by a BGP speaker\")"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def get_parser(self, prog_name):"},{"line_number":193,"context_line":"        parser \u003d super(ListRoutesAdvertisedBySpeaker,"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_bdfbf3be","line":190,"range":{"start_line":190,"start_character":22,"end_line":190,"end_character":56},"updated":"2017-07-28 00:49:07.000000000","message":"List routes advertised ....","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"class ListRoutesAdvertisedBySpeaker(command.Lister):"},{"line_number":190,"context_line":"    _description \u003d _(\"Obtain a list of routes advertised by a BGP speaker\")"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def get_parser(self, prog_name):"},{"line_number":193,"context_line":"        parser \u003d super(ListRoutesAdvertisedBySpeaker,"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_c1c1e530","line":190,"range":{"start_line":190,"start_character":22,"end_line":190,"end_character":56},"in_reply_to":"ff346bd7_bdfbf3be","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"class SetBgpSpeaker(command.Command):"},{"line_number":265,"context_line":"    _description \u003d _(\"Update a BGP speaker\")"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    resource \u003d constants.BGP_SPEAKER"},{"line_number":268,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_5d71a743","line":265,"range":{"start_line":265,"start_character":22,"end_line":265,"end_character":42},"updated":"2017-07-28 00:49:07.000000000","message":"Set BGP speaker properties","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"class SetBgpSpeaker(command.Command):"},{"line_number":265,"context_line":"    _description \u003d _(\"Update a BGP speaker\")"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    resource \u003d constants.BGP_SPEAKER"},{"line_number":268,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_a1dca118","line":265,"range":{"start_line":265,"start_character":22,"end_line":265,"end_character":42},"in_reply_to":"ff346bd7_5d71a743","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"2ac85ece88df179e6c18b205eaa26661e5944975","unresolved":false,"context_lines":[{"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":"from __future__ import print_function"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from osc_lib.command import command"},{"line_number":16,"context_line":"from osc_lib import utils"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_69098c2f","line":13,"updated":"2017-10-23 14:47:34.000000000","message":"Looks like this isn\u0027t needed anymore?","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a883cd36755aa0b4b0fe6f071178d3a45129a4a5","unresolved":false,"context_lines":[{"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":"from __future__ import print_function"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from osc_lib.command import command"},{"line_number":16,"context_line":"from osc_lib import utils"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_ff608aa7","line":13,"in_reply_to":"3f4b6375_69098c2f","updated":"2017-10-23 15:25:16.000000000","message":"There is no print function in this module, so it is unnecessary.","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f7985e5582fcf42b56338bcc9979860c4c925f0a","unresolved":false,"context_lines":[{"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":"from __future__ import print_function"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from osc_lib.command import command"},{"line_number":16,"context_line":"from osc_lib import utils"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_0ec1a5e5","line":13,"in_reply_to":"3f4b6375_ff608aa7","updated":"2017-10-26 05:11:26.000000000","message":"Done","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a883cd36755aa0b4b0fe6f071178d3a45129a4a5","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def add_common_arguments(parser):"},{"line_number":50,"context_line":"    parser.add_argument("},{"line_number":51,"context_line":"        \u0027--advertise-floating-ip-host-routes\u0027,"},{"line_number":52,"context_line":"        metavar\u003d\u0027{True,False}\u0027,"},{"line_number":53,"context_line":"        choices\u003d[\u0027True\u0027, \u0027true\u0027, \u0027False\u0027, \u0027false\u0027],"},{"line_number":54,"context_line":"        default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_7f749a68","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":46},"updated":"2017-10-23 15:25:16.000000000","message":"In OSC convention, we don\u0027t use options which take a boolean argument like this. Instead, we use --xxxx and --no-xxxx style options.","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f7985e5582fcf42b56338bcc9979860c4c925f0a","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def add_common_arguments(parser):"},{"line_number":50,"context_line":"    parser.add_argument("},{"line_number":51,"context_line":"        \u0027--advertise-floating-ip-host-routes\u0027,"},{"line_number":52,"context_line":"        metavar\u003d\u0027{True,False}\u0027,"},{"line_number":53,"context_line":"        choices\u003d[\u0027True\u0027, \u0027true\u0027, \u0027False\u0027, \u0027false\u0027],"},{"line_number":54,"context_line":"        default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_d1f1ec02","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":46},"in_reply_to":"3f4b6375_7f749a68","updated":"2017-10-26 05:11:26.000000000","message":"Done","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a883cd36755aa0b4b0fe6f071178d3a45129a4a5","unresolved":false,"context_lines":[{"line_number":57,"context_line":"               \"By default floating ip host routes will be \""},{"line_number":58,"context_line":"               \"advertised by the BGP speaker.\"))"},{"line_number":59,"context_line":"    parser.add_argument("},{"line_number":60,"context_line":"        \u0027--advertise-tenant-networks\u0027,"},{"line_number":61,"context_line":"        metavar\u003d\u0027{True,False}\u0027,"},{"line_number":62,"context_line":"        choices\u003d[\u0027True\u0027, \u0027true\u0027, \u0027False\u0027, \u0027false\u0027],"},{"line_number":63,"context_line":"        default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_5f6f9e91","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":38},"updated":"2017-10-23 15:25:16.000000000","message":"ditto","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f7985e5582fcf42b56338bcc9979860c4c925f0a","unresolved":false,"context_lines":[{"line_number":57,"context_line":"               \"By default floating ip host routes will be \""},{"line_number":58,"context_line":"               \"advertised by the BGP speaker.\"))"},{"line_number":59,"context_line":"    parser.add_argument("},{"line_number":60,"context_line":"        \u0027--advertise-tenant-networks\u0027,"},{"line_number":61,"context_line":"        metavar\u003d\u0027{True,False}\u0027,"},{"line_number":62,"context_line":"        choices\u003d[\u0027True\u0027, \u0027true\u0027, \u0027False\u0027, \u0027false\u0027],"},{"line_number":63,"context_line":"        default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_b1f430f2","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":38},"in_reply_to":"3f4b6375_5f6f9e91","updated":"2017-10-26 05:11:26.000000000","message":"Done","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"}],"neutronclient/osc/v2/dynamic_routing/dragentscheduler.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"22ba50f7a25ed484e8169785366d68c17d90c788","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from neutronclient._i18n import _"},{"line_number":19,"context_line":"from neutronclient.osc.v2.dynamic_routing import bgp_speaker"},{"line_number":20,"context_line":"from osc_lib.command import command"},{"line_number":21,"context_line":"from osc_lib import utils"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def _format_alive_state(item):"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_74031e43","line":21,"updated":"2016-07-19 03:24:38.000000000","message":"Can you please rearrange the third-part \u0026 sub-project import orders as per the guideline..\nhttp://docs.openstack.org/developer/hacking/#imports","commit_id":"482eff61ed23b16bd54aa284505dea8038e57217"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"c86278de86d9a4bf3b87666fe5f3cba1b3878369","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def _format_alive_state(item):"},{"line_number":25,"context_line":"    return \u0027:-)\u0027 if item else \u0027xxx\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"_formatters \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_ae21b64f","line":25,"range":{"start_line":25,"start_character":12,"end_line":25,"end_character":15},"updated":"2016-07-19 09:12:35.000000000","message":"Are you sure ?  I assume you have not finished it. :)","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def _format_alive_state(item):"},{"line_number":25,"context_line":"    return \u0027:-)\u0027 if item else \u0027xxx\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"_formatters \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_ef3227f1","line":25,"range":{"start_line":25,"start_character":12,"end_line":25,"end_character":15},"in_reply_to":"dada55a8_67641c49","updated":"2016-08-01 09:04:37.000000000","message":"I agree with vikram. @TangChen, what is your concern?","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"ffc6ca0f60d5ebf7051ed2e48d896f361b94a118","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def _format_alive_state(item):"},{"line_number":25,"context_line":"    return \u0027:-)\u0027 if item else \u0027xxx\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"_formatters \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_67641c49","line":25,"range":{"start_line":25,"start_character":12,"end_line":25,"end_character":15},"in_reply_to":"dada55a8_ae21b64f","updated":"2016-07-23 03:53:46.000000000","message":"I think other neutron agents also follows the same..","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"c86278de86d9a4bf3b87666fe5f3cba1b3878369","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                        help\u003d_(\u0027ID of the Dynamic Routing agent.\u0027))"},{"line_number":37,"context_line":"    parser.add_argument(\u0027bgp_speaker\u0027,"},{"line_number":38,"context_line":"                        metavar\u003d\u0027BGP_SPEAKER\u0027,"},{"line_number":39,"context_line":"                        help\u003d_(\u0027ID or name of the BGP speaker.\u0027))"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class AddBGPSpeakerToDRAgent(command.Command):"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_ae4096a6","line":39,"range":{"start_line":39,"start_character":32,"end_line":39,"end_character":42},"updated":"2016-07-19 09:12:35.000000000","message":"Just for the consistency, maybe you can write it like this:\n\n\"BGP speaker (name or ID)\"\n\nI see you wrote it like this in other files.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                        help\u003d_(\u0027ID of the Dynamic Routing agent.\u0027))"},{"line_number":37,"context_line":"    parser.add_argument(\u0027bgp_speaker\u0027,"},{"line_number":38,"context_line":"                        metavar\u003d\u0027BGP_SPEAKER\u0027,"},{"line_number":39,"context_line":"                        help\u003d_(\u0027ID or name of the BGP speaker.\u0027))"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class AddBGPSpeakerToDRAgent(command.Command):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_2f4f1f6c","line":39,"range":{"start_line":39,"start_character":32,"end_line":39,"end_character":42},"in_reply_to":"dada55a8_875f9074","updated":"2016-08-01 09:04:37.000000000","message":"+1","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"ffc6ca0f60d5ebf7051ed2e48d896f361b94a118","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                        help\u003d_(\u0027ID of the Dynamic Routing agent.\u0027))"},{"line_number":37,"context_line":"    parser.add_argument(\u0027bgp_speaker\u0027,"},{"line_number":38,"context_line":"                        metavar\u003d\u0027BGP_SPEAKER\u0027,"},{"line_number":39,"context_line":"                        help\u003d_(\u0027ID or name of the BGP speaker.\u0027))"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class AddBGPSpeakerToDRAgent(command.Command):"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_875f9074","line":39,"range":{"start_line":39,"start_character":32,"end_line":39,"end_character":42},"in_reply_to":"dada55a8_ae4096a6","updated":"2016-07-23 03:53:46.000000000","message":"IMO, let\u0027s stick to \u0027ID or Name\u0027 to have uniformity with other neutron commands.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"c86278de86d9a4bf3b87666fe5f3cba1b3878369","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                                                     parsed_args.bgp_speaker)"},{"line_number":54,"context_line":"        client.add_bgp_speaker_to_dragent("},{"line_number":55,"context_line":"            parsed_args.dragent_id, {\u0027bgp_speaker_id\u0027: _speaker_id})"},{"line_number":56,"context_line":"        print(_(\u0027Associated BGP speaker %s to the Dynamic Routing agent.\u0027)"},{"line_number":57,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_6eacdea0","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":13},"updated":"2016-07-19 09:12:35.000000000","message":"I suggest to use log instead of print. log will record the message in log file, which will be useful to debug.\n\nThe same to the other prints.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                                                     parsed_args.bgp_speaker)"},{"line_number":54,"context_line":"        client.add_bgp_speaker_to_dragent("},{"line_number":55,"context_line":"            parsed_args.dragent_id, {\u0027bgp_speaker_id\u0027: _speaker_id})"},{"line_number":56,"context_line":"        print(_(\u0027Associated BGP speaker %s to the Dynamic Routing agent.\u0027)"},{"line_number":57,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_6f5597f8","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":13},"in_reply_to":"dada55a8_6eacdea0","updated":"2016-08-01 09:04:37.000000000","message":"ok, thanks. Will update in next patch.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"21e885a2b6520c7b82ae10a41c32ec84e2a3884b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"bff0334d_d363c4db","updated":"2017-04-07 06:04:21.000000000","message":"The way to support network agent operation in OSC is completely different from neutron CLI implementation.\n\nCould you refer to DHCP agent patch in OSC [1] and adopt the similar way to support DR-agent operation? I was involved in the review in OSC and if you have questions feel free to ask me or here in this review.\n\n[1] https://review.openstack.org/#/c/387611/","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"29d174de294f67635cc49d39708bc0c09389463a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_6a1bff1a","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":38},"updated":"2017-05-30 08:28:41.000000000","message":"Is this right?","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"23f218f263cfd5b32a17dd586d7132ec89747c02","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_4d81228f","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":38},"in_reply_to":"df140735_6a1bff1a","updated":"2017-06-01 16:12:20.000000000","message":"yup","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"29d174de294f67635cc49d39708bc0c09389463a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                                          parsed_args.bgp_speaker)[\u0027id\u0027]"},{"line_number":55,"context_line":"        client.add_bgp_speaker_to_dragent("},{"line_number":56,"context_line":"            parsed_args.dragent_id, {\u0027bgp_speaker_id\u0027: speaker_id})"},{"line_number":57,"context_line":"        print(_(\u0027Associated BGP speaker %s to the Dynamic Routing agent.\u0027)"},{"line_number":58,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_5e3800d2","line":57,"range":{"start_line":57,"start_character":71,"end_line":57,"end_character":72},"updated":"2017-05-30 08:28:41.000000000","message":"remove this period","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"23f218f263cfd5b32a17dd586d7132ec89747c02","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                                          parsed_args.bgp_speaker)[\u0027id\u0027]"},{"line_number":55,"context_line":"        client.add_bgp_speaker_to_dragent("},{"line_number":56,"context_line":"            parsed_args.dragent_id, {\u0027bgp_speaker_id\u0027: speaker_id})"},{"line_number":57,"context_line":"        print(_(\u0027Associated BGP speaker %s to the Dynamic Routing agent.\u0027)"},{"line_number":58,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_0d4d6a99","line":57,"range":{"start_line":57,"start_character":71,"end_line":57,"end_character":72},"in_reply_to":"df140735_5e3800d2","updated":"2017-06-01 16:12:20.000000000","message":"Done","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":15905,"name":"Cao Xuan Hoang","email":"xuanhoangqb@gmail.com","username":"hoangcx"},"change_message_id":"29d174de294f67635cc49d39708bc0c09389463a","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        client.remove_bgp_speaker_from_dragent(parsed_args.dragent_id,"},{"line_number":75,"context_line":"                                               speaker_id)"},{"line_number":76,"context_line":"        print(_(\u0027Disassociated BGP speaker %s from the \u0027"},{"line_number":77,"context_line":"                \u0027Dynamic Routing agent.\u0027)"},{"line_number":78,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_1e3288f2","line":77,"range":{"start_line":77,"start_character":38,"end_line":77,"end_character":39},"updated":"2017-05-30 08:28:41.000000000","message":"ditto","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"23f218f263cfd5b32a17dd586d7132ec89747c02","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        client.remove_bgp_speaker_from_dragent(parsed_args.dragent_id,"},{"line_number":75,"context_line":"                                               speaker_id)"},{"line_number":76,"context_line":"        print(_(\u0027Disassociated BGP speaker %s from the \u0027"},{"line_number":77,"context_line":"                \u0027Dynamic Routing agent.\u0027)"},{"line_number":78,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"df140735_4d2fe2a0","line":77,"range":{"start_line":77,"start_character":38,"end_line":77,"end_character":39},"in_reply_to":"df140735_1e3288f2","updated":"2017-06-01 16:12:20.000000000","message":"Done","commit_id":"efacca135ec2108bb3beff3c966d86cbbc29f1cc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"ff346bd7_fa9d010a","updated":"2017-07-28 00:49:07.000000000","message":"In OSC convention, a file name should match command names as much as possible. This module implements \"bgp dragent *\" commands, so the suggested file name is \u0027bgp_dragent.py\u0027.","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"bf3e73b7_01cdad5c","in_reply_to":"ff346bd7_fa9d010a","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_9aaf1529","line":1,"range":{"start_line":1,"start_character":17,"end_line":1,"end_character":38},"updated":"2017-07-28 00:49:07.000000000","message":"Avoid using \"OpenStack Foundation\" unless you are employed by OpenStack Foundation. L.1-2 looks unnecessary.","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_6134794b","line":1,"range":{"start_line":1,"start_character":17,"end_line":1,"end_character":38},"in_reply_to":"ff346bd7_9aaf1529","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def add_common_args(parser):"},{"line_number":37,"context_line":"    parser.add_argument(\u0027dragent_id\u0027,"},{"line_number":38,"context_line":"                        metavar\u003d\u0027BGP_DRAGENT_ID\u0027,"},{"line_number":39,"context_line":"                        help\u003d_(\u0027ID of the Dynamic Routing agent\u0027))"},{"line_number":40,"context_line":"    parser.add_argument(\u0027bgp_speaker\u0027,"},{"line_number":41,"context_line":"                        metavar\u003d\u0027BGP_SPEAKER\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_5d8be766","line":38,"range":{"start_line":38,"start_character":33,"end_line":38,"end_character":47},"updated":"2017-07-28 00:49:07.000000000","message":"\u003cagent-id\u003e","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def add_common_args(parser):"},{"line_number":37,"context_line":"    parser.add_argument(\u0027dragent_id\u0027,"},{"line_number":38,"context_line":"                        metavar\u003d\u0027BGP_DRAGENT_ID\u0027,"},{"line_number":39,"context_line":"                        help\u003d_(\u0027ID of the Dynamic Routing agent\u0027))"},{"line_number":40,"context_line":"    parser.add_argument(\u0027bgp_speaker\u0027,"},{"line_number":41,"context_line":"                        metavar\u003d\u0027BGP_SPEAKER\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_213e7129","line":38,"range":{"start_line":38,"start_character":33,"end_line":38,"end_character":47},"in_reply_to":"ff346bd7_5d8be766","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                        metavar\u003d\u0027BGP_DRAGENT_ID\u0027,"},{"line_number":39,"context_line":"                        help\u003d_(\u0027ID of the Dynamic Routing agent\u0027))"},{"line_number":40,"context_line":"    parser.add_argument(\u0027bgp_speaker\u0027,"},{"line_number":41,"context_line":"                        metavar\u003d\u0027BGP_SPEAKER\u0027,"},{"line_number":42,"context_line":"                        help\u003d_(\u0027ID or name of the BGP Speaker\u0027))"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_ddf477f3","line":41,"range":{"start_line":41,"start_character":33,"end_line":41,"end_character":44},"updated":"2017-07-28 00:49:07.000000000","message":"\u003cbgp-speaker\u003e","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                        metavar\u003d\u0027BGP_DRAGENT_ID\u0027,"},{"line_number":39,"context_line":"                        help\u003d_(\u0027ID of the Dynamic Routing agent\u0027))"},{"line_number":40,"context_line":"    parser.add_argument(\u0027bgp_speaker\u0027,"},{"line_number":41,"context_line":"                        metavar\u003d\u0027BGP_SPEAKER\u0027,"},{"line_number":42,"context_line":"                        help\u003d_(\u0027ID or name of the BGP Speaker\u0027))"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_013b6d38","line":41,"range":{"start_line":41,"start_character":33,"end_line":41,"end_character":44},"in_reply_to":"ff346bd7_ddf477f3","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":79,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class ListBgpSpeakersOnDRAgent(command.Lister):"},{"line_number":83,"context_line":"    \"\"\"List BGP Speakers hosted by a Dynamic Routing agent\"\"\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def get_parser(self, prog_name):"},{"line_number":86,"context_line":"        parser \u003d super(ListBgpSpeakersOnDRAgent,"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_ba589987","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":61},"updated":"2017-07-28 00:49:07.000000000","message":"In the OSC command convention, this function would be:\n\n  openstack bgp speaker list --agent \u003cagent-id\u003e\n\nSee https://docs.openstack.org/python-openstackclient/latest/cli/command-objects/router.html#router-list\n\n\u0027openstack router list --agent \u003cagent-id\u003e\u0027 lists routers on a specific L3 agent.","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":79,"context_line":"              % parsed_args.bgp_speaker, file\u003dself.app.stdout)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class ListBgpSpeakersOnDRAgent(command.Lister):"},{"line_number":83,"context_line":"    \"\"\"List BGP Speakers hosted by a Dynamic Routing agent\"\"\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def get_parser(self, prog_name):"},{"line_number":86,"context_line":"        parser \u003d super(ListBgpSpeakersOnDRAgent,"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_a1c6e115","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":61},"in_reply_to":"ff346bd7_ba589987","updated":"2017-08-06 10:15:37.000000000","message":"Done, also moved to bgp_speaker.py","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                       self).get_parser(prog_name)"},{"line_number":88,"context_line":"        parser.add_argument("},{"line_number":89,"context_line":"            \u0027dragent_id\u0027,"},{"line_number":90,"context_line":"            metavar\u003d\u0027BGP_DRAGENT_ID\u0027,"},{"line_number":91,"context_line":"            help\u003d_(\u0027ID of the Dynamic Routing agent\u0027))"},{"line_number":92,"context_line":"        return parser"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_3dd5c344","line":90,"range":{"start_line":90,"start_character":21,"end_line":90,"end_character":35},"updated":"2017-07-28 00:49:07.000000000","message":"\u003cagent-id\u003e","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                       self).get_parser(prog_name)"},{"line_number":88,"context_line":"        parser.add_argument("},{"line_number":89,"context_line":"            \u0027dragent_id\u0027,"},{"line_number":90,"context_line":"            metavar\u003d\u0027BGP_DRAGENT_ID\u0027,"},{"line_number":91,"context_line":"            help\u003d_(\u0027ID of the Dynamic Routing agent\u0027))"},{"line_number":92,"context_line":"        return parser"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_a1bdc169","line":90,"range":{"start_line":90,"start_character":21,"end_line":90,"end_character":35},"in_reply_to":"ff346bd7_3dd5c344","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                ) for s in data[bgp_speaker.BGP_SPEAKERS]))"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"class ListDRAgentsHostingBgpSpeaker(command.Lister):"},{"line_number":107,"context_line":"    \"\"\"List Dynamic Routing agents hosting a BGP Speaker\"\"\""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    resource \u003d \u0027agent\u0027"},{"line_number":110,"context_line":"    _formatters \u003d {}"}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_9dacafed","line":107,"range":{"start_line":106,"start_character":0,"end_line":107,"end_character":59},"updated":"2017-07-28 00:49:07.000000000","message":"According to the OSC network command convention, this would be:\n\n  openstack agent list --bgp-speaker \u003cbgp-speaker\u003e\n\nlike https://docs.openstack.org/python-openstackclient/latest/cli/command-objects/network-agent.html#network-agent-list\n\nHowever, the command name like \u0027openstack bgp dragent list\u0027 would be much better for users. \u0027openstack bgp dragent list --bgp-speaker \u003cbgp-speaker\u003e\u0027 does this functionality. Thought?\n\nYou can check the implementation of \u0027agent list --router \u003crouter\u003e\u0027 in OSC repo. (See http://git.openstack.org/cgit/openstack/python-openstackclient/tree/openstackclient/network/v2/network_agent.py#n232)","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                ) for s in data[bgp_speaker.BGP_SPEAKERS]))"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"class ListDRAgentsHostingBgpSpeaker(command.Lister):"},{"line_number":107,"context_line":"    \"\"\"List Dynamic Routing agents hosting a BGP Speaker\"\"\""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    resource \u003d \u0027agent\u0027"},{"line_number":110,"context_line":"    _formatters \u003d {}"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_e1e3c9a3","line":107,"range":{"start_line":106,"start_character":0,"end_line":107,"end_character":59},"in_reply_to":"ff346bd7_9dacafed","updated":"2017-08-06 10:15:37.000000000","message":"I fine with either, just note we also have add and remove actions for the agent - openstack agent add speaker \u003cspeaker-id\u003e","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        parser \u003d super(ListDRAgentsHostingBgpSpeaker,"},{"line_number":116,"context_line":"                       self).get_parser(prog_name)"},{"line_number":117,"context_line":"        parser.add_argument(\u0027bgp_speaker\u0027,"},{"line_number":118,"context_line":"                            metavar\u003d\u0027BGP_SPEAKER\u0027,"},{"line_number":119,"context_line":"                            help\u003d_(\u0027ID or name of the BGP Speaker\u0027))"},{"line_number":120,"context_line":"        return parser"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_7dbeabff","line":118,"range":{"start_line":118,"start_character":37,"end_line":118,"end_character":48},"updated":"2017-07-28 00:49:07.000000000","message":"\u003cbgp-speaker\u003e","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        parser \u003d super(ListDRAgentsHostingBgpSpeaker,"},{"line_number":116,"context_line":"                       self).get_parser(prog_name)"},{"line_number":117,"context_line":"        parser.add_argument(\u0027bgp_speaker\u0027,"},{"line_number":118,"context_line":"                            metavar\u003d\u0027BGP_SPEAKER\u0027,"},{"line_number":119,"context_line":"                            help\u003d_(\u0027ID or name of the BGP Speaker\u0027))"},{"line_number":120,"context_line":"        return parser"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_61b7d988","line":118,"range":{"start_line":118,"start_character":37,"end_line":118,"end_character":48},"in_reply_to":"ff346bd7_7dbeabff","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6c58ff99510ee266d9a9d7436141df4597f0d424","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                                          parsed_args.bgp_speaker)[\u0027id\u0027]"},{"line_number":127,"context_line":"        search_opts[\u0027bgp_speaker\u0027] \u003d speaker_id"},{"line_number":128,"context_line":"        data \u003d client.list_dragents_hosting_bgp_speaker(**search_opts)"},{"line_number":129,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Host\u0027, \u0027Admin_State_UP\u0027, \u0027Alive\u0027)"},{"line_number":130,"context_line":"        columns \u003d (\u0027id\u0027, \u0027host\u0027, \u0027admin_state_up\u0027, \u0027alive\u0027)"},{"line_number":131,"context_line":"        return (headers,"},{"line_number":132,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":32,"id":"ff346bd7_dd7fd763","line":129,"range":{"start_line":129,"start_character":34,"end_line":129,"end_character":48},"updated":"2017-07-28 00:49:07.000000000","message":"Consider using \u0027State\u0027 following the OSC command convention.","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b728fb39e309fd8d12fbc31493bb1ecce81081b8","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                                          parsed_args.bgp_speaker)[\u0027id\u0027]"},{"line_number":127,"context_line":"        search_opts[\u0027bgp_speaker\u0027] \u003d speaker_id"},{"line_number":128,"context_line":"        data \u003d client.list_dragents_hosting_bgp_speaker(**search_opts)"},{"line_number":129,"context_line":"        headers \u003d (\u0027ID\u0027, \u0027Host\u0027, \u0027Admin_State_UP\u0027, \u0027Alive\u0027)"},{"line_number":130,"context_line":"        columns \u003d (\u0027id\u0027, \u0027host\u0027, \u0027admin_state_up\u0027, \u0027alive\u0027)"},{"line_number":131,"context_line":"        return (headers,"},{"line_number":132,"context_line":"                (utils.get_dict_properties("}],"source_content_type":"text/x-python","patch_set":32,"id":"bf3e73b7_41bcd568","line":129,"range":{"start_line":129,"start_character":34,"end_line":129,"end_character":48},"in_reply_to":"ff346bd7_dd7fd763","updated":"2017-08-06 10:15:37.000000000","message":"Done","commit_id":"27f2576f229e7b5cd347140e3187e2cfa5b0a42e"}],"neutronclient/osc/v2/utils.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"22ba50f7a25ed484e8169785366d68c17d90c788","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"from neutronclient.common import exceptions"},{"line_number":17,"context_line":"import uuid"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"def find_resourceid_by_name_or_id(resource_client, name_or_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_b4fd963c","line":17,"updated":"2016-07-19 03:24:38.000000000","message":"Can you please rearrange the third-part \u0026 sub-project import orders as per the guideline..\nhttp://docs.openstack.org/developer/hacking/#imports","commit_id":"482eff61ed23b16bd54aa284505dea8038e57217"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"884c48f7471a12f54775d705b6fb334170153385","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 Huawei Technologies Pvt. Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":6,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_7d8c867f","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":1},"updated":"2016-07-28 23:50:42.000000000","message":"is this file needed?\nsee https://review.openstack.org/#/c/348096/1","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 Huawei Technologies Pvt. Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":6,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_8fae0be4","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":1},"in_reply_to":"bacf61ea_7d8c867f","updated":"2016-08-01 09:04:37.000000000","message":"No need anymore, thanks.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"c86278de86d9a4bf3b87666fe5f3cba1b3878369","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import uuid"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"def find_resourceid_by_name_or_id(resource_client, name_or_id):"},{"line_number":21,"context_line":"    \"\"\"Find resource id from its id or name.\"\"\""},{"line_number":22,"context_line":"    try:"},{"line_number":23,"context_line":"        # Try to return an uuid"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_4eec7a8f","line":20,"range":{"start_line":20,"start_character":4,"end_line":20,"end_character":33},"updated":"2016-07-19 09:12:35.000000000","message":"Basically, I suggest to reuse find_resource() in osc-lib.\nhttps://github.com/openstack/osc-lib/blob/master/osc_lib/utils.py#L72\n\nBut if you cannot handle the difference between parameters, that is OK. :)","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"c86278de86d9a4bf3b87666fe5f3cba1b3878369","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    resources \u003d resource_client.list()"},{"line_number":30,"context_line":"    candidate_ids \u003d [r[\u0027id\u0027] for r in resources if r.get(\u0027name\u0027) \u003d\u003d name_or_id]"},{"line_number":31,"context_line":"    if not candidate_ids:"},{"line_number":32,"context_line":"        message \u003d (\u0027Could not find resource with name \"%s\"\u0027 % name_or_id)"},{"line_number":33,"context_line":"        raise exceptions.NotFound(message\u003dmessage)"},{"line_number":34,"context_line":"    elif len(candidate_ids) \u003e 1:"},{"line_number":35,"context_line":"        str_ids \u003d \u0027,\u0027.join(candidate_ids)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_c9c4e460","line":32,"range":{"start_line":32,"start_character":18,"end_line":32,"end_character":19},"updated":"2016-07-19 09:12:35.000000000","message":"Use _()","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    resources \u003d resource_client.list()"},{"line_number":30,"context_line":"    candidate_ids \u003d [r[\u0027id\u0027] for r in resources if r.get(\u0027name\u0027) \u003d\u003d name_or_id]"},{"line_number":31,"context_line":"    if not candidate_ids:"},{"line_number":32,"context_line":"        message \u003d (\u0027Could not find resource with name \"%s\"\u0027 % name_or_id)"},{"line_number":33,"context_line":"        raise exceptions.NotFound(message\u003dmessage)"},{"line_number":34,"context_line":"    elif len(candidate_ids) \u003e 1:"},{"line_number":35,"context_line":"        str_ids \u003d \u0027,\u0027.join(candidate_ids)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_cf46434e","line":32,"range":{"start_line":32,"start_character":18,"end_line":32,"end_character":19},"in_reply_to":"dada55a8_474e38c2","updated":"2016-08-01 09:04:37.000000000","message":"ok, thanks. Will update in next patch.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"ffc6ca0f60d5ebf7051ed2e48d896f361b94a118","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    resources \u003d resource_client.list()"},{"line_number":30,"context_line":"    candidate_ids \u003d [r[\u0027id\u0027] for r in resources if r.get(\u0027name\u0027) \u003d\u003d name_or_id]"},{"line_number":31,"context_line":"    if not candidate_ids:"},{"line_number":32,"context_line":"        message \u003d (\u0027Could not find resource with name \"%s\"\u0027 % name_or_id)"},{"line_number":33,"context_line":"        raise exceptions.NotFound(message\u003dmessage)"},{"line_number":34,"context_line":"    elif len(candidate_ids) \u003e 1:"},{"line_number":35,"context_line":"        str_ids \u003d \u0027,\u0027.join(candidate_ids)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_474e38c2","line":32,"range":{"start_line":32,"start_character":18,"end_line":32,"end_character":19},"in_reply_to":"dada55a8_c9c4e460","updated":"2016-07-23 03:53:46.000000000","message":"+1","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"c86278de86d9a4bf3b87666fe5f3cba1b3878369","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        raise exceptions.NotFound(message\u003dmessage)"},{"line_number":34,"context_line":"    elif len(candidate_ids) \u003e 1:"},{"line_number":35,"context_line":"        str_ids \u003d \u0027,\u0027.join(candidate_ids)"},{"line_number":36,"context_line":"        message \u003d (\u0027Multiple resources with name \"%s\": %s\u0027 %"},{"line_number":37,"context_line":"                   (name_or_id, str_ids))"},{"line_number":38,"context_line":"        raise exceptions.InternalServerError(message\u003dmessage)"},{"line_number":39,"context_line":"    return candidate_ids[0]"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_c99b4471","line":36,"range":{"start_line":36,"start_character":18,"end_line":36,"end_character":19},"updated":"2016-07-19 09:12:35.000000000","message":"Use _()","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        raise exceptions.NotFound(message\u003dmessage)"},{"line_number":34,"context_line":"    elif len(candidate_ids) \u003e 1:"},{"line_number":35,"context_line":"        str_ids \u003d \u0027,\u0027.join(candidate_ids)"},{"line_number":36,"context_line":"        message \u003d (\u0027Multiple resources with name \"%s\": %s\u0027 %"},{"line_number":37,"context_line":"                   (name_or_id, str_ids))"},{"line_number":38,"context_line":"        raise exceptions.InternalServerError(message\u003dmessage)"},{"line_number":39,"context_line":"    return candidate_ids[0]"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_2f76ffa3","line":36,"range":{"start_line":36,"start_character":18,"end_line":36,"end_character":19},"in_reply_to":"dada55a8_c99b4471","updated":"2016-08-01 09:04:37.000000000","message":"ok, thanks. Will update in next patch.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"21e885a2b6520c7b82ae10a41c32ec84e2a3884b","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutronclient._i18n import _"},{"line_number":16,"context_line":"from neutronclient.common import exceptions"},{"line_number":17,"context_line":"import uuid"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"\"\"This module is intended to contain methods specific"}],"source_content_type":"text/x-python","patch_set":17,"id":"bff0334d_50ea0a75","line":17,"updated":"2017-04-07 06:04:21.000000000","message":"uuid is a standard module. Move this to the top and add a blank line after \u0027import uuid\u0027.","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutronclient._i18n import _"},{"line_number":16,"context_line":"from neutronclient.common import exceptions"},{"line_number":17,"context_line":"import uuid"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"\"\"This module is intended to contain methods specific"}],"source_content_type":"text/x-python","patch_set":17,"id":"df140735_e262b7d8","line":17,"in_reply_to":"bff0334d_50ea0a75","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"21e885a2b6520c7b82ae10a41c32ec84e2a3884b","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"\"\"This module is intended to contain methods specific"},{"line_number":21,"context_line":"to Networking v2 API and its extensions."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def format_admin_state(state):"}],"source_content_type":"text/x-python","patch_set":17,"id":"bff0334d_30a2e64c","line":22,"updated":"2017-04-07 06:04:21.000000000","message":"We usually place the module docstring before import section. It is not well documented in the OpenStack hacking guideline, but it is a typical python convention.","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"b05f81fb7b1bf0d570f82198efe16ec7c29fa719","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"\"\"This module is intended to contain methods specific"},{"line_number":21,"context_line":"to Networking v2 API and its extensions."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def format_admin_state(state):"}],"source_content_type":"text/x-python","patch_set":17,"id":"df140735_829f7bb3","line":22,"in_reply_to":"bff0334d_30a2e64c","updated":"2017-05-28 11:33:38.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"21e885a2b6520c7b82ae10a41c32ec84e2a3884b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    return \u0027UP\u0027 if state else \u0027DOWN\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def find_resourceid_by_name_or_id(resource_client, name_or_id):"},{"line_number":30,"context_line":"    \"\"\"Find resource id from its id or name.\"\"\""},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        # Try to return an uuid"}],"source_content_type":"text/x-python","patch_set":17,"id":"bff0334d_10600201","line":29,"updated":"2017-04-07 06:04:21.000000000","message":"Could you avoid reimplementing a similar function? We already have find_resource() method in neutronclient.v2_0.client.Client class, and you can access the method by resource_client.find_resource(name_or_id).","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"aad486585560e98e8db909e08bbcbacc6d8b22dd","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    return \u0027UP\u0027 if state else \u0027DOWN\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def find_resourceid_by_name_or_id(resource_client, name_or_id):"},{"line_number":30,"context_line":"    \"\"\"Find resource id from its id or name.\"\"\""},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        # Try to return an uuid"}],"source_content_type":"text/x-python","patch_set":17,"id":"df140735_6298e769","line":29,"in_reply_to":"bff0334d_10600201","updated":"2017-05-28 13:38:08.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"21e885a2b6520c7b82ae10a41c32ec84e2a3884b","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def find_resourceid_by_name_or_id(resource_client, name_or_id):"},{"line_number":30,"context_line":"    \"\"\"Find resource id from its id or name.\"\"\""},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        # Try to return an uuid"},{"line_number":33,"context_line":"        return str(uuid.UUID(name_or_id))"},{"line_number":34,"context_line":"    except ValueError:"},{"line_number":35,"context_line":"        # Not an uuid \u003d\u003e assume it is resource name"},{"line_number":36,"context_line":"        pass"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    resources \u003d resource_client.list()"},{"line_number":39,"context_line":"    candidate_ids \u003d [r[\u0027id\u0027] for r in resources if r.get(\u0027name\u0027) \u003d\u003d name_or_id]"}],"source_content_type":"text/x-python","patch_set":17,"id":"bff0334d_1025a2c2","line":36,"range":{"start_line":31,"start_character":4,"end_line":36,"end_character":12},"updated":"2017-04-07 06:04:21.000000000","message":"This might be an improvement to neutronclient.v2_0.client.Client.find_resource (if you really need this).","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"aad486585560e98e8db909e08bbcbacc6d8b22dd","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def find_resourceid_by_name_or_id(resource_client, name_or_id):"},{"line_number":30,"context_line":"    \"\"\"Find resource id from its id or name.\"\"\""},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        # Try to return an uuid"},{"line_number":33,"context_line":"        return str(uuid.UUID(name_or_id))"},{"line_number":34,"context_line":"    except ValueError:"},{"line_number":35,"context_line":"        # Not an uuid \u003d\u003e assume it is resource name"},{"line_number":36,"context_line":"        pass"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    resources \u003d resource_client.list()"},{"line_number":39,"context_line":"    candidate_ids \u003d [r[\u0027id\u0027] for r in resources if r.get(\u0027name\u0027) \u003d\u003d name_or_id]"}],"source_content_type":"text/x-python","patch_set":17,"id":"df140735_429de357","line":36,"range":{"start_line":31,"start_character":4,"end_line":36,"end_character":12},"in_reply_to":"bff0334d_1025a2c2","updated":"2017-05-28 13:38:08.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"21e885a2b6520c7b82ae10a41c32ec84e2a3884b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    return id"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class NetworkCommand(object):"},{"line_number":58,"context_line":"    def __init__(self, client):"},{"line_number":59,"context_line":"        self.client \u003d client"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"bff0334d_100ec23a","line":57,"updated":"2017-04-07 06:04:21.000000000","message":"Could you avoid defining this kind of stub class?","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"aad486585560e98e8db909e08bbcbacc6d8b22dd","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    return id"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class NetworkCommand(object):"},{"line_number":58,"context_line":"    def __init__(self, client):"},{"line_number":59,"context_line":"        self.client \u003d client"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"df140735_22a2ef9b","line":57,"in_reply_to":"bff0334d_100ec23a","updated":"2017-05-28 13:38:08.000000000","message":"Done","commit_id":"c4b53168d8e46ded11e95c2ffbe81da25cd38de4"}],"neutronclient/tests/unit/osc/v2/dynamic_routing/fakes.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a883cd36755aa0b4b0fe6f071178d3a45129a4a5","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        bgp_speakers \u003d []"},{"line_number":60,"context_line":"        for i in range(0, count):"},{"line_number":61,"context_line":"            bgp_speaker \u003d \\"},{"line_number":62,"context_line":"                FakeBgpSpeaker.create_one_bgp_speaker(attrs)"},{"line_number":63,"context_line":"            bgp_speakers.append(bgp_speaker)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        return {\u0027bgp_speakers\u0027: bgp_speakers}"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_3f03c2ba","line":62,"range":{"start_line":61,"start_character":12,"end_line":62,"end_character":60},"updated":"2017-10-23 15:25:16.000000000","message":"I think this fits into a single line","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f7985e5582fcf42b56338bcc9979860c4c925f0a","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        bgp_speakers \u003d []"},{"line_number":60,"context_line":"        for i in range(0, count):"},{"line_number":61,"context_line":"            bgp_speaker \u003d \\"},{"line_number":62,"context_line":"                FakeBgpSpeaker.create_one_bgp_speaker(attrs)"},{"line_number":63,"context_line":"            bgp_speakers.append(bgp_speaker)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        return {\u0027bgp_speakers\u0027: bgp_speakers}"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_919a54b6","line":62,"range":{"start_line":61,"start_character":12,"end_line":62,"end_character":60},"in_reply_to":"3f4b6375_3f03c2ba","updated":"2017-10-26 05:11:26.000000000","message":"Done","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a883cd36755aa0b4b0fe6f071178d3a45129a4a5","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @staticmethod"},{"line_number":90,"context_line":"    def create_bgp_peers(attrs\u003dNone, count\u003d1):"},{"line_number":91,"context_line":"        \"\"\"Create one or multiple fake bgp peers."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        \"\"\""},{"line_number":94,"context_line":"        bgp_peers \u003d []"},{"line_number":95,"context_line":"        for i in range(0, count):"},{"line_number":96,"context_line":"            bgp_peer \u003d \\"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_5f1d5e0d","line":93,"range":{"start_line":91,"start_character":8,"end_line":93,"end_character":11},"updated":"2017-10-23 15:25:16.000000000","message":"A single-line docstring is better.","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f7985e5582fcf42b56338bcc9979860c4c925f0a","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @staticmethod"},{"line_number":90,"context_line":"    def create_bgp_peers(attrs\u003dNone, count\u003d1):"},{"line_number":91,"context_line":"        \"\"\"Create one or multiple fake bgp peers."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        \"\"\""},{"line_number":94,"context_line":"        bgp_peers \u003d []"},{"line_number":95,"context_line":"        for i in range(0, count):"},{"line_number":96,"context_line":"            bgp_peer \u003d \\"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_51905c95","line":93,"range":{"start_line":91,"start_character":8,"end_line":93,"end_character":11},"in_reply_to":"3f4b6375_5f1d5e0d","updated":"2017-10-26 05:11:26.000000000","message":"Done","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a883cd36755aa0b4b0fe6f071178d3a45129a4a5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        \"\"\""},{"line_number":94,"context_line":"        bgp_peers \u003d []"},{"line_number":95,"context_line":"        for i in range(0, count):"},{"line_number":96,"context_line":"            bgp_peer \u003d \\"},{"line_number":97,"context_line":"                FakeBgpPeer.create_one_bgp_peer(attrs)"},{"line_number":98,"context_line":"            bgp_peers.append(bgp_peer)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        return {\u0027bgp_peers\u0027: bgp_peers}"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_7f225a54","line":97,"range":{"start_line":96,"start_character":12,"end_line":97,"end_character":54},"updated":"2017-10-23 15:25:16.000000000","message":"ditto","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f7985e5582fcf42b56338bcc9979860c4c925f0a","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        \"\"\""},{"line_number":94,"context_line":"        bgp_peers \u003d []"},{"line_number":95,"context_line":"        for i in range(0, count):"},{"line_number":96,"context_line":"            bgp_peer \u003d \\"},{"line_number":97,"context_line":"                FakeBgpPeer.create_one_bgp_peer(attrs)"},{"line_number":98,"context_line":"            bgp_peers.append(bgp_peer)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        return {\u0027bgp_peers\u0027: bgp_peers}"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_11ec2428","line":97,"range":{"start_line":96,"start_character":12,"end_line":97,"end_character":54},"in_reply_to":"3f4b6375_7f225a54","updated":"2017-10-26 05:11:26.000000000","message":"Done","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"}],"neutronclient/tests/unit/osc/v2/dynamic_routing/test_bgp_peer.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f4d836062a054c30d3b23584ba4caa2a6084c240","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self._bgp_peer \u003d _bgp_peers[\u0027bgp_peers\u0027][0]"},{"line_number":59,"context_line":"        _bgp_peer_name \u003d self._bgp_peer[\u0027name\u0027]"},{"line_number":60,"context_line":"        self.neutronclient.delete_bgp_peer \u003d mock.Mock(return_value\u003dNone)"},{"line_number":61,"context_line":"        bgp_peer.get_bgp_peer_id \u003d mock.Mock(return_value\u003d_bgp_peer_name)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        self.cmd \u003d bgp_peer.DeletePeer(self.app, self.namespace)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_9ba2124a","line":61,"updated":"2016-07-25 18:42:26.000000000","message":"if you mock the module function like this, the mock is not cleaned up across tests.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self._bgp_peer \u003d _bgp_peers[\u0027bgp_peers\u0027][0]"},{"line_number":59,"context_line":"        _bgp_peer_name \u003d self._bgp_peer[\u0027name\u0027]"},{"line_number":60,"context_line":"        self.neutronclient.delete_bgp_peer \u003d mock.Mock(return_value\u003dNone)"},{"line_number":61,"context_line":"        bgp_peer.get_bgp_peer_id \u003d mock.Mock(return_value\u003d_bgp_peer_name)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        self.cmd \u003d bgp_peer.DeletePeer(self.app, self.namespace)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_43f18700","line":61,"in_reply_to":"dada55a8_9ba2124a","updated":"2016-08-01 09:04:37.000000000","message":"will update in next patch, thanks.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"9e2312a803e1fe2622a5ad358a61c241e7e3007e","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            (\u0027bgp_peer\u0027, self._bgp_peer_name),"},{"line_number":146,"context_line":"            (\u0027name\u0027, \u0027noob\u0027),"},{"line_number":147,"context_line":"        ]"},{"line_number":148,"context_line":"        print self.cmd"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"},{"line_number":151,"context_line":"        result \u003d self.cmd.take_action(parsed_args)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a461143_3ca3a801","line":148,"updated":"2017-01-30 20:45:56.000000000","message":"vestigial?","commit_id":"75dd70999d5ced15ee8dbd31558076fc3888d041"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"6a0c74ed6ed4eb6f51a388307bfd6956e1ac217d","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            (\u0027bgp_peer\u0027, self._bgp_peer_name),"},{"line_number":146,"context_line":"            (\u0027name\u0027, \u0027noob\u0027),"},{"line_number":147,"context_line":"        ]"},{"line_number":148,"context_line":"        print self.cmd"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"},{"line_number":151,"context_line":"        result \u003d self.cmd.take_action(parsed_args)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a461143_2c318f5a","line":148,"in_reply_to":"3a461143_3ca3a801","updated":"2017-01-31 19:33:44.000000000","message":"Yep","commit_id":"75dd70999d5ced15ee8dbd31558076fc3888d041"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a883cd36755aa0b4b0fe6f071178d3a45129a4a5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def setUp(self):"},{"line_number":52,"context_line":"        super(TestDeleteBgpPeer, self).setUp()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        _bgp_peers \u003d fakes.FakeBgpPeer.create_bgp_peers()"},{"line_number":55,"context_line":"        self._bgp_peer \u003d _bgp_peers[\u0027bgp_peers\u0027][0]"},{"line_number":56,"context_line":"        self.neutronclient.delete_bgp_peer \u003d mock.Mock(return_value\u003dNone)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.cmd \u003d bgp_peer.DeleteBgpPeer(self.app, self.namespace)"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_9fe076fc","line":55,"range":{"start_line":54,"start_character":8,"end_line":55,"end_character":51},"updated":"2017-10-23 15:25:16.000000000","message":"If you use [0], how about using fakes.FakeBgpPeer.create_one_bgp_peer() directly?","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f7985e5582fcf42b56338bcc9979860c4c925f0a","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def setUp(self):"},{"line_number":52,"context_line":"        super(TestDeleteBgpPeer, self).setUp()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        _bgp_peers \u003d fakes.FakeBgpPeer.create_bgp_peers()"},{"line_number":55,"context_line":"        self._bgp_peer \u003d _bgp_peers[\u0027bgp_peers\u0027][0]"},{"line_number":56,"context_line":"        self.neutronclient.delete_bgp_peer \u003d mock.Mock(return_value\u003dNone)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.cmd \u003d bgp_peer.DeleteBgpPeer(self.app, self.namespace)"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_6e2259bb","line":55,"range":{"start_line":54,"start_character":8,"end_line":55,"end_character":51},"in_reply_to":"3f4b6375_9fe076fc","updated":"2017-10-26 05:11:26.000000000","message":"Done","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"}],"neutronclient/tests/unit/osc/v2/dynamic_routing/test_bgp_speaker.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a883cd36755aa0b4b0fe6f071178d3a45129a4a5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def setUp(self):"},{"line_number":52,"context_line":"        super(TestDeleteBgpSpeaker, self).setUp()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        _bgp_speakers \u003d fakes.FakeBgpSpeaker.create_bgp_speakers()"},{"line_number":55,"context_line":"        self._bgp_speaker \u003d _bgp_speakers[\u0027bgp_speakers\u0027][0]"},{"line_number":56,"context_line":"        self.neutronclient.delete_bgp_speaker \u003d mock.Mock(return_value\u003dNone)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.cmd \u003d bgp_speaker.DeleteBgpSpeaker(self.app, self.namespace)"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_5fcb1e71","line":55,"range":{"start_line":54,"start_character":8,"end_line":55,"end_character":60},"updated":"2017-10-23 15:25:16.000000000","message":"create_one_bgp_speaker instead?","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f7985e5582fcf42b56338bcc9979860c4c925f0a","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def setUp(self):"},{"line_number":52,"context_line":"        super(TestDeleteBgpSpeaker, self).setUp()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        _bgp_speakers \u003d fakes.FakeBgpSpeaker.create_bgp_speakers()"},{"line_number":55,"context_line":"        self._bgp_speaker \u003d _bgp_speakers[\u0027bgp_speakers\u0027][0]"},{"line_number":56,"context_line":"        self.neutronclient.delete_bgp_speaker \u003d mock.Mock(return_value\u003dNone)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.cmd \u003d bgp_speaker.DeleteBgpSpeaker(self.app, self.namespace)"}],"source_content_type":"text/x-python","patch_set":38,"id":"3f4b6375_8e623509","line":55,"range":{"start_line":54,"start_character":8,"end_line":55,"end_character":60},"in_reply_to":"3f4b6375_5fcb1e71","updated":"2017-10-26 05:11:26.000000000","message":"Done","commit_id":"9d7f643e87ab3e3a969c536587ab29036fb97d52"}],"setup.cfg":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"c86278de86d9a4bf3b87666fe5f3cba1b3878369","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    bgp_peer_create \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:CreatePeer"},{"line_number":47,"context_line":"    bgp_peer_update \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:UpdatePeer"},{"line_number":48,"context_line":"    bgp_dragent_hosting_speaker_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListDRAgentsHostingBGPSpeaker            "},{"line_number":49,"context_line":"    bgp_dragent_speaker_add \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:AddBGPSpeakerToDRAgent            "},{"line_number":50,"context_line":"    bgp_dragent_speaker_remove \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:RemoveBGPSpeakerFromDRAgent           "},{"line_number":51,"context_line":"    bgp_speaker_advertiseroute_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:ListRoutesAdvertisedBySpeaker                                        "},{"line_number":52,"context_line":"    bgp_speaker_on_dragent_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListBGPSpeakersOnDRAgent "}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"dada55a8_4e0d9a36","line":49,"range":{"start_line":49,"start_character":106,"end_line":49,"end_character":118},"updated":"2016-07-19 09:12:35.000000000","message":"In OSC, we sort commands in alphabeta order by name. So I would suggest neutronclient to do so too. :)\n\nAnd also, some redundant white spaces need to cleanup.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"884c48f7471a12f54775d705b6fb334170153385","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    bgp_peer_create \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:CreatePeer"},{"line_number":47,"context_line":"    bgp_peer_update \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:UpdatePeer"},{"line_number":48,"context_line":"    bgp_dragent_hosting_speaker_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListDRAgentsHostingBGPSpeaker            "},{"line_number":49,"context_line":"    bgp_dragent_speaker_add \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:AddBGPSpeakerToDRAgent            "},{"line_number":50,"context_line":"    bgp_dragent_speaker_remove \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:RemoveBGPSpeakerFromDRAgent           "},{"line_number":51,"context_line":"    bgp_speaker_advertiseroute_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:ListRoutesAdvertisedBySpeaker                                        "},{"line_number":52,"context_line":"    bgp_speaker_on_dragent_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListBGPSpeakersOnDRAgent "}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"bacf61ea_9d04dac0","line":49,"range":{"start_line":49,"start_character":4,"end_line":49,"end_character":27},"updated":"2016-07-28 23:50:42.000000000","message":"bgp_dragent_add_speaker .. similarly below:\n\nsee -\u003e http://docs.openstack.org/developer/python-openstackclient/humaninterfaceguide.html#command-object-s-and-action","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    bgp_peer_create \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:CreatePeer"},{"line_number":47,"context_line":"    bgp_peer_update \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:UpdatePeer"},{"line_number":48,"context_line":"    bgp_dragent_hosting_speaker_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListDRAgentsHostingBGPSpeaker            "},{"line_number":49,"context_line":"    bgp_dragent_speaker_add \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:AddBGPSpeakerToDRAgent            "},{"line_number":50,"context_line":"    bgp_dragent_speaker_remove \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:RemoveBGPSpeakerFromDRAgent           "},{"line_number":51,"context_line":"    bgp_speaker_advertiseroute_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:ListRoutesAdvertisedBySpeaker                                        "},{"line_number":52,"context_line":"    bgp_speaker_on_dragent_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListBGPSpeakersOnDRAgent "}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"bacf61ea_0f3e9b8b","line":49,"range":{"start_line":49,"start_character":4,"end_line":49,"end_character":27},"in_reply_to":"bacf61ea_9d04dac0","updated":"2016-08-01 09:04:37.000000000","message":"ok, will update it in next patch, thanks.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"ffc6ca0f60d5ebf7051ed2e48d896f361b94a118","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    bgp_peer_create \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:CreatePeer"},{"line_number":47,"context_line":"    bgp_peer_update \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:UpdatePeer"},{"line_number":48,"context_line":"    bgp_dragent_hosting_speaker_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListDRAgentsHostingBGPSpeaker            "},{"line_number":49,"context_line":"    bgp_dragent_speaker_add \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:AddBGPSpeakerToDRAgent            "},{"line_number":50,"context_line":"    bgp_dragent_speaker_remove \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:RemoveBGPSpeakerFromDRAgent           "},{"line_number":51,"context_line":"    bgp_speaker_advertiseroute_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:ListRoutesAdvertisedBySpeaker                                        "},{"line_number":52,"context_line":"    bgp_speaker_on_dragent_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListBGPSpeakersOnDRAgent "}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"dada55a8_67cb7c1f","line":49,"range":{"start_line":49,"start_character":106,"end_line":49,"end_character":118},"in_reply_to":"dada55a8_4e0d9a36","updated":"2016-07-23 03:53:46.000000000","message":"+1","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    bgp_peer_create \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:CreatePeer"},{"line_number":47,"context_line":"    bgp_peer_update \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:UpdatePeer"},{"line_number":48,"context_line":"    bgp_dragent_hosting_speaker_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListDRAgentsHostingBGPSpeaker            "},{"line_number":49,"context_line":"    bgp_dragent_speaker_add \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:AddBGPSpeakerToDRAgent            "},{"line_number":50,"context_line":"    bgp_dragent_speaker_remove \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:RemoveBGPSpeakerFromDRAgent           "},{"line_number":51,"context_line":"    bgp_speaker_advertiseroute_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:ListRoutesAdvertisedBySpeaker                                        "},{"line_number":52,"context_line":"    bgp_speaker_on_dragent_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListBGPSpeakersOnDRAgent "}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"bacf61ea_2fd27f5c","line":49,"range":{"start_line":49,"start_character":106,"end_line":49,"end_character":118},"in_reply_to":"dada55a8_4e0d9a36","updated":"2016-08-01 09:04:37.000000000","message":"ok,thanks. Will update in next patch.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"ffc6ca0f60d5ebf7051ed2e48d896f361b94a118","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    bgp_dragent_speaker_remove \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:RemoveBGPSpeakerFromDRAgent           "},{"line_number":51,"context_line":"    bgp_speaker_advertiseroute_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:ListRoutesAdvertisedBySpeaker                                        "},{"line_number":52,"context_line":"    bgp_speaker_on_dragent_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListBGPSpeakersOnDRAgent "},{"line_number":53,"context_line":"    bgp_speaker_network_add \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:AddNetworkToSpeaker                 "},{"line_number":54,"context_line":"    bgp_speaker_network_remove \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:RemoveNetworkFromSpeaker                       "},{"line_number":55,"context_line":"    bgp_speaker_peer_add \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:AddPeerToSpeaker                    "},{"line_number":56,"context_line":"    bgp_speaker_peer_remove \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:RemovePeerFromSpeaker"}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"dada55a8_c7d068cc","line":53,"updated":"2016-07-23 03:53:46.000000000","message":"nit: remove spaces..","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":17455,"name":"Na Zhu","email":"juno.zhu@huawei.com","username":"Na"},"change_message_id":"cb546fe49f763e7c9b915699cf7b7df1ebc61546","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    bgp_dragent_speaker_remove \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:RemoveBGPSpeakerFromDRAgent           "},{"line_number":51,"context_line":"    bgp_speaker_advertiseroute_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:ListRoutesAdvertisedBySpeaker                                        "},{"line_number":52,"context_line":"    bgp_speaker_on_dragent_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListBGPSpeakersOnDRAgent "},{"line_number":53,"context_line":"    bgp_speaker_network_add \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:AddNetworkToSpeaker                 "},{"line_number":54,"context_line":"    bgp_speaker_network_remove \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:RemoveNetworkFromSpeaker                       "},{"line_number":55,"context_line":"    bgp_speaker_peer_add \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:AddPeerToSpeaker                    "},{"line_number":56,"context_line":"    bgp_speaker_peer_remove \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:RemovePeerFromSpeaker"}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"bacf61ea_ef8ea777","line":53,"in_reply_to":"dada55a8_c7d068cc","updated":"2016-08-01 09:04:37.000000000","message":"ok, thanks. Will update in next patch.","commit_id":"f908f78ec5d39d0e88ea58b080e86ced36669d26"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"c0cc528e464fd7760488925f3731430ca8ec4f32","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    bgp_peer_delete \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:DeletePeer"},{"line_number":51,"context_line":"    bgp_peer_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:ListPeers"},{"line_number":52,"context_line":"    bgp_peer_show \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:ShowPeer"},{"line_number":53,"context_line":"    bgp_peer_update \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:UpdatePeer"},{"line_number":54,"context_line":"    bgp_speaker_advertiseroute_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:ListRoutesAdvertisedBySpeaker"},{"line_number":55,"context_line":"    bgp_speaker_create \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:CreateSpeaker"},{"line_number":56,"context_line":"    bgp_speaker_delete \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:DeleteSpeaker"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"1a6eadb0_fe15159b","line":53,"range":{"start_line":53,"start_character":4,"end_line":53,"end_character":19},"updated":"2016-12-13 17:46:57.000000000","message":"Can you please change it to bgp_peer_set as in [1]:\n\nhttps://github.com/openstack/python-openstackclient/blob/master/setup.cfg#L338","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"422da8f5fcbc46f05bd0f542ac01f9f0a7dd591d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    bgp_peer_delete \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:DeletePeer"},{"line_number":51,"context_line":"    bgp_peer_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:ListPeers"},{"line_number":52,"context_line":"    bgp_peer_show \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:ShowPeer"},{"line_number":53,"context_line":"    bgp_peer_update \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:UpdatePeer"},{"line_number":54,"context_line":"    bgp_speaker_advertiseroute_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:ListRoutesAdvertisedBySpeaker"},{"line_number":55,"context_line":"    bgp_speaker_create \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:CreateSpeaker"},{"line_number":56,"context_line":"    bgp_speaker_delete \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:DeleteSpeaker"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"1a6eadb0_19e814b4","line":53,"range":{"start_line":53,"start_character":4,"end_line":53,"end_character":19},"in_reply_to":"1a6eadb0_fe15159b","updated":"2016-12-14 06:22:38.000000000","message":"Are we going to use \u0027set\u0027 instead of \u0027update\u0027 now? Is there is any guideline about it?","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0063866ebceba543873ec76ed56d7ebb17c0230b","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    bgp_peer_delete \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:DeletePeer"},{"line_number":51,"context_line":"    bgp_peer_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:ListPeers"},{"line_number":52,"context_line":"    bgp_peer_show \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:ShowPeer"},{"line_number":53,"context_line":"    bgp_peer_update \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:UpdatePeer"},{"line_number":54,"context_line":"    bgp_speaker_advertiseroute_list \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:ListRoutesAdvertisedBySpeaker"},{"line_number":55,"context_line":"    bgp_speaker_create \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:CreateSpeaker"},{"line_number":56,"context_line":"    bgp_speaker_delete \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:DeleteSpeaker"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"1a6eadb0_5f292389","line":53,"range":{"start_line":53,"start_character":4,"end_line":53,"end_character":19},"in_reply_to":"1a6eadb0_fe15159b","updated":"2016-12-16 00:18:18.000000000","message":"Done","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"c0cc528e464fd7760488925f3731430ca8ec4f32","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    bgp_speaker_peer_add \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:AddPeerToSpeaker"},{"line_number":62,"context_line":"    bgp_speaker_peer_remove \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:RemovePeerFromSpeaker"},{"line_number":63,"context_line":"    bgp_speaker_show \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:ShowSpeaker"},{"line_number":64,"context_line":"    bgp_speaker_update \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:UpdateSpeaker"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"[build_sphinx]"},{"line_number":67,"context_line":"all_files \u003d 1"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"1a6eadb0_be1c7dc2","line":64,"updated":"2016-12-13 17:46:57.000000000","message":"same as above change update to set","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0063866ebceba543873ec76ed56d7ebb17c0230b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    bgp_speaker_peer_add \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:AddPeerToSpeaker"},{"line_number":62,"context_line":"    bgp_speaker_peer_remove \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:RemovePeerFromSpeaker"},{"line_number":63,"context_line":"    bgp_speaker_show \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:ShowSpeaker"},{"line_number":64,"context_line":"    bgp_speaker_update \u003d neutronclient.osc.v2.dynamic_routing.bgp_speaker:UpdateSpeaker"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"[build_sphinx]"},{"line_number":67,"context_line":"all_files \u003d 1"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"1a6eadb0_1f1deb65","line":64,"in_reply_to":"1a6eadb0_be1c7dc2","updated":"2016-12-16 00:18:18.000000000","message":"Done","commit_id":"9c2d44a4a9fc0a017b84f6bf029939ffde4a168b"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"9e2312a803e1fe2622a5ad358a61c241e7e3007e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.network_trunk:SetNetworkTrunk"},{"line_number":44,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.network_trunk:ShowNetworkTrunk"},{"line_number":45,"context_line":"    network_trunk_unset \u003d neutronclient.osc.v2.trunk.network_trunk:UnsetNetworkTrunk"},{"line_number":46,"context_line":"    bgp_dragent_hosting_speaker_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListDRAgentsHostingBGPSpeaker"},{"line_number":47,"context_line":"    bgp_dragent_speaker_add \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:AddBGPSpeakerToDRAgent"},{"line_number":48,"context_line":"    bgp_dragent_speaker_remove \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:RemoveBGPSpeakerFromDRAgent"},{"line_number":49,"context_line":"    bgp_peer_create \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:CreatePeer"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"3a461143_1ca8ac8c","line":46,"range":{"start_line":46,"start_character":4,"end_line":46,"end_character":36},"updated":"2017-01-30 20:45:56.000000000","message":"this command rendering is probably too verbose, as it would become:\n\n \u003e openstack bgp dragent hosting speaker list  # OMG!\n\nMy suggestion is to look at the doc and see e.g. guidelines [2,3] for ways to make these commands inline with OSC practices. I also wonder if \u0027bgp\u0027 prefix is appropriate. Perhaps here we need an advice from someone in the OSC team.\n\nbgp_dragent_list\n\n\n[1] http://docs.openstack.org/developer/python-openstackclient/\n[2] http://docs.openstack.org/developer/python-openstackclient/commands.html\n[3] http://docs.openstack.org/developer/python-openstackclient/humaninterfaceguide.html","commit_id":"75dd70999d5ced15ee8dbd31558076fc3888d041"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"fa9edad2127e5c05a019c5f4a504216da15b1ad2","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.network_trunk:SetNetworkTrunk"},{"line_number":44,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.network_trunk:ShowNetworkTrunk"},{"line_number":45,"context_line":"    network_trunk_unset \u003d neutronclient.osc.v2.trunk.network_trunk:UnsetNetworkTrunk"},{"line_number":46,"context_line":"    bgp_dragent_hosting_speaker_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListDRAgentsHostingBGPSpeaker"},{"line_number":47,"context_line":"    bgp_dragent_speaker_add \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:AddBGPSpeakerToDRAgent"},{"line_number":48,"context_line":"    bgp_dragent_speaker_remove \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:RemoveBGPSpeakerFromDRAgent"},{"line_number":49,"context_line":"    bgp_peer_create \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:CreatePeer"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"3a461143_c7bd4403","line":46,"range":{"start_line":46,"start_character":4,"end_line":46,"end_character":36},"in_reply_to":"3a461143_1ca8ac8c","updated":"2017-01-31 19:52:41.000000000","message":"After looking this over, I think the \u0027bgp\u0027 prefix is OK. I\u0027ve gone through and cleaned up some of these commands. I agree some feedback from the OSC team would be useful to keep my opinions in check :)","commit_id":"75dd70999d5ced15ee8dbd31558076fc3888d041"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"6a0c74ed6ed4eb6f51a388307bfd6956e1ac217d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.network_trunk:SetNetworkTrunk"},{"line_number":44,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.network_trunk:ShowNetworkTrunk"},{"line_number":45,"context_line":"    network_trunk_unset \u003d neutronclient.osc.v2.trunk.network_trunk:UnsetNetworkTrunk"},{"line_number":46,"context_line":"    bgp_dragent_hosting_speaker_list \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListDRAgentsHostingBGPSpeaker"},{"line_number":47,"context_line":"    bgp_dragent_speaker_add \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:AddBGPSpeakerToDRAgent"},{"line_number":48,"context_line":"    bgp_dragent_speaker_remove \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:RemoveBGPSpeakerFromDRAgent"},{"line_number":49,"context_line":"    bgp_peer_create \u003d neutronclient.osc.v2.dynamic_routing.bgp_peer:CreatePeer"}],"source_content_type":"text/x-ttcn-cfg","patch_set":14,"id":"3a461143_4c0b3b7d","line":46,"range":{"start_line":46,"start_character":4,"end_line":46,"end_character":36},"in_reply_to":"3a461143_1ca8ac8c","updated":"2017-01-31 19:33:44.000000000","message":"Will take a look, thanks for the pointers. Done","commit_id":"75dd70999d5ced15ee8dbd31558076fc3888d041"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"eb3e1d0130972ce5c866b8cde5515c368c4c4815","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.network_trunk:ListNetworkTrunk"},{"line_number":42,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.network_trunk:SetNetworkTrunk"},{"line_number":43,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.network_trunk:ShowNetworkTrunk"},{"line_number":44,"context_line":"    network_trunk_unset \u003d neutronclient.osc.v2.trunk.network_trunk:UnsetNetworkTrunk"},{"line_number":45,"context_line":"    bgp_dragent_show_speakers \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListBGPSpeakersOnDRAgent"},{"line_number":46,"context_line":"    bgp_dragent_speaker_add \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:AddBGPSpeakerToDRAgent"},{"line_number":47,"context_line":"    bgp_dragent_speaker_remove \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:RemoveBGPSpeakerFromDRAgent"}],"source_content_type":"text/x-ttcn-cfg","patch_set":25,"id":"7f231b9d_08d9c57d","line":44,"updated":"2017-06-18 13:18:29.000000000","message":"blank line here is nice.","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"22f366a131922b91432589fd1068f9c296c0cf31","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    network_trunk_list \u003d neutronclient.osc.v2.trunk.network_trunk:ListNetworkTrunk"},{"line_number":42,"context_line":"    network_trunk_set \u003d neutronclient.osc.v2.trunk.network_trunk:SetNetworkTrunk"},{"line_number":43,"context_line":"    network_trunk_show \u003d neutronclient.osc.v2.trunk.network_trunk:ShowNetworkTrunk"},{"line_number":44,"context_line":"    network_trunk_unset \u003d neutronclient.osc.v2.trunk.network_trunk:UnsetNetworkTrunk"},{"line_number":45,"context_line":"    bgp_dragent_show_speakers \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:ListBGPSpeakersOnDRAgent"},{"line_number":46,"context_line":"    bgp_dragent_speaker_add \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:AddBGPSpeakerToDRAgent"},{"line_number":47,"context_line":"    bgp_dragent_speaker_remove \u003d neutronclient.osc.v2.dynamic_routing.dragentscheduler:RemoveBGPSpeakerFromDRAgent"}],"source_content_type":"text/x-ttcn-cfg","patch_set":25,"id":"7f231b9d_39269518","line":44,"in_reply_to":"7f231b9d_08d9c57d","updated":"2017-06-20 11:28:11.000000000","message":"Done","commit_id":"e3c8bc5d007d32880f5b8d72801660fd6e3f7298"}]}
